Java随笔Day2

字符串基础
1.下面语句共创建了几个对象?
String s=“a”+“b”+“c”+“d”+“e”;

答:创建了一个对象。该语句在class文件中,相当于String s=“abcde”.当JVM执行到这一句话时,就在String pool里找,如果没有这个字符串,就会产生一个对象。String的内部结构是StringBuilder实现的。所以没有生成“ab” “abc”等对象s引用在堆栈里,肯定不是对象,所以只创建了一个对象“abcde”。
2.String类的简单说明
(1)、String使用private final char value[]来实现字符串的存储,也就是说,String对象创建之后,就不能再修改此对象中存储的字符串内容,就是因为如此,才说String类型是不可变的。
(2)、String类型有一个特殊的创建方法,就是使用“”双引号来创建。例如new String(“ershuai”)实际创建了2个String对象,一个是“ershuai”通过“”双引号创建的,另一个是通过new创建的。只不过他们创建的时期不同,一个是编译期间创建,一个是运行期间创建。
(3)、Java对String类型重载了加号(+)操作符,可以直接使用“+”对两个字符串进行连接。
(4)、运行期间调用String类的intern()方法可以向String pool中动态添加对象。
(5)、String的创建方法一般有以下几种:
1>直接使用“”双引号创建
2>使用new String()创建
3>使用new String(“someString”)创建以及其他的一些重载构造函数创建
4>使用重载的字符串进行操作符“+”创建

例如: String str1=“aaaa6666”;
String str2=“aaaa6666”;
System.out.println(str1==str2); //结果为true

String str1=“aaaa6666”;
String str2=new String(“aaaa6666”);
System.out.println(str1==str2); //结果为false

String str1=new String(“aaaa6666”);
str1=str1.intern();
String str2=“aaaa6666”;
System.out.println(str1==str2); //结果为true
当调用intern方法时,如果String pool 中已经包含一个等于此String对象的字符串,则返回池中的字符串,否则将此String对象添加到池中,并返回String对象在String pool中的引用。此例子中由于执行了 str1=str1.intern();会使str1指向String pool中值为"aaaa6666"的字符串对象,str2也指向了同样的对象,所以结果为true。

3.下列程序的输出结果是多少?
class Test(){
public static void main(String[] args){
String str=“ABCDEFGH”;
String str1= str.substring(3,5);
System.out.println(str1);
}
}

答案:输出结果为:DE
Java中的substring是前包括后不包括的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值