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语言允许通过类名直接访问类变量。
分享到:
相关推荐
3. volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰 6. no-enviction(驱
spring笔记整合在一起的spring笔记整合在一起的spring笔记整合在一起的
JAVA基础笔记整合,java基础部分的一些笔记整合,适合初学者。
SSH整合笔记和配置文件,
某内的学习笔记
《整合营销传播》笔记.docx
OA项目学习笔记,OA学习……OA学习项目实践学习框架整合
java中高级笔记整合
一、Spring 整合 hibernate 二、Spring 整合 struts 三、spring 事 务 处 理
Excel_VBA与数据库(Access)整合笔记
SSH笔记-整合Spring2、Struts2、Hibernate4的完整步骤
Maven3实战笔记(整合)
函数,数组,集合,String,集合,IO,Lambda
spring使用annotation整合dwr笔记 spring使用annotation整合dwr笔记 spring使用annotation整合dwr笔记
Excel+VBA与数据库(Access)整合笔记.doc
网络营销与策划听课笔记整合.doc
开发SpringBoot整合Mybatis过程中笔记 开发SpringBoot整合Mybatis过程中笔记
《Spring3.1 和 MyBatis 整合笔记 》源代码 第二版. 修改了一些小地方,使之更好那么一点点.
这是@hongjilin的学习笔记(小部分是各种博客及官方资料的摘录或整合),旨在方便自己或身边同学的使用与查阅.目前阶段更新偏向前端学习笔记(本人目前是前端岗),但也会进行对Go、Java、Nodejs等后端语言以及对计算机...
韩顺平Spring笔记之ssh整合.doc