Java static关键字的使用

  1 package com.bytezreo.statictest;
  2 
  3 /**
  4  * 
  5  * @Description  static 关键字的使用
  6  * @author Bytezero·zhenglei!        Email:420498246@qq.com
  7  * @version
  8  * @date 上午8:43:02
  9  * @  1.static :静态的
 10  *    2.static:可以用来修饰:属性,方法,代码块,内部类
 11  *              不能修饰构造器
 12  *    3.使用static修饰属性:静态变量(或类变量)
 13  *       3.1   属性,按是否使用static修饰,又分为:静态属性 vs 非静态属性(实例变量)
 14  *          实例变量:我们创建了类的多个对象,每个对象都独立的拥有了一套类中的非静态属性.当
 15  *      修改其中一个对象的非静态属性时,不会导致其他对象中同样的属性值修改
 16  *      
 17  *           静态变量:我们创建了多个对象,多个对象共享同一个静态变量,当通过某一个对象修改静态
 18  *       变量时,时修改过了的。    
 19  *       3.2   static 修饰属性的其他说明:
 20  *          ① 静态变量随着类的加载而加载。可以通过“类.静态变量”的方式进行调用
 21  *          ② 静态变量加载早于对象的创建。
 22  *          ③ 由于类只会加载一次,则静态变量在内存中也只会存在一份,存在方法区的静态域中
 23  *             方法区--->缓存
 24  *          ④        静态变量(类变量)             实例变量
 25  *          类        yes                            no
 26  *          对象      yes                            yes
 27  *          
 28  *        3.3 静态属性举例:System.out;    Math.PI;     
 29  *             
 30  *          
 31  *          
 32  *          
 33  *    4.使用static修饰方法:静态方法
 34  *         ① 随着类的加载而加载,可以通过“类.静态方法”的方式调用
 35  *         ②            静态方法              非静态方法
 36  *              类         yes                  no
 37  *              对象       yes                 yes
 38  *         ③ 静态方法中,只能调用静态的方式或属性
 39  *           非静态方法中,即可以调用非静态的方法或属性,也可以调用静态的方法或属性
 40  *           
 41  *    5.static注意点:
 42  *      5.1  在静态的方法内,不能使用this关键字,super关键字
 43  *      5.2  关于静态属性和静态方法的使用,从生命周期角度去理解
 44  *    
 45  *    
 46  *    6.开发中如何确定一个属性是否要声明为static的?
 47  *          > 属性是可以被多个对象所共享的,不会随着对象的不同而不同的
 48  *        
 49  *     开发中如何确定一个方法是否要声明为static的?
 50  *        > 操作静态属性的方法,通常设置为 static的
 51  *       > 工具类的方法,习惯上声明为 static 的,比如:Math,Arrays,Collections
 52  *
 53  *
 54  */
 55 public class StaticTest
 56 {
 57     public static void main(String[] args) {
 58         
 59         Chinese.nation = "中国";
 60         
 61         Chinese c1 = new Chinese();
 62         c1.name = "姚明";
 63         c1.age = 21;
 64         c1.nation = "CHN";
 65         
 66         
 67         
 68         Chinese c2 = new Chinese();
 69         c2.name = "马龙";
 70         c2.age = 30;
 71         c2.nation = "China";
 72     
 73         System.out.println(c2.nation);
 74         System.out.println(c1.nation);
 75         
 76         c1.eat();
 77         Chinese.show();
 78                 
 79         
 80         
 81     }
 82 }
 83 
 84 
 85 //中国人
 86  class Chinese
 87 {
 88     String name;
 89     int age;
 90     static String nation;
 91     
 92     
 93     public void eat()
 94     {
 95         System.out.println("中国人吃中餐");
 96         //非静态结构
 97         this.info();
 98         
 99         //静态结构
100         Chinese.show();
101         show();
102         walk();
103         System.out.println(Chinese.nation);
104         
105     }
106     
107     public static void show()
108     {
109         System.out.println("我是一个中国人");
110         //不能调用非静态结构
111         //eat();
112         //name = "Tom";
113         
114         //可以调用静态结构
115         System.out.println(Chinese.nation);
116         walk();
117     }
118     
119     public static void walk()
120     {
121         System.out.println("溜达");
122     }
123     
124     public void info()
125     {
126         System.out.println("介绍");
127     }
128 }

Java    static关键字的使用

 

上一篇:Python为什么要使用描述符?


下一篇:算法刷题的基础(一)——必会的算法基础知识