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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

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

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

22 个回复

倒序浏览
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
  String类是引用数据类型;字符串从表法上看是字符数组,从底层上看是字节数组。

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
   创建了两个对象:一个存在堆内存中,一个存在字符串常量池中;
   创建了一个对象:存在字符串常量池中。
  
3.StringBuilder的作用,为什么要使用StringBuilder
   StringBuilder可以在对象中拼接字符串,减少创建对象数量,提高程序效率。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:String类是引用数据类型,因为字符串表现是形式上是字符数组,底层是字节数组。

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

3.StringBuilder的作用,为什么要使用StringBuilder
答:StringBuilder是一个可变的字符串类,可以用它存储字符串。
       因为String类每次拼接字符串都会创建一个新的对象,对程序的执行效率有影响,StringBuilder每次拼接都是在缓冲区中,自始至终就一个对象,其效率高于String。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用类型数据。
字符串底层是char数组,而数组在创建之初长度就是固定的,因此字符串的长度是不可变的。

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。

3.StringBuilder的作用,为什么要使用StringBuilder
因为String每次拼接字符串都会产生新的对象,严重影响了程序的效率,
StringBuilder可以在一个对象中拼接字符串,减少创建对象的次数,提高程序的效率。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
  String是引用数据类型
  因为字符串底层是字节数组,数组长度不可以被改变;而且数组又被final修饰,值也无法被改变

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

3.StringBuilder的作用,为什么要使用StringBuilder
    String因为长度无法被改变,每次拼接的时候只能重新创建字符串在常量池中存储,如果需要多次拼接的话,对内存消耗极大
    效率也不高,这个时候就需要用StringBuilder,
    StringBuilder拼接的时候只会有一个对象,每次拼接都会在原有值后面添加,而不会去重新创建,减少了内存的消耗,效率提高
回复 使用道具 举报
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类,进行字符串的其他操作。
回复 使用道具 举报
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个对象,是在堆内存中的字符串常量池中去创建的。

3.StringBuilder的作用,为什么要使用StringBuilder
        【1】StringBuilder是一个可变的字符串,可以看做是一个容器,而存储在这个容器中的字符串是可以被改变的。
        【2】因为在使用String类时,其长度是不可变的,并且在做添加操作时,String类会在堆内存中创建很多对象,让代码执行效率低。而使用StringBuilder类,则可以很便捷的使用append方法去添加,或者用reverse方法来反转字符串,并且对StringBuilder的操作,在堆内存中始终指向的只是一个对象。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型,字符串的长度是固定不变的,创建之后无法改变长度,字符串
拼接之后会产生新的对象。

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
String s = new String("abc");根据字符串数组的内容在堆内存中创建,每次new都会申请一个
内存空间,内容相同但是地址值不同
String s = "abc";在堆内存中的字符串常量池里创建;无论出现几次只会建立一个String对象
,并在字符串池中维护。

3.StringBuilder的作用,为什么要使用StringBuilder
因为每次拼接字符串都会产生新的对象,严重影响了程序的效率,
在使用了StringBuilder之后,可以在一个对象中拼接字符串,减少
创建对象的次数,提高程序的效率
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

  引用数据类型,字符串长度不可变的因为String类的底层代码实际上是字节数组,数组长度已经确定不可改变了。

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

  前者创建了两个指定字符串里的字符串对象,一个在堆内存中,一个在堆内存的字符串池中;
  后者创建了一个字符串对象,在堆内存的字符串池中。


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

  作用:能在一个对象里拼接字符串,减少创建对象的次数,提高程序的效率。
  之所以使用StringBuilder是因为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
答:作用:一直都是一个对象,如果该对象的存储空间不足,会进行扩容操作
为什么要使用:因为他可以在一个对象中拼接字符串,减少创建对象的次数,提高程序的效率
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

String类代表字符串,是引用数据类型。字符串长度不可变是因为字符串是常量,值在创建后不可以更改。

2.String s = new String("abc"); 这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
第一句代码在栈内存中创建了一个指定字符串内容的字符串对象;第二句代码也是在栈内存中创建了一个字符串对象。

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

由于字符串不可改变,所以每次拼接字符串都会产生新的对象,降低程序效率。StringBuilder可以在一个对象中拼接字符串,减少创建对象的次数,提升程序的效率。并且StringBuilder还可以在对象储存空间不够的情况下自动扩容。
回复 使用道具 举报
1.String类是引用数据类型,String是长度固定不变的,创建之后无法改变长度,字符串拼接之后,会产生新的对象

2.String s = new String("abc");这句代码创建一个指定字符串内容的字符串对象,存在了一个字符串区间
   String s = "abc";创建了一个字符串对象,所有的字面值“abc”都作为该类的对象,存在变量里面

3.(1)new StringBuilder(); 创建一个长度为16的容器
   (2)new StringBuilder(String s); 以指定的字符串构建一个StringBuilder对象
   (3)StringBuilder append() 拼接任意数据类型,将数据拼接到对象中,返回值是对象本身
   (4)StringBuilder reverse(); 将对象中保存的字符串序列进行反转
   (5)StringBuilder  -> String 调用toString()方法,将StringBuilder对象转为String
     StringBuilder可以在一个对象中拼接字符串,减少创建对象的次数,提高程序的效率
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

基本数据类型,因为字符串从表示上来说是字符数组,底层是字节数组




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可以在一个对象中拼接字符串,减少创建对象的次数,提高程序的效率。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型。因为字符串表现上是字符数组,数组长度一旦定义了就不能改变。
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
String s = new String("abc");代码创建了2个对象,分别会在堆区域中的s字符串集和字符串常量池中存储地址。 String s = "abc";创建了1个对象,会在堆中的字符串常量池中创建一个

地址。
3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder可以只对1个对象任意拼接字符串常量,对对象内的字符串进行反转。因为String每次拼接都会产生新的对象,影响运算。而StringBuilder任意拼接都不会新产生对象,减少系

统运算,加快效率,所以一般在拼接字符串或者对字符串进行反转时都会把String转化为StringBuilder进行运算。
回复 使用道具 举报
1.String是引用数据类型。底层是数组,数组的长度是固定的,所以字符串的长度也是不变的。
2.①创建了两个对象,字符串"abc"在常量池中创建,String对象在堆内存中创建。
   ②创建了一个对象,在常量池中创建的。
3.StringBuilder 是用于频繁、大量的、多次的拼接时候使用
  使用原因
   StringBuilder是一个字符串缓冲区,可以提高字符串拼接的效率
   StringBuilder拼接调用append()方法,可以拼接任何数据
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

基本数据类型,因为字符串从表示上来说是字符数组,底层是字节数组




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可以在一个对象中拼接字符串,减少创建对象的次数,提高程序的效率。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

String类是引用数据类型。因为字符串的底层是字节。

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

(1)创建了两个对象。分别在常量池池和堆内存中
(2)创建了有个对象,储存在常量次中。



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


因为String类长度不可变的特性,而导致使用String类拼接字符串的时候会
一直创建对象而导致系统的损耗。而StringBuilder长度可变,不用一直创建对象
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
引用类型 字符串拼接会产生新的对象
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
2个,在堆里面进行创建
1个 ,在栈里面进行创建
3.StringBuilder的作用,为什么要使用StringBuilder
可以使对象中的字符串进行拼接,减少对象的次数,提高程序的执行效率,当内存不够的时候会扩容自身*2+2
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:String类是引用数据类型;字符串拼接以后会产生新的对象,所以长度不可改变。
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
答:String s = new String("abc");这句代码创建了2个对象,分别在堆中和字符串常量池里创建。String s = "abc";这句代码创建了一个对象,在堆中创建。
3.StringBuilder的作用,为什么要使用StringBuilderd
答:在同一个对象中拼接字符串,减少次数,提高效率。String有无法做到的事,这些事影响了程序的效率,而StringBuilder可以做到并提高效率。
回复 使用道具 举报
Eish 初级黑马 2019-8-10 21:59:28
20#

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

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"是在常量池中创建了一个对象

3.StringBuilder的作用,为什么要使用StringBuilder
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马