java---基本变量

八大基本类型,

byte,单字节

int,4字节

shortint,2字节

long,8字节

char,2字节,没有负,可表示中文。

boolean,单字节,按javac编译工具后理解是整形01.

float,4字节

double,8字节

自动拆装和自动装箱,存储堆浪费很多空间,一个线程的存储默认开启2048字节,不够存储了再开启,各个对象,java内存结构显示(堆),new一个对象有对象头8字节,内存指针8字节,那一个随便一个对象就有16字节以上。假如一个常用的int,得放大4被。多浪费。所以搞了个基本变量。超出的范围的就不算number罗。nan(not a number)。除了boolean和char,其他默认值都是0,类型匹配交给虚拟机。基本变量在javac期间就搞成了常量池中。类的结构。它压根跟堆没关系。只是运行时,方法栈里面的局部变量栈存储了(运算符栈一起),那方法调用方法就没它传递改变的事了。地址决定了一切。

 

另外提下string类型,本身是一个final类,至于为啥,本人考虑基于安全,因为string里面是基于本地方法实现,内涵就是一个final不可变数组,浪费堆内存,打印string这类就是改写了object类的tostring方法,为啥他浪费空间,看它源码就是存了一个终极字符char数组不可变。平时string a=“aa”。是先创建一个常量,a对应的是一个地址引用。如果再改变a=“aaa”那就是新建一个常量对象,把对应的a对象指向新建对象的地址。或者可以理解有没已经存在aaa这个对象。指向它。这样子就浪费内存了。object引用下来的equals和==都是比对内存地址,同一内存地址肯定存的是同一个对象还有值。后面string改写,把它变成比对字符串的值。比如刚才要是string a=New string(“aa”)这就搞了两个对象,一个是常量对象,括号里面的,另外的就是外面New的。那要是换作比对内存地址就不一样了。重写后就一样了。说了这么多,其实如果创建的字符串老是变更那就算了,浪费内存。这才出了个stringbuilder跟stringbuffer几乎一模一样,就是一个线程安全,一个不。它是一个非终极的char字符数组,可以改写。节省内存。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值