Java中static的用法解析
知识点
1.static关键字
a.可以修饰变量,方法,代码块
b.修饰的变量和方法可以使用类名.变量名/类名.方法名调用
c.static修饰的资源为静态资源,在类加载的时候执行
d.在静态方法中只能调用静态资源
e.静态代码块的作用就是加载一些静态资源(IP,图片)
在这里就用几个有代表性的代码实例进行简单说明吧,这样或许能够更好地理解;
案例一:
1 //用于修饰工具方法 2 public class StaticDemo { 3 //在创建对象时赋值属性时才会被创建 4 private static String info="今天天气真好"; 5 //static修饰的静态变量在类加载时就会存在(.java文件->.class文件) 6 public static void function(){ 7 int num=10; 8 System.out.println("静态方法被调用!"+info+num); 9 } 10 public static void main(String[]args){ 11 StaticDemo.function(); 12 } 13 }
♦在案例一中,我们发现当原本是StaticDemo中私人属性的info只有在加上static修饰符之后才能被之后function构造方法调用;
♦而function()中创建的num因为属于局部变量,是在所属构造方法在被创建时一同创建的而不用再次强调使用static修饰。
案例二:
1 public class StaticDemo02 { 2 int i=0; 3 static int j=0; 4 public StaticDemo02(){ 5 i++; 6 j++; 7 } 8 public static void main(String[]args){ 9 StaticDemo02 s1=new StaticDemo02(); 10 System.out.println(s1.i); 11 StaticDemo02 s2=new StaticDemo02(); 12 System.out.println(s2.i); 13 StaticDemo02 s3=new StaticDemo02(); 14 System.out.println(s3.i); 15 System.out.println(StaticDemo02.j); 16 } 17 }
♦在案例二中我们可以更加清楚地认识到只有在用static修饰变为静态资源后才能不被new关键字干扰;
♦其实在这里为了方便理解,我们可以把用static修饰过后的一般变量看作一种特殊的常量,就像1、2一样,但又不同于一般普通常量,
我们把这种常量称之为静态变量;
另外关于构造方法、代码块和静态代码块在类中谁先执行的问题,我们也同样可以用这样一个较简单的办法测试出来;
1 public class StaticDemo03 { 2 public StaticDemo03(){ 3 System.out.println("构造方法被执行"); 4 } 5 { 6 System.out.println("代码块被执行"); 7 } 8 static{ 9 System.out.println("静态代码块被执行"); 10 } 11 public static void main(String[]args){ 12 StaticDemo03 sd=new StaticDemo03(); 13 } 14 }
当然结果可想而知,静态代码块是最先被创建的,而构造方法和一般代码块的执行顺序相差无几。
——————————————————小 结——————————————————————
还是把最主要的static说明用一张表做出来最好了^.^
明天继续更新!
原创文章版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。转载文章详情请查看转载链接