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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 厦门校区 黑马粉丝团   /  2019-4-10 18:24  /  2273 人查看  /  39 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

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

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

39 个回复

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

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

3.StringBuilder的作用,为什么要使用StringBuilder
答:StringBuilder 主要作用是对字符串进行拼接;
        因为StringBuilder是一个可变的字符串,在进行字符串进行拼接操作时不会构建新的对象,省时省力省了内存空间。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
是引用数据类型,因为String底层是字符数组,数组长度不可以变,因此String类字符串长度不可以变。

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

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder创建了一个可变的字符串长度的存储空间。从创建对象角度看,StringBuilder进行字符串拼接时并不创建新的对象,自始至终只是创建了一个对象,节省了计算机内存空间,提高了运行效率。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

引用数据类型,底层是char数组,因此不可直接修改长度

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

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder 主要作用是对字符串进行拼接;
        因为StringBuilder是一个可变的字符串,在进行字符串进行拼接操作时不会构建新的对象,省时省力省了内存空间。
回复 使用道具 举报
本帖最后由 王卓立 于 2019-5-22 21:38 编辑

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

引用数据类型,底层是char数组,因此不可直接修改长度

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

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

两个个对象,分别在堆内存和字符串常量池

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

StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这个类可以对string字符串进行修改

当字符串需要进行频繁修改时,使用StringBuilder性能更好,不会创建新的对象

点评

String s = new String("abc")是创建了两个对象,一个在堆中,一个在常量池中  发表于 2019-4-11 11:25
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String是引用数据类型;因为String是常量

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

String s = new String("abc") 创建了2个对象,其中new String() 在堆内存中创建, "abc" 在堆

内存的常量区中的创建
String s = "abc" 在堆内存的常量区中创建了一个对象;

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder是一个可变的字符序列;
因为String在拼接字符串的时候,由于其长度不可变的特性,会不断的创建新对象导致性能的损失,而

StringBuilder是可变的字符序列,在拼接字符串时只会新建一个对象,极大的提高了性能,所以当需要

频繁的拼接字符串的时候使用StringBuilder;
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
引用数据类型      因为字符串是常量。

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
String s = new String("abc"); 创建了一个对象,在堆内存中创建
String s = "abc"; 创建了一个对象 在堆内存中的字符串常量池中创建
3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder的内容是可变的。 在要进行多次数的字符串拼接中,不会创建新的对象,可以提高效率。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
是引用数据类型,因为字符串是常量,常量的长度不能改变

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
String s=new String ("abc")创建了一个对象,String s 在栈内存中建立  在内存中建立了{a,b,c}
String s="abc" 创建了一个对象,在栈内存创建String s,在内存中建立一个字符串常量池“abc"

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder的作用:是一个长度可变的字符串每一次做字符串拼接,都会在原本对象之上做拼接,不会创建新的对象,提高程序的效率
因为它较于String来说它的长度是可变的,而且进行拼接操作自始至终都是一个对象,性能来说做拼接操作的时候性能较高。
回复 使用道具 举报

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

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

String s = new String("abc") 创建了2个对象,其中new String() 在堆内存中创建, "abc" 在堆

内存的常量区中的创建
String s = "abc" 在堆内存的常量区中创建了一个对象;

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder是一个可变的字符序列;
因为String在拼接字符串的时候,由于其长度不可变的特性,会不断的创建新对象导致性能的损失,而

StringBuilder是可变的字符序列,在拼接字符串时只会新建一个对象,极大的提高了性能,所以当需要

频繁的拼接字符串的时候使用StringBuilder
回复 使用道具 举报
1String是引用数据类型,字符串的底层是由数组实现的

2
String s = new String("abc");
生成了2个对象,在堆内存生成一个、在常量池生成一个
String s = "abc";
在常量池生成1个对象

3
StringBuilder是一个可变长度的字符串,用于存放经常需要进行拼接的字符串。
String是不可改变长度的,每次字符串拼接都需要消耗空间生成新的字符串,经常需要进行拼接的字符串使用StringBuilder效率更高。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

引用数据类型,底层是char数组,因此不可直接修改长度

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

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

一个对象,堆内存

一个对象,字符串常量池

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

StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这个类可以对string字符串进行修改

当字符串需要进行频繁修改时,使用StringBuilder性能更好,不会创建新的对象
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型,字符串是常量;它们的值在创建之后不能更改。
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
创建了一个对象,在堆内存中申请了一个内存存放“abc”,并在栈内存中定义个变量接收。

   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
创建了一个对象,在堆内存中的字符串常量池中申请内存存放“abc”;并通过在栈内存中定义变量接收。

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder 主要作用是对字符串进行拼接。
当频繁的进行字符串的拼接时建议使用StringBuilder,因为使用String拼接会每次拼接都产生一个新的对象占用内存,
而StringBuilder在进行频繁拼接的时候占用内存较小。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

引用数据类型,底层是char数组,因此不可直接修改长度

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

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

一个对象,堆内存

一个对象,字符串常量池

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

StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这个类可以对string字符串进行修改

当字符串需要进行频繁修改时,使用StringBuilder性能更好,不会创建新的对象
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用类型的,字符串是常量创建后值是不能更改的。

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

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder的内容是可改变了,StringBuilder进行拼接操作,自始至终都是一个对象;
做拼接操作的时候性能较高;
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:String类是引用数据类型,java中所有被""引起来的都可以用String实现。
    字符串是常量,因此在创建后它的长度不能更改。



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

    String s = "abc";创建了1个对象,是在字符串常量池中创建了对象。



3.StringBuilder的作用,为什么要使用StringBuilder
答:StringBuilder主要的作用是对字符串进行拼接。
    使用StringBuilder的好处在于,每一次做字符串拼接,都会在原本对象之上做拼接,不会创建新的对象,提高程序的效率
回复 使用道具 举报
郑峰

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 对象中的内容是可变的。
        String类的内容是不可变的
,StringBuilder类的内容是可变的
,在进行字符串的多次拼接时,StringBuilder相较于String来说更具效率。
回复 使用道具 举报
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 是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder 对象中的内容是可变的
     在某些特定情况下 StringBuilder 可以更加有效率的进行字符串拼接
回复 使用道具 举报


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

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

String s = new String("abc") 创建了2个对象,其中new String() 在堆内存中创建, "abc" 在堆

内存的常量区中的创建
String s = "abc" 在堆内存的常量区中创建了一个对象;

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder是一个可变的字符序列;
因为String在拼接字符串的时候,由于其长度不可变的特性,会不断的创建新对象导致性能的损失,而
StringBuilder是可变的字符序列,在拼接字符串时只会新建一个对象,极大的提高了性能,所以当需要

频繁的拼接字符串的时候使用StringBuilder
回复 使用道具 举报
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 对象中的内容是可变的

因为用String直接赋值拼接,每次拼接都要在堆内存开辟一块空间。要是拼接次数多影响编程效率和程序性能。而StringBuilder 拼接只需创建一次对象,多次进行拼接的时候可以大幅度提升程序的性能。
回复 使用道具 举报
潘绍平:
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:String类是引用数据类型,因为字符串是常量,底层是char数组,由一个一个字符组成,所以不能改变长度
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?

答:String s = new String("abc"); 创建了1个对象,放在堆内存中。
String s = "abc";创建了1个对象,放在字符串常量区域。
3.StringBuilder的作用,为什么要使用StringBuilder
答:是一个长度可变的字符串
好处:
每一次做字符串拼接,都会在原本对象之上做拼接,不会创建新的对象,提高程序的效率

对比:

长度:
String:不可变
StringBuilder:可变

对象:
String:每一次拼接,都会创建对象
StringBuilder:进行拼接操作,自始至终都是一个对象

性能:
String:做拼接操作的时候性能比较低下
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:引用数据类型。
      String类其实是对字符数组进行了封装操作,我们在操作String类时其实就是在操作数组,既然是数组那长度就是不可变的。

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

3.StringBuilder的作用,为什么要使用StringBuilder
答:作用就是当频繁拼接字符串的时候,StringBuilder都会在原本对象上做拼接,不会创建对象,可以提高程序的效率。
       当需要频繁做字符串拼接的时候使用,可以节省创建对象,提高效率。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马