4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
创建了两个对象,在堆中字符串常量池中创建了一个地址,在堆又新建了一个地址;
(跟上个问题接一起的情况)没有创建,双引号括起来的都在常量池当中已经有abc了,共享使用了作者: 陈萱萱 时间: 2018-10-13 21:32
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”这一实例。