String类的概念
- java.lang.String类用于描述字符串,Java程序中所有的字符串字面值都可以使用该类的对象加以描述,如 “abc”
- 该类由final关键字修饰,所以这个类不能被继承
- 该类描述的字符串内容是个常量,不可改变,因此可以被共享使用
- 从jdk1.9开始,该类的底层不使用char[ ] 来存储数据,而是改成byte[ ] 加上编码标记,从而节约了一些空间
String类的构造方法
方法声明 | 功能介绍 |
String() | 使用无参方式构造对象得到空字符序列 |
String(byte[] bytes,int offset,int length) | 使用bytes数组下标从offset位置开始length个字节来构造对象 |
String(byte[] bytes) | 使用bytes数组中的所有内容构造对象 |
String(char[] value,int offset,int count) | 使用value数组下标中从offset位置开始的count个字符来构造对象 |
String(char[] value) | 使用value数组中的所有内容构造对象 |
String(String original) | 根据参数指定字符串内容来构造对象,新对象为参数对象副本 |
代码中具体运用实现以及解释
public class StringConstructorTest {
public static void main(String[] args) {
//1.使用无参方式构造对象
//"“空字符对象,也就是有对象,只是对象中没有内容
//null连空字符串对象都没有
String str1 =""; // 或者写为 String str1=new String();
System.out.println(str1); //自动调用toString方法,打印结果 啥也没有
System.out.println("------------------------------------------");
//2.使用byte数组来构造字符串对象
byte[] bytes = new byte[]{98,99,-67,-89,-128}; //byte范围为-128~127,超出则报错
String str2 =new String(bytes,1,4);
//表示使用byte数组中从下标1开始的4个字节来构造字符串对象
//==> 先将整数转换为字符,然后串起来变成字符串 98-‘b',99-’c' 打印按照对应的ASCII码打印
System.out.println(str2);
//使用整个字节数组来构造对象
String str3=new String(bytes); //注意,小括号里面为bytes而非bytes[]
System.out.println(str3);
System.out.println("----------------------------------------------");
//3.使用char数组来构造字符串对象
char[] chars = new char[]{'h','e','l','l','o'};
//使用整个数组构造对象
String str4 =new String(chars);
System.out.println(str4);
//使用chars数组中从下标为1开始的3个字符来构造字符串对象
String str5 = new String(chars,1,3);
System.out.println(str5);
System.out.println("----------------------------------------------");
//4.使用字符串来构造字符串对象
String str6 =new String("hell0");
System.out.println(str6);
}
}
测试截图
String类中的常用成员方法
方法声明 | 功能介绍 |
String toString() | 返回字符串本身 |
byte[] getBytes() | 将当前字符串内容转换为byte数组并返回 |
char[] toCharArray() | 用于将当前字符串内容转换为char数组并返回 |
char charAt(int index) | 用于返回字符串中指定位置的字符 |
int length() | 返回字符串中字符序列的长度 |
boolean isEmpty() | 判断字符串是否为空 |
前三个方法的代码实现
public class StringByteCharTest {
public static void main(String[] args) {
//1.创建一个字符串对象并打印
String string=new String("hello");
System.out.println(string);
System.out.println("----------------------------");
//2.实现字符串向字节数组的转换
byte[] bytes = string.getBytes();
// System.out.println(bytes);
// bytes 为一个字符串数组的对象,不能直接println,要用循环一个个访问打印
for(int pos=0;pos<bytes.length;pos++){
System.out.print(bytes[pos]+" ");
}
System.out.println();
System.out.println("-------------------------------");
//实现字节数组向字符串的转换
String string1 = new String(bytes);
System.out.println(string1);
System.out.println("-------------------------------------");
//3.实现字符串和字节数组之间的相互转换
char[] chars = string.toCharArray();
for(int pos=0;pos<chars.length;pos++){
System.out.print(chars[pos]+" ");
}
System.out.println();
String string2 =new String(chars);
System.out.println(string2);
}
}
代码运行截图
后三个方法的代码实现
public class StringCharTest {
public static void main(String[] args) {
//1.创建字符串对象并初始化
String string = "hello";
System.out.println(string);
System.out.println("----------------------");
//2.判断字符串是否为空、获取字符串的长度
System.out.println(string.isEmpty()?"字符串为空":"字符串不为空");
System.out.println("字符串的长度为:"+string.length());
System.out.println("---------------------------------------");
//3.获取字符串中的每个字符并打印出来
for(int pos=0;pos<string.length();pos++){
System.out.println("下标为"+pos+"的字符是:"+string.charAt(pos));
}
}
}
代码测试截图
String类的其他成员方法
方法声明 | 功能介绍 |
int compareTo(String anotherString) | 用于比较调用对象和参数对象的大小关系 |
int compareTolgnoreCase(String str) | 不考虑大小写,也就是'a'和'A'是相等的关系 |
String concat(String str) | 用于实现字符串的拼接 |
boolean contains(CharSequence s) | 用于判断当前字符串是否包含参数指定的内容 |
String toLowerCase() | 返回字符串的小写形式 |
String toUpperCase() | 返回字符串的大写形式 |
String trim() | 返回去掉前导和后继空白的字符串 |
boolean startsWith(String prefix) | 判断字符串是否以参数字符串开头 |
boolean startsWith(String prefix,int toffset) | 从指定位置开始是否以参数字符串开头 |
boolean endsWith(String suffix) | 判断字符串是否以参数字符串结尾 |
代码实现
import jdk.swing.interop.SwingInterOpUtils;
public class StringCompareTest {
public static void main(String[] args) {
//1.创建字符串对象并打印
String string ="hello";
System.out.println(string);
//2.比较字符串的大小并打印
System.out.println(string.compareTo("world")); //'h'-'w'=-15
System.out.println(string.compareTo("hehe")); //'l'-'h'=4
System.out.println(string.compareTo("heihei")); //'l'-'i'=3
System.out.println(string.compareTo("haha")); //'e'-'a'=4
System.out.println(string.compareTo("helloworld")); //5-10=-5
System.out.println(string.compareTo("HELLO")); //'h'-'H'=32
System.out.println(string.compareToIgnoreCase("HELLO")); //0
System.out.println("-------------------------");
String string1=" Let Me Give You Some Color To See See!";
System.out.println(string1);// Let Me Give You Some Color To See See!
System.out.println("------------------------------------");
System.out.println(string1.contains("me")); // true
System.out.println(string1.toLowerCase()); // let me give you some color to see see!
System.out.println(string1.toUpperCase()); // LET ME GIVE YOU SOME COLOR TO SEE SEE!
System.out.println(string1.trim()); //Let Me Give You Some Color To See See!
System.out.println(string1.startsWith("Let"));//false
System.out.println(string1.endsWith("See!"));//true
}
}
测试截图
还有一些不太常用的方法在后一篇继续整理讲解并且会给出相关实例