A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
3.StringBuilder的作用,为什么要使用StringBuilder

11 个回复

倒序浏览
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:
(1)String类是引用类型数据。
(2)字符串底层是char数组,而数组在创建之初长度就是固定的,因此字符串的长度是不可变得。

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?

(1)这句代码创建了2个对象,1.在堆内存中新建了一个new String,2.在堆内存的常量池生成一个abc;
(2)String s = "abc";这句代码创建了2个对象,在堆内存的常量池生成一个abc。

3.StringBuilder的作用,为什么要使用StringBuilder

答:1、StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder 对象中的内容是可变的

    2、 因为使用StringBuilder的运行速度快,更方便。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
引用数据类型,字符串时常量,它们的值在创建后就不能够更改。
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
两个,分别在对内存中和字符常量池中。
一个,在字符常量池中。
3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder 的好处就是会提前将存储空间扩容产生,当存储字符串时,节省很多创建空间的时间,提高效率。
章鑫
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型;字符串效果上相当于字符数组( char[] ),但是底层原理是字节数组( byte[] )所以字符串不可变,它们的值在创建后不能被更改

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
String s = new String("abc")创建了两个对象,new String 和"abc",new Strig 再堆中,"abc"在堆中,
String s = "abc";创建了1个对象"abc",直接将变量指向方法区中的静态区内的”abc”这一实例。


3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder 对象中的内容是可变的,
因为String对象内容是不可变的,而StringBuilder是一个类似于 String 的字符串缓冲区,每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。所以当我们需要改变字符串内容时,用StringBuilder更加灵活方便,
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型,因为String字符串是一个常量
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
创建了两个对象  "abc"存放在堆内存的字符串常量池中   s直接存放在堆内存中
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
创建了一个对象,存放在堆内存的字符串常量池中
3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder是一个可变的字符串,使用StringBuilder不用频繁的创建对象,提高效率
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
是引用数据类型,因为String底层逻辑是char[]数组,数组在创建之初长度是固定的,所以字符串长度不可变。
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
创建了两个对象,“abc”在堆内存中的字符串常量中创建了一个对象,s在堆内存中创建了一个对象。
3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder是可变的字符串,在字符串拼接的时候效率比String更加快。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

String是引用数据类型。 字符串底层原理是字节数组,由于数组创建之后其长度不可变,所以字符串的长度不可变。

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?

String s = new String("abc") 创建了两个对象,“abc”创建在堆内存的常量池中;new的对象创建在堆中,常量池外。

String s = "abc"; 只创建了1个对象,创建在堆内存的常量池中。

3.StringBuilder的作用,为什么要使用StringBuilder

StringBuilder的作用:是一个可变的字符串序列对象,可以在一个对象中进行扩容,从而存储更多的字符串

因为与直接使用String进行大量字符串拼接相比,StringBuilder进行大量字符串拼接时,比较节省空间以及效率较高。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
        String是引用类型。
        字符串的底层是由数组维护的,数组一旦创建长度就不可变了,因此字符串的长度不可变。
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
   
   
        1)String s = new String("abc")这句代码共创建了两个对象。
                “abc”会在字符串常量池中建立一个对象,
                new String会在堆内存中创建一个对象。
        2)        String s = "abc"只会在字符串常量池中创建一个对象。

3.StringBuilder的作用,为什么要使用StringBuilder
        StringBuilder主要是用来做大量的字符串拼接。
        因为StringBuilder的长度是可以变的,进行字符串拼接的时候不会一直创建对象,效率比较高。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
     String类是引用数据类型,
     字符串在效果上相当于字符数组char[],在创建时候长度就是固定的,所以不可变

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
     String s = new String("abc");创建了两个对象,分别为new String在堆内存中,“abc”在堆内存的字符常量池中;
     String s = “abc”;创建了一个对象,在堆内存的字符常量池中

3.StringBuilder的作用,为什么要使用StringBuilder
     StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder 对象中的内容是可变的
     StringBuilder 有一个字符缓冲区,会提前将储存空间扩容产生,当储存字符串时,节省很多创建空间的时间,提高效率
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
(1)引用类型
(2)字符串的长度不可变,每一次在拼接时都会生成一个新的字符串对象

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
(1)两个对象,"abc"创建在堆内存的常量池中,new的对象创建在堆内存中
(2)一个对象,"abc"创建在常量池中

3.StringBuilder的作用,为什么要使用StringBuilder、
(1)StringBuilde是一个可变的字符串序列对象,可以在一个对象中进行扩容,从而存储更多的字符串
(2)因为创建一个StringBuilder,会开辟一块长度为16的长度空间,当拼接的字符串长度已经超过了16个长度时,会进行
对象空间的扩容,字符串存储空间不足时,会在这个对象空间上一直扩容, 以保证接下来能够存储对应的字符串,不会一直创建对象,效率较高
回复 使用道具 举报

1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型;字符串效果上相当于字符数组( char[] ),但是底层原理是字节数组( byte[] )所以字符串不可变,它们的值在创建后不能被更改

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
两个,分别在对内存中和字符常量池中。
一个,在字符常量池中。
3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder是一个可变的字符串,使用StringBuilder不用频繁的创建对象,提高效率,在大量字符串拼接和字符串反转中比String方便快捷
回复 使用道具 举报

1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:
(1)String类是引用类型数据。
(2)字符串底层是char数组,而数组在创建之初长度就是固定的,因此字符串的长度是不可变得。
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?

(1)这句代码创建了2个对象,1.在堆内存中新建了一个new String,2.在堆内存的常量池生成一个abc;
(2)String s = "abc";这句代码创建了2个对象,在堆内存的常量池生成一个abc。
3.StringBuilder的作用,为什么要使用StringBuilder
答:1、StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder 对象中的内容是可变的
    2、 因为使用StringBuilder的运行速度快,更方便。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马