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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

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

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

评分

参与人数 1黑马币 +5 收起 理由
何斯源 + 5

查看全部评分

21 个回复

倒序浏览
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

(1)String类是引用类型数据。
(2)字符串底层是char数组,而数组在创建之初长度就是固定的,因此字符串的长度是不可变得。

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

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

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

答:StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder 对象中的内容是可变的
因为使用StringBuilder的运行速度快
回复 使用道具 举报
一.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
1.String类是引用数据类型;
2.字符串效果上相当于字符数组(char[]),但是底层原理是字节数组(byte[]),而数组在创建之初长度就是固定的,因此字符串的长度是不可变得。


二.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
1.String s = new String("abc")这句代码创建了两个对象,分别创建在堆内存和字符串常量池;
2.String s = "abc"这句代码创建了一个对象,双引号包括起来的直接在字符串常量池中创建.

三.StringBuilder的作用,为什么要使用StringBuilder
1.StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,可变指的是 StringBuilder 对象中的
内容是可变的.
2.因为String字符串拼接,会产生新的对象,拼接效率较低,使用StringBuilder能提高效率
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
1.>引用数据类型包含类,数组和接口,而String是属于类,所以String是引用数据类型。
2.>String类长度的不可改变性和数组的不可改变性类似,它的底层是由字节数组组成,所以String一旦创建,那么他的长度也就固定下来。

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
1.>String s = new String("abc")一共创建了两个对象,一个new出来的在堆内存中开辟了一个空间,””号引起来的在堆内存的常量池中。
2.>首先我们要判断堆内存中的常量池里是否有字符串”abc”,如果有那么这句代码就没有创建对象,如果没有就说明这句代码创建了一个对象。

3.StringBuilder的作用,为什么要使用StringBuilder
1.>StringBuilder可以在堆内存中开辟一块属于它自己的缓冲空间,并且空间可以随着字符串的增加而增加,它同时可以更加有效准确的拼接字符串和反转字符串。
2.>String在进行字符串拼接的过程中要不断的在堆内存中开辟空间,这样会造成性能的浪费,而StringBuilder的出现解决了这一问题。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

1、String类是引用数据类型,因为字符串表现是形式上是字符数组,底层是字节数组


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

1、String s = new String("abc");这句代码创建了2个对象;s在堆内存创建,abc在字符串常量池里创建;

2、String s = "abc";创建了一个对象,在字符串常量池里创建


3.StringBuilder的作用,为什么要使用StringBuilder.
1、作用用在字符串缓冲区被单个线程使用的时候。
2、能解决String类拼接操作会产生新的对象,内存性能浪费,程序效率低。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

答:String是引用数据类型,因为定义一个字符串需要在堆内存中开辟一个长度确定的空间,所以长度不能变。

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

答:String s = new String("abc");创建了两个对象,一个在堆内存中由new新开辟的空间中,一个则存储在堆内存中的常量池中。
String s = "abc";创建了一个对象,只存储在堆内存中的常量池内。

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

答:StringBuilder类的作用是new一个可变的字符串序列,使用StringBuilder可以使得字符串拼接不产生新的对象,自始至终都是一个对象,进而使性能更加的节省,提升效率。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用类型数据。
字符串底层是char数组,而数组在创建之初长度就是固定的,因此字符串的长度是不可变的。

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

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder可以在对象中拼接字符串,减少创建对象数量,提高程序效率。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
引用类型
因为他是根据初始化的字符长度开辟空间的

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

3.StringBuilder的作用,为什么要使用StringBuilder
用来解决string拼接字符串效率地,每次都需要开辟新的内存空间,使用stringbuilder可以在同一个地址上拼接字符串,减少内存消耗提高拼接效率
回复 使用道具 举报
1.String类是引用数据类型,
字符串底层实现为字符数组,既然是数组,我们就很容易想到数组在内存中的存储是连续的,即在定义数组时就分配了固定的地址和空间大小,那么字符串自然是不可变的。
2.创建了两个对象,一个是"abc"串在堆中的常量池中创建,另一个是在堆中新创了一个空间。
3.StringBuilder的作用是获得一个可变的字符序列对象,
使用StringBuilder和String相比当字符串长度改变时StringBuilder的地址值不会改变,不会创建新的内存空间,性能更好,内存消耗更小。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String为引用数据类型,String是使用char型数组存储字符串的内容,所以长度不可变

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

String s = new String("abc"):;创建了两个对象,在堆内存中由new新开辟的空间,另一个存储在堆内存中的常量池中创建。
String s = "abc":堆内存中生成"abc"


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

StringBuilder能更有效率的拼接字符串,减少堆内存里的无用字符串数量。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型。字符串底层是字符数组和字节数组构成,数组一旦创建长度不可变

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

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder可以不开辟新空间增加字符串的长度,使用StringBuilder可以更快捷地对字符串常量进行拼接和反转。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String是引用数据类型,字符串不可变,它们的值在创建后不能被更改
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
创建了2歌对象,new在堆中,“abc”在字符串常量池中
一个对象,在字符串常量中创建
3.StringBuilder的作用,为什么要使用StringBuilder
因为String字符串拼接,会产生新的对象,拼接效率较低,使用StringBuilder提高效率
回复 使用道具 举报

