string直接赋值和new的区别
直接分配可以检索离开范围时自动释放的对象。您得到的新东西是对象指针。
这是使用后必须释放的临时内存空间。
Java中String直接赋字符串和new String的区别
关于字符串的分配,Stringa =“ 1 2 3 ”,此方法比stunga = newstring(“ 1 2 3 ”);。后者实际上创建了两个对象。
“ 1 2 3 ”是常数池中的对象。
stunga =“ AAA”; 这样
java中String new和直接赋值的区别
新的,它将在Java集合的内存中创建对象,如果有一些新对象,将会有一些对象。直接任务是获取字符串恒定池的值。
例如,stringstr1 =“ a”; stringst2 =“ a”; system.out.println(str1 == st2 ); Newsring(“ A”); stringst4 = newstring(“ a”); system.out.println(st3 == st4 ); 结果是错误的。
价值
java里String类型可以直接赋值,保存的是值还是引用的地址?
首先,Java中的字符串类型保存了参考地址。如下所说,如果您在Stringa =“ Hello”方法中分配值,则A将保存地址。
双引号字符串是一个恒定的字符。
字符串,当汇编Java文件时,将其放置在虚拟机的常数池中。
“ Hello”的真实位置也位于恒定池中。
还有另一种方法:Stringa = NewsTring(“ Hello”),如果这样写的话,它与第一个不同。
当程序运行时而不是在常数池中,而是在Java堆上创建此对象,就像其他Java对象一样,因此其地址不与第一个对象一起使用。
第二个问题是字符串和int的直接分配之间的区别。
首先,最大的区别是一个是一个对象,另一个是数字值。
该对象可以为null,但是数值必须具有值。
即使您不分配该值,系统也会自动将值分配给0。
INTB= 3 直接分配了内存空间B中的一个空间,B的是可变的,可以更改为5 , 6 当字符串对象不变时,“ Hello”实际上存在于堆中,请参考。
如果stringa =“ bbb”是指另一个新对象“ bbb”的地址。
上一个对象“ Hello”没有更改。
第三个问题是,为什么参考类型分配不能像基本数据类型一样行事? 由于参考类型比基本数据类型要复杂得多,因此基本数据类型仅具有三种数据类型:数字,字符和布尔值,可以非常简单地表达。
例如,2 ,“ A”和True,分配自然很容易,但是参考类型是不同的。
您要引用的类型是个人或专业。
这种复杂的事物同时包含许多不同的属性。
这不能直接用一个值表示,因此,如果您想找到它,只能找到其地址,然后根据地址找到相应的对象。
尽管有点麻烦,但无法避免。
好的,我希望我的答案对您有帮助。