String的一个容易迷惑的地方:"hello"直接量和new String("hello")区别:
当Java程序直接使用形如"hello"的字符串直接量时,JVM将会使用常量池来管理这些字符串;当使用new String("hello")时,JVM会先使用常量池来管理"hello"直接量,在调用String类的构造方法来创建一个新的String对象,新创建的String对象呗保存在堆内存中。换句话说new String("hello")一共产生了两个对象。
常量池(constant pool)专门用于管理在编译期被确定并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口中的常量,还保存字符串常量。
String类对象称为不可变字符串。如果想改变String,首先提取需要的子串,然后再拼接上需要替换的字符串。
String greeting=“Hello”;
greeting=greeting.substring(0,3)+"p!";//将Hello改为Help!
当讲一个字符串与一个非字符串的值进行拼接时,后者被转换成字符串。(注意:任何一个Java对象都可以转换成字符串)。
例如:int age=13;
String rating="PG"+age; //rating="PG13"
System.out.println("The answer is"+answer);
检测两个字符串是否相等:equals() 返回true或false 例:“Hello”.equals(greeting)
检测两个字符串是否相等,而不区分大小写:equalsIgnoreCase() 例:"Hello".equalsIgnoreCase("hello");