String类的使用
- 常见构造方法
- public String():空构造
- public String(byte[] bytes):把字节数组转成字符串
- public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串
- public String(char[] value):把字符数组转成字符串
- public String(char[] value,int index,int count):把字符数组的一部分转成字符串
- public String(String original):把字符串常量值转成字符串
char[] c={'a','b','c'};
Strintg s=new String(c);
//最后输出的结果是abc
//通过构造方法产生字符串
- String类的常见面试题
- 判断定义为String类型的s1和s2是否相等?
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
结果是相等的,因为S1和S2在创建的时候就是已经定下来的值,被创建在常量池中,所以他们的比较都是相等的 - 下面这句话在内存中创建了几个对象?
String s1 = new String("abc");
创建了2个对象,一个是在堆内存中的Strig类型对象,还有一个是ABC在常量池中的对象。 - 判断定义为String类型的s1和s2是否相等?
String s1 = new String("abc");
String s2 = "abc";
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
S1==S2是不相等的,因为S1相当于在对内存中创建的对象,而S2是在常量池中的对象,2者的地址值是不同的。但是equals比较的是对象的属性值,结果为true。 - 判断定义为String类型的s1和s2是否相等?
String s1 = "a" + "b" + "c";
String s2 = "abc";
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
结果是都为true,原因是Java中有常量自动优化机制,在创建对象的时候都是确定的常量值,所以Java会自动进行运算,并产生新的常量值,所以两者比较的都是相同的常量。 - 判断定义为String类型的s1和s2是否相等?
String s1 = "ab";
String s2 = "abc";
String s3 = s1 + "c";
System.out.println(s3 == s2);
System.out.println(s3.equals(s2));
S3==S2结果为假,虽然S1和S2常量,但是S3在运算的时候加入了S1变量进行运算,由于字符串串联是通过StringBuilder
(或StringBuffer
)类及其append
方法实现的。所以在堆内存中有新建了字符缓冲区的对象,所以比较两者的地址值是肯定不同的。 - String类的判断功能
- boolean equals(Object obj):比较字符串的内容是否相同,区分大小写
- boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
- boolean contains(String str):判断大字符串中是否包含小字符串
- boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
- boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾
- boolean isEmpty():判断字符串是否为空。
- String类的获取功能
- int length():获取字符串的长度。
- char charAt(int index):获取指定索引位置的字符
- int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
- int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。
- int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
- int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
- lastIndexOf:倒序查找。效果与indexOf相同。
- String substring(int start):从指定位置开始截取字符串,默认到末尾。
- String substring(int start,int end):从指定位置开始到指定位置结束截取字符串。
- String类的转换功能
- byte[] getBytes():把字符串转换为字节数组。
- char[] toCharArray():把字符串转换为字符数组。
- static String valueOf(char[] chs):把字符数组转成字符串。
- static String valueOf(int i):把int类型的数据转成字符串。
注意:String类的valueOf方法可以把任意类型的数据转成字符串。 - String toLowerCase():把字符串转成小写。(了解)
- String toUpperCase():把字符串转成大写。
- String concat(String str):把字符串拼接。
- String类的其他功能
- String的替换功能
- String replace(char old,char new)//使用替换指定字符
- String replace(String old,String new)//替换指定字符串
- String的去除首尾空格
- String trim()//能去除字符串首尾两段的空格,返回新的字符串。
- String按字典顺序比较两个字符串大小
- int compareTo(String str)//按码表比较两个字符串在码表(unicode码表)中的大小,返回负数,零,正整数
- int compareToIgnoreCase(String str)//效果同上,只是该方法不计算大小写情况。