java-变量--面试题

本文详细介绍了Java中的实例变量和静态变量,包括其从属关系、调用方式、存储位置、生命周期等。还探讨了静态方法不能调用非静态变量的原因,以及变量按存储数据类型的分类。此外,对byte类型变量的面试题进行分析,解释了赋值错误和类型提升的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.youkuaiyun.com/ejiao1233/article/details/82292348)
和JVM的指令集有关系,大部分指令不支持byte char short boolean ,所有指令不支持boolean, 都是将byte short转换为int, char和boolean数据零位扩展为int类型。反正实际操作都是int类型。并不是因为两个127相加就超出范围,然后就提升到int类型了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值