• Static关键字


    一.Static关键字:代表静态的,可用于修饰 属性,方法,代码块,内部类
    1.static修饰的属性(静态变量或类变量)
    ①随着类的加载而加载,随着类的消失而消失。(生命周期最长)
    ②static 修饰的属性被该类所有的对象所共享
    ③一旦某一个对象修改了该属性值,其他对象的该属性值也会随之改变

    ④静态变量的存在是优先于对象的
    ⑤可以通过"类名.类变量"的方式使用

      2.static修饰的方法(静态方法或类方法)
    ①随着类的加载而加载
    ②静态方法的存在优先于对象
    ③可用通过"类名.类方法"的方式调用
    ④静态方法中不能使用非静态成员,非静态方法中可以使用静态成员
    (静态方法中能使用静态成员)
    ⑤静态方法中不能使用this和super

    1. public class StaticTest {
    2. public static void main(String[] args) {
    3. /* Chinese p1=new Chinese("张三",15,"中国");
    4. Chinese p2=new Chinese("李四",20,"中国");
    5. p1.setNation("唐朝");//一旦某一个对象修改了该属性值,其他对象的该属性值也会随之改变
    6. System.out.println(p1);
    7. System.out.println(p2);*/
    8. }
    9. }
    10. class Chinese{
    11. private String name;
    12. private int age;
    13. private static String nation;//描述国籍
    14. public Chinese() {
    15. }
    16. public Chinese(String name, int age, String nation) {
    17. this.name = name;
    18. this.age = age;
    19. this.nation = nation;
    20. }
    21. public void setName(String name) {
    22. this.name = name;
    23. }
    24. public void setAge(int age) {
    25. this.age = age;
    26. }
    27. public String getName() {
    28. return name;
    29. }
    30. public int getAge() {
    31. return age;
    32. }
    33. public void setNation(String nation) {
    34. this.nation = nation;
    35. }
    36. public String getNation() {
    37. return nation;
    38. }
    39. @Override
    40. public String toString() {
    41. return "Chinese{" +
    42. "name='" + name + '\'' +
    43. ", age=" + age +
    44. ", nation='" + nation + '\'' +
    45. '}';
    46. }
    47. }

     

     static 修饰的属性被该类所有的对象所共享

     一旦某一个对象修改了该属性值,其他对象的该属性值也会随之改变

     2.static修饰的方法(静态方法或类方法)
    ①随着类的加载而加载
    ②静态方法的存在优先于对象
    ③可用通过"类名.类方法"的方式调用
    ④静态方法中不能使用非静态成员,非静态方法中可以使用静态成员
    (静态方法中能使用静态成员)
    ⑤静态方法中不能使用this和super

    1. public class StaticTest {
    2. public static void main(String[] args) {
    3. /* Chinese p1=new Chinese("张三",15,"中国");
    4. Chinese p2=new Chinese("李四",20,"中国");
    5. p1.setNation("唐朝");//一旦某一个对象修改了该属性值,其他对象的该属性值也会随之改变
    6. System.out.println(p1);
    7. System.out.println(p2);*/
    8. Chinese.nation="中国";
    9. System.out.println(Chinese.nation);
    10. Chinese.show();
    11. }
    12. }
    13. class Chinese{
    14. private String name;
    15. private int age;
    16. /*private*/ static String nation;//描述国籍
    17. public Chinese() {
    18. }
    19. public Chinese(String name, int age, String nation) {
    20. this.name = name;
    21. this.age = age;
    22. this.nation = nation;
    23. }
    24. public void setName(String name) {
    25. this.name = name;
    26. }
    27. public void setAge(int age) {
    28. this.age = age;
    29. }
    30. public String getName() {
    31. return name;
    32. }
    33. public int getAge() {
    34. return age;
    35. }
    36. public void setNation(String nation) {
    37. this.nation = nation;
    38. }
    39. public String getNation() {
    40. return nation;
    41. }
    42. public static void show(){
    43. System.out.println("这是一个静态方法"+nation);
    44. }
    45. @Override
    46. public String toString() {
    47. return "Chinese{" +
    48. "name='" + name + '\'' +
    49. ", age=" + age +
    50. ", nation='" + nation + '\'' +
    51. '}';
    52. }
    53. }

     

     

    Exer:

    1. package Static;
    2. public class TestFrock {
    3. public static void main(String[] args) {
    4. /*System.out.println(Frock.getNextNum());
    5. System.out.println(Frock.getNextNum());*/
    6. Frock f1=new Frock();
    7. Frock f2=new Frock();
    8. Frock f3 =new Frock();
    9. System.out.println(f1.getSerialNumber());
    10. System.out.println(f2.getSerialNumber());
    11. System.out.println(f3.getSerialNumber());
    12. }
    13. }
    14. class Frock{
    15. private static int currentNum=100000;
    16. private int serialNumber;//序列号
    17. public Frock(){//构造器
    18. this.serialNumber=getNextNum();//自动生成衣服的唯一序列号
    19. }
    20. public static int getNextNum(){
    21. return currentNum+=100;
    22. }
    23. public void setSerialNumber(int serialNumber) {
    24. this.serialNumber = serialNumber;
    25. }
    26. public int getSerialNumber() {
    27. return serialNumber;
    28. }
    29. }

     

      

  • 相关阅读:
    Web自动化处理“滑动验证码”
    猿创征文|为了练习自己的Python基础语法,我用pygame写了一个打砖块闯关的游戏
    C#使用DirectX SDK 加载.x三维模型
    什么是DeFi流动性资金池
    JDBC详解
    【深度优先搜索遍历算法的实现,广度优先遍历(BFS-Breadth_First Search),构造最小生成树】
    基于scrapy+flask的疫情数据可视化
    2022秋招最全Java八股文中高级面试题,肝了
    计算机毕业设计ssm宠物寄养管理系统41n70系统+程序+源码+lw+远程部署
    Cadence OrCAD Capture 如何在原理图中设置网络的飞线拓扑结构
  • 原文地址:https://blog.csdn.net/m0_54397364/article/details/126286652