String用法
String 类相关
一. == 和 equals
-
== 是两个字符串的内存地址的比较,如果内存地址一致,则为true,否则为false
-
equals 是比较两个字符串的值,如果值一样,则为true,否则为false;
-
hashcode 是字符串的初始地址,
-
每个字符串都会有一个value,表示该字符串的字符序列值,是一个char[] 数组
public class StringView { // == 和 equals public static void main(String[] args) { /** * == 是比较内存地址是否一致 * equals是比较字符序列是否一致,即字符串的值 * 一个字符串的hashcode其实是这个对象的初始地址,空字符串的hashcode值为0 */ String str1 = "asd"; String str2 = "asd"; System.out.println("str1==str2结果为:" + str1 == str2); System.out.println("str1.equals(str2)结果为:" + str1.equals(str2)); System.out.println("str1的hashCode:" + str1.hashCode()); System.out.println("str2的hashCode:" + str2.hashCode()); //创建两个对象 一个在常量池 一个在堆内存 String str3 = new String("xyz"); String str4 = "xyz"; System.out.println("str3==str4结果为:" + str3 == str4); //false System.out.println("str3.equals(str4)结果为:" + str3.equals(str4)); //true //因为str3和str4对应的字符串序列是一致的,所以hashcode也是一致的 System.out.println("str3的hashCode为:" + str3.hashCode()); System.out.println("str4的hashCode为:" + str4.hashCode()); } }
二.String类实现的接口
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
......
}
可以看出String类实现了序列化接口,比较器接口和字符序列接口,下面分别说明下各接口的左右及常用接口方法
-
Serializable 序列化接口:字符串序列化和反序列化
-
Comparable 比较器接口,可以自定义比较方法
public class StringComparable { public static void main(String[] args) { String s = "abc"; String t = "abdf"; /** * String 比较器实现: * 1.先比较两个字符串的长度,从中得到较小的一个minLength * 2.循环while(index < minLength)两个字符序列,比较每位的大小 * 3。如果循环结束没结果,就返回长度的差值 */ System.out.println(s.compareTo(t));//-1 } } -
CharSequence 字符序列接口,,即操作字符相关的接口方法
public class StringChar {
public static void main(String[] args) {
//String 实现的字符序列相关接口
String x = "asdasdasd";
//charAt 返回对应位置的字符
System.out.println(x.charAt(1));//s
//length 返回长度
System.out.println(x.length());//9
//chars 返回对应字符ascii码的IntStream
IntStream chars = x.chars();
chars.forEach(System.out::println);
System.out.println(x.chars());
//endPoints 返回对应字符ascii码的整型流
IntStream intStream = x.codePoints();
intStream.forEach(System.out::println);
//subSequence 返回截取的字符序列
CharSequence charSequence = x.subSequence(0, 3);
System.out.println(charSequence.toString());//asd
}
}

浙公网安备 33010602011771号