静态关键字static和静态代码块、局部代码快、构造代码块

来源:互联网 发布:宁波电话会议软件 编辑:程序博客网 时间:2024/06/11 08:43
 

静态关键字static和静态代码块、局部代码快、构造代码块


一、静态什么时候使用?
1、静态变量
分析对象中所具备的成员变量的值都相同时,而且这个成员不需要修饰,这时成员变量就可以被静态修饰
2、静态函数

该函数是否需要访问对象中的特有数据

二、static关键字的特点:用于修饰成员(属性和方法)

1、可以用类名直接调用,可以不用创建对象时就可以使用

2、可以使用对象的引用调用

3、被static修饰的成员可以被所有的该类的对象共享

三、static关键注意事项:

1、静态方法只能访问静态成员(非静态可以自由访问静态或非静态成员)

2、静态方法中不可以使用this和super关键字

3、主函数是静态的


四、成员变量和类变量(静态变量)的区别?

1、声明周期不同

成员变量随着对象的创建而创建,随着对象被回收而释放

静态变量随着类的加载而创建,随着类的消失而消失。

2、调用方式不同

成员变量只能被对象调用

静态变量可以被对象调用,也可以使用类调用(建议使用类调用)

3、别名不同

成员变量又叫实例变量

静态变量又叫类变量

4、数据存储位置不同

成员变量位于堆内存中

静态变量存储在方法区(数据区或者共享区)的静态区

注意:方法也放在方法区

静态方法:静态方法可以使用类来调用


五、三种代码块以及实例

静态代码块:

特点:1、随着类的加载而执行

 2、只执行一次

作用:用于给类初始化(有的类不用构造函数,而需要初始化)

构造代码块:  在类中的代码块

特点:1、在创建对象时执行,每创建一个对象,就执行一次

 2、在创建对象时执行,在静态代码块后执行,且在构造函数前执行

作用:可以给所有的对象进行初始化

局部代码块: 在函数中的代码块

作用:限定函数中的局部变量的生命周期

[java] view plain copy
  1. class StructureCode  
  2. {  
  3.     private String name;  
  4.     static int num;  
  5.     <span style="color:#ff0000;">//构造代码块</span>  
  6.     {  
  7.         System.out.println("我是构造代码块");  
  8.         cry();   //没创建一个对象就执行一次cry(),代替下边两个构造函数中的cry()  
  9.     }  
  10.     <span style="color:#ff0000;">//静态代码块</span>  
  11.     static  
  12.     {  
  13.         num=10;  
  14.         num*=num;  
  15.         System.out.println("我是静态代码块");  
  16.     }  
  17.     StructureCode()  
  18.     {  
  19.         name="baby";  
  20.         System.out.println("我是构造函数");  
  21.         // cry();  
  22.     }  
  23.     StructureCode(String name) //构造函数是给对应的对象初始化  
  24.     {  
  25.         this.name=name;  
  26.         System.out.println("我是构造函数");  
  27.         // cry();  
  28.     }  
  29.     private void cry()  
  30.     {  
  31.         System.out.println("哇哇");  
  32.     }  
  33.     public void show()  
  34.     {         
  35.         <span style="color:#ff0000;">//局部代码块</span>    
  36.         {  
  37.             int i=55;  
  38.         }  
  39.         System.out.println("上边是局部代码块");  
  40.     }  
  41. }  
  42.   
  43. class StaticDemo1  
  44. {  
  45.     public static void main(String args [])  
  46.     {  
  47.         StructureCode structureCode = new StructureCode("小强");  
  48.     }  
  49. }  

六、主函数

public static void main(String args [])

主函数的特殊之处:

1、格式是固定的

2、被JVM所识别

public:因为权限必须是最大的
static:不需要对象的 直接用主函数所属的类名调用即可
void:没有返回值
main:默认的方法名
String args [] 主函数的参数列表,是一个数组类型的参数,而且元素都是字符串类型的 
args:arguments的缩写,可变

0 0