2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
答:String s = new String("abc");这句代码创建了2个对象;s在堆内存创建,abc在字符串常量池里创建;String s = "abc";创建了一个对象,在字符串常量池里创建。
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
(1)String s = new String("abc");这句代码创建了3个对象,
在栈内存中建立了一个String s,
在堆内存中新建了一个new String,
在堆内存的常量池生成一个abc;
(2)String s = "abc";这句代码创建了2个对象,
在栈内存中建立了一个String s,
在堆内存的常量池生成一个abc。
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
(1) 创建了两个对象,通过new在堆中开辟了空间,“abc”堆中的常量池中存储
(2) 创建了一个对象,在堆中的常量池中存储
3.StringBuilder的作用,为什么要使用StringBuilder
String因为长度无法被改变,每次拼接的时候只能重新创建字符串在常量池中存储,如果需要多次拼接的话,对内存消耗极大
效率也不高,这个时候就需要用StringBuilder,
StringBuilder拼接的时候只会有一个对象,每次拼接都会在原有值后面添加,而不会去重新创建,减少了内存的消耗,效率提高作者: 施胜源 时间: 2019-8-10 21:35
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型,它会在空间中new出新的空间,通过地址来访问储存于内存中的内容;
字符串效果上相当于字符数组,但底层原理是字节数组,其源码用final修饰,导致字符串的值不可以修改。
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
①. String s = new String("abc");创建了两个对象,其中,"abc"存在于的字符串池子中,而s存在于new出来的空间中;
②. String s = "abc";只创建了一个对象,存在于的字符串池子中。
3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder是为了应对string每次拼接字符串都要新创建一个对象的情况而创建出来的新的类,该类每次拼接字符串的时候只会在原对象上进行拼接,拓展长度,不会频繁创建新对象从而导致占用内存;
使用StringBuilder类可以用来对字符串进行拼接和反转,操作很方便,执行效率高,可以在拼接和反转结束再转化为String类,进行字符串的其他操作。 作者: 林志凯 时间: 2019-8-10 21:35
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
【1】String类是引用数据类型
【2】因为字符串在底层实现是基于数组来实现的,而数组,在一次运行过程中,长度是不能改变的,所以字符串在一次运行过程中长度也是不可变的
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
【1】String s = new String("abc");这句代码创建了2个对象,通过new在堆内存中创建了一个空间,然后在字符串常量池中也创建了一块内容为“abc”的空间。
【2】String s = "abc";创建了1个对象,是在堆内存中的字符串常量池中去创建的。
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
String s = new String("abc");根据字符串数组的内容在堆内存中创建,每次new都会申请一个
内存空间,内容相同但是地址值不同
String s = "abc";在堆内存中的字符串常量池里创建;无论出现几次只会建立一个String对象
,并在字符串池中维护。
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
答:String s = new String("abc")创建了两个对象,分别在new出来的内存中和字符串常量池中
String s = "abc"创建了一个对象 ,在字符串的常量池中
2.String s = new String("abc"); 这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
第一句代码在栈内存中创建了一个指定字符串内容的字符串对象;第二句代码也是在栈内存中创建了一个字符串对象。
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
String s = new String("abc");创建了两个指定字符串内容的字符串对象 在堆中创建。
String s = "abc"; 创建了一个字符串对象,所有的字母值abc都作为该类的对象 在字符串常量池中创建
3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder可以产生一个可以随时变化长度的字符串组,如果对象的存储空间不够,会进行拓展(2n+2),
StringBuilder可以在一个对象中拼接字符串,减少创建对象的次数,提高程序的效率。作者: 李泽楷 时间: 2019-8-10 21:49
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型。因为字符串表现上是字符数组,数组长度一旦定义了就不能改变。
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
String s = new String("abc");代码创建了2个对象,分别会在堆区域中的s字符串集和字符串常量池中存储地址。 String s = "abc";创建了1个对象,会在堆中的字符串常量池中创建一个
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
对于String s = new String("abc")分为两种情况:
(1)如果常量池中有字符串abc,那么只会字内存中创建一个对象。
(2)如果常量池中没有字符串abc,那么在常量池中创建一个内容为abc的对象,但是遇到了new关键字,则还是会在内存(不是常量池)中创建一个对象,然后将对象返回给引用s。
对于String s = "abc"是在常量池中创建了一个对象对于String s = new String("abc")分为两种情况:
(1)如果常量池中有字符串abc,那么只会字内存中创建一个对象。
(2)如果常量池中没有字符串abc,那么在常量池中创建一个内容为abc的对象,但是遇到了new关键字,则还是会在内存(不是常量池)中创建一个对象,然后将对象返回给引用s。
对于String s = "abc"是在常量池中创建了一个对象
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
[1]创建2个对象; 1.new String对象s在堆内存,2."abc"字符串创建在常量池
[2]创建1个对象; 在常量池中创建
3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder是预先加载的容量,优点是减少了创建对象的次数
使用StringBuilder创建对象,可以在缓冲区去扩容,提高程序的执行效率作者: GanYongFu 时间: 2019-9-5 22:20
1、引用数据类型,因为new String() 时候空间是分配的固定大小
2、String s = new String("abc")创建了两个对象,一个在堆内存中,一个在方法区的常量池中
String s = “abc”创建了一个对象,在方法区的常量池中创建的
3、StringBulider是线程安全的可变序列,相比于String类的每次修改都要创建一个新的对象,即浪费时间又浪费空间,StringBuilder可以通过方法对字符串进行改变,不生成多余的空间就可以完成修改,效率更高,更安全作者: 邱超 时间: 2019-9-6 20:57
(1)引用数据类型包括类,接口和数组,而Sring属于类,是引用数据类型。
字符串效果上相当于字符数组,数组的长度确定以后是不能改变的,所以字符串的长度不可变。