JAVA笔记

 public class Test{
     static int cnt = 6;
     static{
         cnt += 9;
     }
 public static void main(String[] args){
     System.out.println(“cnt =” + cnt);
 }
 static{
     cnt /=3;
     };
 } 

静态初始化代码块,静态变量,先执行静态变量在执行静态代码块

Java的向前引用,加载的机制应该是先声明所有的变量,但是现在只是声明而已所以是cnt是int的默认值0,然后按照声明语句和静态块的先后顺序依次对cnt进行操作。

最终的顺序:父类的成员变量声明->按书写顺序执行父类静态成员变量和静态块->子类的成员变量声明->按书写顺序执行子类静态成员变量和静态块。

public class Test
{
private float f = 1.0f;
int m = 12;
static int n = 1;
public static void main (String args[])
{
Test t = new Test();
}
}
f虽然是Test类的私有成员属性,但因为main方法就在Test类内,可以通过“对象名、属性名”的方式调用,static 静态成员属性不能使用 this 关键字调用,m和f都是普通成员属性,而“类名、方式”只能调用静态成员属性。

public class Test { 
    public int aMethod(){
        static int i = 0;
        i++; 
        return i;
    } 
public static void main(String args[]){
    Test test = new Test(); 
    test.aMethod(); 
    int j = test.aMethod();
    System.out.println(j);
    } 
}

在方法当中定义的变量是局部变量,而静态的变量属于类变量。随着类的加载而被创建,而局部变量是调用该方法的时候,才创建的。

所以,此时两种变量的性质是冲突的。Java当中不允许定义局部的静态变量。

public class Pvf{
    static boolean Paddy;
    public static void main(String args[]){
        System.out.println(Paddy);
    }
}

在Java当中,成员变量没有赋初值的时候,会有默认的初始值。基本类型是对应的0值。如:int是0,boolean是false,char类型是'\u0000',引用类型是null,如String。

带代码中存在代码块和构造方法的时候。执行顺序为:

1.静态代码块

2.实例代码块

3.调用的对应的构造方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值