企业网站制作规划/关键词优化排名详细步骤
1,实例变量–instance variable
从属于一个实例
2,静态变量–static variable
整个Class共享这个变量
例子:
public class Yzx {public String name;//实例变量public static int age;//静态变量
}
实例变量调用方式
Yzx yzx=new Yzx();//这个变量只属于这个yzx实例yzx.name="afsa";
静态变量调用方式
Yzx.age=26;//这个age变量属于整个类的,不管赋值多少次,都是最后赋值这次的值
两者存放的位置:
静态变量,在类加载阶段,将这个变量放进静态区。
实例变量,每次创建一个对象都会为这个变量创建内存空间,也就是我创建5次,会为这个变量申请五次空间,对象的存储位置为堆,那么这个变量的存储位置也为堆。
在静态方法里为什么不能调用非静态变量,不能调用静态变量成员?
因为静态方法可以不通过对象进行调用,而是类名.方法名进行调用。
简而言之》实例变量需要创建对象,而静态方法可以直接调用
生命周期
静态变量:类的生命周期
成员变量:对象的生命周期
局部变量:{}结束,生命周期结束
变量存储数据类型分类
存储的是基础数据类型(byte short int long char boolean float double)
这种类型直接是存的数据,在栈里直接存数据。
存储的是引用数据类型(Yzx yzx)
这种类型存的指针,指针指向这个对象在堆里的存储空间。
byte类型变量面试题
byte a = 128, b = 127, c,d=-128; ×
c = (byte) (a + b); √
int c=a+b; √
byte a=128 赋值错误,byte是一个字节,占八位,取值范围(-128-127)。
11111111-01111111,首位为符号位,为什么不是(-127-127,好像是因为不能有+0,-0,然后进行了人为规定)
为什么byte+byte要进行强转,否则就将其提升为int类型才可以?
探索原因及解释(参考链接:https://blog.csdn.net/ejiao1233/article/details/82292348)
和JVM的指令集有关系,大部分指令不支持byte char short boolean ,所有指令不支持boolean, 都是将byte short转换为int, char和boolean数据零位扩展为int类型。反正实际操作都是int类型。并不是因为两个127相加就超出范围,然后就提升到int类型了。