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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


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

2.什么情况下会用到Static关键字?

3.静态代码块会在什么时候执行?

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

9 个回复

倒序浏览
干,今天学太认真了,掉头发了,

点评

不要发无关帖子,认真点,下不为例  发表于 2018-10-12 22:02
你很不负责任  发表于 2018-10-12 21:49
回复 使用道具 举报 1 0
1.引用数据类型 String类其实是对字符数组进行了封装操作,用户真正操作的其实字符数组,字符串内部其实就是一个使用final关键字定义的char[]数组,数组长度一旦声明则不可改变,字符串一旦声明则不可改变,改变的引用内存指向。  
2.static静态的,类的静态成员变量一般是共性,成员变量是随着类的加载而加载到,优先于对象的创建
3.静态代码块随着类的加载而加载
4.(1)new String() 和 "abc"两个对象,new String()是存放"abc"的指针,存放在堆中;"abc"存放在栈中
(2)创建了一个对象"abc"



评分

参与人数 1技术分 +1 收起 理由
厦门校区 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1.引用数据类型,常量
2.直接用类调用,不用建立对象,适合工具类中方法的调用
3.静态代码块 加载类时有且仅运行一次
4.2个,字符串常量池里池外 堆中
5.1个,堆中常量池

评分

参与人数 1技术分 +1 收起 理由
厦门校区 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0

1.引用数据类型 String类其实是对字符数组进行了封装操作,用户真正操作的其实字符数组,字符串内部其实就是一个使用final关键字定义的char[]数组,数组长度一旦声明则不可改变,字符串一旦声明则不可改变,改变的引用内存指向。  
2.static静态的,类的静态成员变量一般是共性,成员变量是随着类的加载而加载到,优先于对象的创建
3.静态代码块随着类的加载而加载
4.(1)new String() 和 "abc"两个对象,new String()是存放"abc"的指针,存放在堆中;"abc"存放在栈中
(2)创建了一个对象"abc"

点评

用自己的话写  发表于 2018-10-13 12:24
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
        String类是引用数据类型
        字符串创建的时候在堆中已经开辟了一块空间,如果再创建同样的字符串的时候,其实那是引用已创建好的那个地址值

2.什么情况下会用到Static关键字?
        静态修饰成员变量跟成员方法时,可以通过类进行调用
        创建工具类的时候

3.静态代码块会在什么时候执行?
        在调用类的时候,执行时优先于新建的对象

4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
   
   
   创建了两个对象,在堆中字符串常量池中创建了一个地址,在堆又新建了一个地址;
   (跟上个问题接一起的情况)没有创建,双引号括起来的都在常量池当中已经有abc了,共享使用了
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:String是引用数据类型;因为字符串变量最终指向的是方法区中的常量池,里面存放的数据是不可改变的,因此长度也是不可变的。
2.什么情况下会用到Static关键字?
答:static是用来修饰成员变量和成员方法的,被修饰的成员是属于类的,被该类创建出来的所有对象共享,当该类的所有对象都具有某一相同的属性和行为时会用到。任何对象都可以更改该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。
3.静态代码块会在什么时候执行?
答:静态代码块随着类的加载而加载,且只加载一次。
4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
答:String s = new String("abc");创建了两个对象。一个是通过初始化新创建的String对象来创建,一个是直接将变量指向方法区中的静态区内的”abc”这一实例。
String s = "abc";创建了一个对象。直接将变量指向方法区中的静态区内的”abc”这一实例。

评分

参与人数 1技术分 +1 收起 理由
厦门校区 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马