Java 字符串就是 Unicode 字符序列
Java 没有内置的字符串类型,所以在标准 Java 类库中提供了一个预定义类,叫做 String。
每个用双引号括起来的字符串都是 String 类的一个实例:
String e = "";//an empty string String greeting = "Hello";坑:String类没有提供用于修改字符串的方法!
所以想将字符串 “Hello” 修改为 “Help” ,要这样写: String greeting = "Hello"; greeting = greeting.substring(0, 3) + "p"; System.out.println(greeting);// 输出Help 不可变字符串的优点:编译器可以让字符串共享,如果复制一个字符串变量,原始字符串与复制的字符串共享相同的字符。Java 的设计者认为共享带来的高效率远远胜过提取、拼接字符串所带来的低效率。 String greeting = "Hello"; //有人将 Java 字符串看做是字符串数组,像下面这样: char greeting[] = "hello"; //这种认识是错误的,其实 Java 字符串更加像 char* 指针: char* greeting = "hello"; //当采用另一个字符串替换 greeting 的时候, Java 代码主要进行下列操作: char* temp = malloc(6); strncpy(temp,greeting,3); strncpy(temp + 3,"p!",3);判断是否是本身使用 == ,判断是否相等使用 equals
s.equals(t) , s 和 t 可以是字符串变量,也可以是字符串常量 String greeting = "Hello"; System.out.println("Hello".equals(greeting));// true System.out.println("hello".equalsIgnoreCase(greeting));// true,忽略大小写差别 工作中不要使用 == 运算符检测字符串的相等性,以免程序中出现糟糕的 bug ,从表面上看,这种 bug 很像随机产生的间歇性错误。C++ 的 string 类重载了 == 运算符,但 Java 并没有这么做。