Java中String直接赋值和使用new的区别

Java中String直接赋值和使用new的区别

参考了博主世事如书的文章戳这里
自己也总结总结:

  1. Java中一切皆是对象。只要是用类定义的变量,不管是直接赋值(如 String a = “hello”;)还是new一个对象(如 String a = new String(“hello”);),Java都会为它们创建对象。区别是前者是在常量池中创建对象的(从JDK1.7版本之后,java String池设置在堆中,即从堆内存中分离出的一块内存),后者由于用了new关键字,首先会在对内存中创建一个对象,然后会在String池里面再创建一个对象(前提是String池中没有这个字符串)。当然创建对象之后都会让变量指向对象。
  2. 关于Java中的基本类型:基本类型的值是存放再栈中的。在《疯狂java讲义》中的自动装箱和自动拆箱部分,说到“Java中设置基本类型是为了照顾程序员的习惯,能用包装类就用包装类,程序会更加健壮”。
  3. 也就是说Java基本类型变量是不会创建对象的。当然在栈中的读写速度快很多,创建和销毁速度也很非常快。但现在硬件发展已超出软件的很大一部分了,很多时候完全不用考虑这部分成本,所以能用(包装)类就用(包装)类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值