1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
引用数据类型,字符串底层实现为数组,数组就是在定义的时候就分配了地址和空间大小,所以不能改变。

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
创建了两个,一个在堆中的字符串常量池中创建,一个在堆中开辟了一个新空间。
创建了一个,就在堆中的字符串常量池中创建。
3.StringBuilder的作用,为什么要使用StringBuilder
StringBulider的作用是为了获取一个可变字符序列,因为使用String每次添加新的字符,每次都会开辟新的空间,极浪费内存空间,而StringBuilder添加时一直都是那一个空间,性能好,内存消耗小。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

String是引用数据类型。字符串的底层是字节数组,数组创建时不可以改变其长度,所以字符串也不可以改变长度。

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

String s = new String("abc");这句代码创建了两个对象,分别在堆内存和常量池创建的;
String s = "abc";创建了一个对象,在堆内存中的常量池中创建的。

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

String类拼接操作会产生新的对象,每次创建对象,内存性能浪费,程序效率低,因此我们可以用StringBuilder来解决
是一个可变的字符串序列,每拼接一次,都会在原对象的内容上进行拼接,不会产生新的对象。StringBuilder 拼接和反
转效率高。

回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
        String类是引用数据类型,因为String类是基于char[]和byte[]的数组,所以具有和数组一样的特性。
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
        在堆上创造了两个对象,首先在常量池中创建了一个“abc”对象,然后new出来的对象储存空间存放的是常量池“abc”的地址值。
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
        创建了一个对象,在堆内存的常量池。

3.StringBuilder的作用,为什么要使用StringBuilder
        因为String类具有和数组一样的特性长度不可变,在做字符拼接时,每次操作都要开辟新的内存空间,在实际应用中程序的会占用大量的内存资源,且运行效率低下,StringBuilder可以通过“缓冲机制”,在结果一样的前提下,提高程序的运行效率。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

    一:String类是引用数据类型。
    二:字符串底层是由字符数组组成的,字符数组底层是由字节数组构成,在创建的时候长度已经被锁定,不可变。

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


    一:这句代码创建了两个对象。
    二:在堆内存中创建了一个new的空间存String对象,在堆内存的字符串常量池中创建了“abc”的对象。
    三:若字符串常量池中没有存在“abc”的对象,则创建了一个对象,在字符串常量池中创建“abc”对象。


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

    作用:StringBuild的作用是创建一个长度16的字符串缓冲区,随着字符的拼接不断的扩容,自始至终都是一个对象。
    为什么使用:由于String类拼接操作会产生新的对象,每次创建对象,内存性能浪费,程序效率低,所以使用StringBuild来解决。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型,因为字符串的底层是通过字节数组实现的,
数组长度不可变所以字符串长度不可变

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

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder是一个可变的字符串,用StringBuilder可以解决频繁操作String类型而大量产生对象的内存浪费问题。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

  答:String为引用数据类型。
     因为引用类型的默认值为null,由char数组组成 ,而数组在赋值开辟一块内存区域的时候空间就已经定好了,不能变化。


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

  答:String s = new String("abc")创建了两个对象,这两个对象都在堆内存中,"abc"这个字符串被存在堆内存里面的常量池中。new String则在堆内存中创建一块内存区域。
      String s = "abc" 创建了一个对象,"abc"在常量池中可以找到 所以"abc"这个不算一个新的对象。而String s 则在栈内存中可以找到,String s = "abc"是一个方法 ,执行方法要进栈。


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

  答:StringBuilder在编程中有许多String没有的功能
      比如:append、reverse等。且StringBuilder有一个缓冲区,在长度限制上不会有短板

      因为相较于String来说 创建StringBuilder的空参有16个长度空间,而在长度快到达16的时候StringBuilder的长度空间会增加至2n+2的长度空间
      这是第一 ,第二StringBuilder只有一块内存区域里面运算程序,不会过度浪费资源。且StringBuilder有String没有的多项功能
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型。
字符串类似于字符数组,数组在内存中的存储是连续的,在定义数组时就分配了固定的地址和空间大小,
那么字符自然也不可变。

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

String s = "abc"创建了1个对象
“abc”在堆中的常量池中创建

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder的作用是可以在同一块存储区域进行操作和开辟空间,而不用重新开辟一个新的空间。
为了解决String由于字符串进行拼接操作时,会创建新的对象,而不是在原对象上进行拼接。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
引用数据类型;
字符串效果上相当于字符char[]数组,但底层原理是byte[]数组,数组的长度在创建后不能被更改;


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

创建了两个对象;
new String创建在堆内存中;
"abc"创建在堆内存的常量池中;

String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?

创建了一个对象;
双引号包括起来直接创建在堆内存的常量池中;


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

StringBuilder可以在堆内存中开辟一块属于它自己的缓冲空间,并且空间可以随着字符串的增加而增加,
它同时可以更加有效准确的拼接字符串和反转字符串。

String在进行字符串拼接的过程中要不断的在堆内存中开辟空间,
这样会造成性能的浪费,而StringBuilder的出现解决了这一问题。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马