谈谈Java中String使用的小技巧

字符串类

String类型在Java中是不可变的类型,因为其在底层实现的是一个char类型的数组,利用该数组来存储String对象中数组的值,而数组是不可变的。

String类在JDK代码的实现中,引入了正则表达式来完成replace,split等相关操作。

在实例化String类型的时候,如果没有必要,不要使用的方式,要尽量使用的方式来创建一个String类型的变量,其可以用下面的代码测试出效率的不同:

public static void main(String[] args) {

long start = System.currentTimeMillis();

for(int i =0;i

String string = "hello";

}

System.out.println(System.currentTimeMillis() - start);

//输出 3

start = System.currentTimeMillis();

for(int i =0;i

String string = new String("world");

}

System.out.println(System.currentTimeMillis() - start);

//输出 71

}

造成这种结果的主要原因是,String类的构造方法是这样定义的:

Java在使用如下的方式声明:

是声明在Java的常量池中,作为常量来处理的,这样做的好处是:

如果有另外的一个变量的值与已有的一个字符串的值是相同的,就不会再重新创建一个对象,直接将两个变量引用到常量池中的同一个位置。而在上述的String类的构造方法中,会重复创建一个String对象,这个对象将常量字符串包装起来了。

那么也就有:

public static void main(String[] args) {

String string = "hello";

String string1 = "hello";

System.out.println(string == string1); //true

String string2 = new String("hello");

String string3 = new String("hello");

System.out.println(string == string2); //false

System.out.println(string2 == string3); //false

}

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180402A0EYJS00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券