① 关于java储存变量的一些问题
你要明白什么是引用,什么事对象。
Circle circle1 = new Circle(radius);
Circle circle1是一个引用,它指向new Circle(radius)这个对象
Circle circle2 = circle1;
Circle circle2复制了circle1这个引用,也就是说也指向new Circle(radius);这个对象
所以你操作circle2.setRadius(10);的时候会改变circle1
因为这两个引用指向的是一个对象
了解了什么是引用,什么是对象,你就不会疑惑了
② java中的变量各占得字节数
boolen:1个字节自
int:4个字节
float:4个字节
double:8个字节
char:2个字节
byte:1个字节
short:2个字节
long:8个字节
(2)java中变量的存储扩展阅读
Java8大基本数据类型
1,四种整数类型(byte、short、int、long):
byte:8 位,用于表示最小数据单位,如文件中数据,-128~127
short:16 位,很少用,-32768 ~ 32767
int:32 位、最常用,-2^31-1~2^31 (21 亿)
2,两种浮点数类型(float、double):
float:32 位,后缀 F 或 f,1 位符号位,8 位指数,23 位有效尾数。
double:64 位,最常用,后缀 D 或 d,1 位符号位,11 位指数,52 位有效尾。
3,一种字符类型(char):
char:16 位,是整数类型,用单引号括起来的 1 个字符(可以是一个中文字符),使用 Unicode 码代表字符,0~2^16-1(65535)。
4,一种布尔类型(boolean):true真和false假
参考链接:网络JAVA
③ java 变量名存储在哪里
首先声明抄一下一楼说的观点有误,对于栈和堆这里就不说了。
对于基本类型数据来说:
1) 局部变量
$范围:定义在一个方法内部的变量;
$作用域:其作用域为所在代码块,也称为临时变量、栈变量;
$生命周期:从创建开始到方法(函数)结束为止;
$特点:在使用之前必须要对其初始化;
$一律存放在栈中。
2) 实例变量
$范围:定义在一个类内部但不在方法中的变量;
$作用域:其作用域为整个类,能够被操作的范围是类的内部;
$生命周期:对象被创建的时候开始,对象被垃圾回收的时间结束;
$特点:如未定义其初值,系统会自动对实例变量进行默认初始化(默认值为null),使用之前必须创建类的实例;
$每一个对象的实例变量的值是相互独立的;
$一律存放在堆中。
对于复杂类型来说:
引用存放在栈中,而其所指向的值存放在堆中。
回答补充:我的以上陈述已经回答了你的问题,是你没有看懂而已,当然不用了!