`

笔记整合1

 
阅读更多

1 类变量的初始化

package com.mingrsoft;

publicclass StaticInitTest {

staticintcount = 2;

static

{

System.out.println("StaticInitTest静态初始化块");

name = "java编程";

}

static String name="世界您好";

publicstaticvoid main(String[] args)

{

System.out.println("name="+name);

}

}

运行结果

代码分析

name是静态变量,也叫做类变量,类变量属于这个类的,特点如下:

1 所有对象共享这个变量,某个对象修改以后,其他对象会得到修改后的值

2 类加载就同时为这个变量分配了内存空间,不是要生成对象才可以

3 因为static代码块也是类加载时候同时执行的,所以name可以放在定义之前赋值

剖析程序的运行点滴过程和内存分配

2.1.3 程序运行内存分配和对象的内存控制

package com.zou;

class Price

{

finalstatic Price INSTANCE = new Price(2.8);

staticdoubleinitPrice = 20; //先分配变量内存,后来才一步一步赋值!切记一步一步 背下来

doublecurrentPrice; //数形结合分析程序运行方式和每一步运行结果

public Price(double discount)

{

currentPrice = initPrice - discount;

}

}

publicclass PriceTets {

publicstaticvoid main(String[] args)

{

System.out.println(Price.INSTANCE.currentPrice); //结果是-2.8 = 0.0-2.8

Price p= new Price(2.8);

System.out.println(p.currentPrice);

}

}

运行结果:

-2.8

17.2

2.1 实例变量和类变量

1 局部变量:

1) 形参 :随着方法的结束而结束,调用者为其赋值!

2)方法内局部变量,必须要显示初始化赋值

3)代码块中局部变量,必须显示初始化

以上变量全部存在方法栈内存中,这些变量都和方法或者代码块有关系!

static 关键字

类变量的运行机制

1 类变量属于java类的本身,不属于每个对象的,每个程序运行所以只初始化一次!

2 类变量又叫静态成员变量!它不需要创建对象就可以已经在内存中存在了。

3 static修饰,就是告诉jvm这个变量的内存空间在静态存储区内开辟,而不是在栈内存里面!

4 Java程序执行时,类的字节码文件被加载到内存,如果该类没有创建对象,类的实例成员变量不会被分配内存。但是,类中的类变量,在该类被加载到内存时,就分配了相应的内存空间。如果该类创建对象,那么不同对象的实例变量互不相同,即分配不同的内存空间,而类变量不再重新分配内存,所有的对象共享类变量,即所有的对象的类变量是相同的一处内存空间,类变量的内存空间直到程序退出运行,才释放所占有的内存。Java语言允许通过类名直接访问类变量。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics