黑马程序员技术交流社区

标题: 【厦门JavaEE基础8期——每日总结】String&StringBuilder [打印本页]

作者: 厦门校区    时间: 2019-6-5 17:44
标题: 【厦门JavaEE基础8期——每日总结】String&StringBuilder
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

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

3.StringBuilder的作用,为什么要使用StringBuilder
作者: 黄均贤    时间: 2019-6-5 19:00
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:String类是引用数据类型。因为字符串的地址值不能改变,只能分享。
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
答:(1)创建了两个对象,s在堆内存创建,""里面的abc在字符串常量池里创建。
      (2)创建了一个对象,在字符串常量池中创建。
3.StringBuilder的作用,为什么要使用StringBuilder
答:String类每次拼接字符串都会创建一个新的对象,对程序的执行效率有影响,StringBuilder每次拼接都是在缓冲区中,自始至终就一个对象,效率高于String。
作者: 郭付民    时间: 2019-6-5 19:04
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:引用数据类型包括类,接口和数组,而Sring属于类,是引用数据类型。
     字符串效果上相当于字符数组,数组的长度确定以后是不能改变的,所以字符串的长度不可变。

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
答:对于String s = new String("abc")分为两种情况:
  (1)如果常量池中有字符串abc,那么只会字内存中创建一个对象。

   
  (2)如果常量池中没有字符串abc,那么在常量池中创建一个内容为abc的对象,但是遇到了new关键字,则还是会在内存(不是常量池)中创建一个对象,然后将对象返回给引用s。
   对于String s = "abc"是在常量池中创建了一个对象

3.StringBuilder的作用,为什么要使用StringBuilder
答:StringBuilder是一个可变的字符串类,可以用它存储字符串。
      因为用String每次对字符串拼接,都会产生一个新的对象,会比较浪费空间,使运行速度下降,
       StringBuilder是一个可变的字符串类,可以在原有的基础上拼接字符串。
作者: 陈少勇    时间: 2019-6-5 19:04
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
解:String类是引用数据类型。因为底层原理是由字节数组(byte[])组成,一个字符串对象在堆内存开辟空间或者在字符串常量池里,当长度改变,地址值将改变指向别的对象空间,就不再是原来的对象了。

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
解:第一个创建了2个对象,一个指向堆内存开辟的对象空间,另一个字符串对象从堆内存对象空间指向字符串常量池的对象。
      第二个创建了1个对象,指在堆内存里字符串常量池里的字符串对象。

3.StringBuilder的作用,为什么要使用StringBuilder
解:可变字符串序列。String每次拼接字符串都会创建新的对象,浪费时间、空间。用StringBuilder的话,不需要创建对象,只需要添加就可以改变内容。
作者: 朱铭恺    时间: 2019-6-5 19:08
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

String为引用数类型,因为地址值不可更改,只能创建新的地址


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可以减少内存占用,提高效率
作者: 郭伟杰-    时间: 2019-6-5 19:48
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:是引用数据类型,因为字符串的引用地址值不可改变,所以当长度改变将创建新的地址值。

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
答: String s = new String("abc");创建了两个对象,new String 会在堆内存中开辟空间,创建新的地址值,"abc"会在常量池中创建字符串。
     String s = "abc"; 创建了一个对象,在常量池中创建一个对象。
3.StringBuilder的作用,为什么要使用StringBuilder
答:可变的字符串序列
    StringBuilder每次拼接都在缓冲区中,一直就一个对象,提高效率,减少内存占用。
作者: 郑梅月    时间: 2019-6-5 19:51
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:类属于引用类型,即String类属于引用类型。字符串在堆内存中创建,当字符串的长度发生改变那么所指向的也不是当前对象了。

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
答:String s = new String("abc”);创建了三个对象,“”中的abc在堆内存中的字符串常量池    开辟空间,new String()在堆内存中开辟一块空间。
        String s=“abc”,如果在堆内存中的字符串常量池中已经存在属于abc的区域,那么会   直接引用她的地址值,如果常量池没有属于abc的区域将会创建属于abc的区域。

3.StringBuilder的作用,为什么要使用StringBuilder
答:当一个字符串需要多次的拼接时,使用String每进行一次拼接都需要开辟一块新的内存,使用StringBuilder拼接不用开辟新的内存,可在当前的StringBuilder对象上直接拼接,提高了效率。
  

作者: 王猛虎    时间: 2019-6-5 19:57
1.String是引用数据类型,字符串属于常量,运行过程中不可变

2.两个对象,分别在堆内存中和字符串常量池中创建对象,String s = "abc";创建了一个对象于字符串常量池中。

3.创建对象,对字符串进行拼接反转等功能,使用该对象对字符串进行拼接可以减少对象的创建,提高程序执行效率。
作者: 张遵荣    时间: 2019-6-5 20:41
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:String 类是引用数据类型。String 类 构造的字符串,是一个字符串常量,不能改变长度。

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

答:第一个,创建了两个对象,“abc”存在字符串常量池中,而new出来的对象,存在堆中。
第二个,创建了一个对象,在字串常量池中。

3.StringBuilder的作用,为什么要使用StringBuilder
答:StringBuilder是一个字符串缓冲区,较String的不可改变的特性,对于数据量大的情况下,比String更有优势效率,
因为StringBuilder的字串是可以改变的,这就不必每次操作都产生一个副本字符串,是程序更高效,且使用也更灵活方便
作者: 许雅丽    时间: 2019-6-5 21:00
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型,字符串长度不可改变,因为地址值不可改变。
引用数据类型的数据值会存在常量池里面,不同的引用值都有一个不同的地址值
若是字符串的值改变了会重新存在一块新的空间存在常量池里,所以字符串的长度不可变。

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


3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder属于类,是一个可变的字符序列
使用append就可以将任何基础类型转换成字符串,
或者将字符串转换成其他基础类型
作者: 李大威    时间: 2019-6-5 21:13
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:引用数据类型包括类,接口和数组,而Sring属于类,是引用数据类型。
     字符串效果上相当于字符数组,数组的长度确定以后是不能改变的,所以字符串的长度不可变。

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
答:对于String s = new String("abc")分为两种情况:
  (1)如果常量池中有字符串abc,那么只会字内存中创建一个对象。

   
  (2)如果常量池中没有字符串abc,那么在常量池中创建一个内容为abc的对象,但是遇到了new关键字,则还是会在内存(不是常量池)中创建一个对象,然后将对象返回给引用s。
   对于String s = "abc"是在常量池中创建了一个对象

3.StringBuilder的作用,为什么要使用StringBuilder
答:StringBuilder是一个可变的字符串类,可以用它存储字符串。
      因为用String每次对字符串拼接,都会产生一个新的对象,会比较浪费空间,使运行速度下降,
       StringBuilder是一个可变的字符串类,可以在原有的基础上拼接字符串

作者: 自然之小友    时间: 2019-6-5 21:14
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:String类是引用数据类型。
字符串的长度不可改变,当定义生成好字符串,字符串会在常量池里开辟空间,
若长度发生改变则不是原来的字符串,需要新建。常量池会对字符串进行优化

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

答:这句代码创建了两个对象。其一new String("abc")由new在堆内存中开辟空间,其二“abc”存储于常量池中。

String s = "abc";创建了一个对象,“abc”存储于堆内存的常量池中。
3.StringBuilder的作用,为什么要使用StringBuilder

答StringBuilder是一个字符串缓冲区。它可以在原有的空间上继续拼接字符串内容,即减少了代码的编写又节省了内存的空间。
作者: 吴汕汕    时间: 2019-6-5 21:17
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

String类是引用数据类型;字符串的长度变了就是另一个对象了;


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

  String s = new String("abc");创建了2个对象;s在栈内存,“a,b,c”在堆内存的内存池中;

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

  String s = "abc";创建了1个对象,在堆内存;

3.StringBuilder的作用,为什么要使用StringBuilder
  
  作用是向缓冲区追加内容、将缓冲区的内容反转等;使用StringBuilder可以节省代码,减少内存占用

等;
作者: 许俊杰    时间: 2019-6-5 21:23
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型。
String字符串的长度不可变是因为,String赋值都是在常量池中生成一个新的对象,只要变更String的值就会在常量池中查找是否有这个值,如果没有这个对象,就生成一个新的对象

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

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder的长度是可变的,当在遇到需要反复字符串拼接时,使用StringBuilder不会在常量池反复中创建对象,使其占用内存空间,影响运行的性能。
StringBuilder有着一些String没有的方法,可以使代码更便捷,如字符串的反转,使用String需要for循环和一些变量,如果使用StringBuilder只需要使用revser()方法就能简单的实现。String和StringBuilder之间可以互相转换,所以使用StringBuilder能使编写过程简单许多。
作者: 陈伟锋    时间: 2019-6-5 21:27
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答;String类是引用数据类型
字符串长度从开始其创建开始,其空间就是固定不可变得

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

3.StringBuilder的作用,为什么要使用StringBuilder
答:使用StringBuilder进行字符串拼接,在缓冲区自始至终只有一个对象,执行效率较高
作者: 邹楷能    时间: 2019-6-5 21:27
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:String类是引用数据类型,因为不同的字符串都各自开辟一个内存地址,若相同的话,则是共享同一个内存地址,因此他们的长度不可变。

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

3.StringBuilder的作用,为什么要使用StringBuilder
答:StringBuilder作用是能够改变对象中的内容,其优点是内容拼接都是在缓冲区中,自始至终就一个对象,效率高于String。
作者: 许俊杰    时间: 2019-6-5 21:30
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型。
String字符串的长度不可变是因为,String赋值都是在常量池中生成一个新的对象,只要变更String的值就会在常量池中查找是否有这个值,如果没有这个对象,就生成一个新的对象

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

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder的长度是可变的,当在遇到需要反复字符串拼接时,使用StringBuilder不会在常量池反复中创建对象,使其占用内存空间,影响运行的性能。
StringBuilder有着一些String没有的方法,可以使代码更便捷,如字符串的反转,使用String需要for循环和一些变量,如果使用StringBuilder只需要使用revser()方法就能简单的实现。String和StringBuilder之间可以互相转换,所以使用StringBuilder能使编写过程简单许多。
作者: 辛全旺    时间: 2019-6-5 21:33
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
        答:引用数据类型。字符串对象在重新赋值时会创建新的地址来储存新的内容成为新的字符串对象,所以对于字符串对象来说长度和内容改变就不是原来的字符串了。

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

3.StringBuilder的作用,为什么要使用StringBuilder
        答:StringBuilder可变字符串对象,在被重新赋值时,不会重新创建新的对象,而是在将原来的字符串内容改为新的字符串内容。
作者: 邱昊翔    时间: 2019-6-5 21:33
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
作者: 江健    时间: 2019-6-5 21:34
1.引用数据类型。因为字符串是放在常量池中,所以这就是原因?
2.2个对象,一个在常量池中,一个在堆内存中。
  1个对象,在常量池中。
3.StringBuilder每次拼接字符串都是在原有的基础之上进行改变,所以是对同一个对象进行的操作。减少内存的消耗,提高程序的执行效率。StringBuilder存储的字符串是可以改变的。
作者: 黎先帆    时间: 2019-6-5 21:40
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
引用数据类型
一个字符串对象在堆内存开辟空间或者在字符串常量池里,当长度改变,地址值将改变指向别的对象空间,就不再是原来的对象了。
虽然 String 的值是不可变的,但是它们可以被共享,字符串效果上相当于字符数组( char[] ),但是底层原理是字节数组( byte[] )

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
第一个创建了2个对象,一个指向堆内存开辟的对象空间,另一个字符串对象从堆内存对象空间指向字符串常量池的对象。
第二个创建了1个对象,指在堆内存里字符串常量池里的字符串对象。

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder 对象中的内容是可变的
可以轻松的进行本身反转(reverse)
StringBuilder和String可以相互转换
String类每次拼接字符串都会创建一个新的对象,对程序的执行效率有影响,
StringBuilder每次拼接都是在缓冲区中,自始至终就一个对象,效率高于String。
作者: 赖鸿伟    时间: 2019-6-5 21:43

1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:引用数据类型;
        String类底层其实是对字符数组进行了封装操作,我们在操作时其实也就是在操作数组,既然是数组自然长度不可改变。

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

3.StringBuilder的作用,为什么要使用StringBuilder
答:StringBuilder 主要作用是对字符串进行拼接;
        因为StringBuilder是一个可变的字符串,在进行字符串进行拼接操作时不会构建新的对象,省时省力省了内存空间。
作者: zx_1997    时间: 2019-6-5 21:46
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String属于引用数据类型,由于字符串保存在堆内存中的字符串常量池,当修改字符串时其实是修改字符串名所对应的堆内存地址值。

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

3.StringBuilder的作用,为什么要使用StringBuilder
使用StringBuilder可以修改字符串的长度,当需要使用字符串拼接时使用StringBuilder中的方法append可以减少在堆内存中创建对象的次数,提高程序的执行效率。

作者: 何凯    时间: 2019-6-5 21:52
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String 是引用数据类型,因为String创建的字符串在字符串常量池中不能改变长度也不能改变内容,但是可以共享

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

   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
创建了一个对象, "abc"创建在字符串常量池中 String s = abc的内存地址

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder的作用是可以创建一个缓冲区 ,可以随意添加字符串不会创建额外的对象
作用是 如果需要拼接很多String类型的字符串则需要创建很多对象,用StringBuilder可以节省内存空间
也有很多实用的方法,如字符串反转 多个字符串的拼接
作者: 张仁杰    时间: 2019-6-5 21:54
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

String类是引用数据类型。因为字符串的地址值不能改变,只可以用来公用。
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
第一个创建了2个对象,一个指向堆内存开辟的对象空间,另一个字符串对象从堆内存对象空间指向字符串常量池的对象。
第二个创建了1个对象,指在堆内存里字符串常量池里的字符串对象。


3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder每次拼接都在缓冲区中,一直就一个对象,减少内存的占用,也能提高效率。
作者: 饶小保    时间: 2019-6-5 21:55
陈少勇 发表于 2019-6-5 19:04
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
解:String类是引用数据类型。因 ...

很棒呐
作者: 饶小保    时间: 2019-6-5 21:56
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型。
String类中的成员变量都被封装了,并且在类中没有提供set/get公共方法去修改这些值,
所以字符串一旦初始化后就不能修改,并在外部无法访问到这些成员变量。
而且其中的变量都是有final修饰,等于就是常量,不能修改的。




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

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

创建了一个对象,在堆内存的常量池中。



3.StringBuilder的作用,为什么要使用StringBuilder
使用StringBuilder类相比String类,字符串类是可以改变的,
并且使用StringBuilder类可以提高效率,比如字符串的拼接和反转,都比String类快捷和方便。
作者: 陈杰1    时间: 2019-6-5 21:57
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
引用数据类型。因为每个String都有固定的地址值,但是能分享

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
两个。
new String(), 这里是通过new创建了一个String对象,放在堆中
abc,也是一个对象,但是他是放在字符串池里面

String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
一个。是放在字符串池里面

3.StringBuilder的作用,为什么要使用StringBuilder?
StringBuilder叫字符串缓存区对象,使用时可以不断添加字符、字符串等已有内容。
需要使用时调用toString()获得对象里的所有字符串。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2