字符串
String str = “abc”;
字符串是类,是引用的数据类型
这是定义了一个字符串的常量。常量是不可改变的量,字符串是不能改变的。
字符串的构造器
字符串常量是一种定义的方式
字符串需要有其他形式的构造器,比如可以通过字符的数组,字节数组,io流中的数据等等 。
byte[] bs = {97,98,99,100};
//通过字节数组创建字符串
String s2 = new String(bs);
System.out.println(s2);
//通过字节数组创建字符串,offset就是索引的开始位置,length取的长度
String s3 = new String(bs, 1, 3);
System.out.println(s3);
char[] cs = {'b','a','g','h','g'};
//通过字符的数组来创建一个字符串
String s4 = new String(cs);
System.out.println(cs);
//通过字符数组创建字符串,offset就是索引的开始位置,
String s5 = new String(cs, 2, 2);
System.out.println(s5);
//通过字符串的常量创建字符串的对象
String s6 = new String("hello");
System.out.println(s6);
区别
String s1 = new String (“abc”);
String s2 = “abc”;
有什么区别?
new String (“abc”);如果没有在字符串的常量池中没有abc就会在堆中创建一个对象,同时又在字符串常量池中也创建一个对象,然后用堆中的对象来引用字符串常量池中对象。实则创建了2个对象。
new String (“abc”); 如果在字符串的常量池中有abc,那么就会在堆中创建一个对象,直接引用已经存在的字符串常量池中的那个对象。
空字符串和null的区别
空字符串是有效的引用,有地址的,只不过是内容的长度是0。
null这个引用是空引用,不能使用。使用一定会报空指针的错误。
引用数据类型的默认值是null。
字符串的获取功能
String s = "heleloworld";
//获得一个字符串的长度
int length = s.length();
System.out.println(length);
//根据索引号或者字符,索引不要越界
char c = s.charAt(3);
System.out.println(c);
// 获得一个ascii对应字符在字符串中第一次出现的位置
int i = s.indexOf(101);
System.out.println(i);
//获得一个字符串在母字符串中第一次出现的索引
int el = s.indexOf("el");
System.out.println(el);
//从某一个索引开始向后数第一次出现的子字符串的索引
int e = s.indexOf("el", 2);
System.out.println(e);
//截取指定的索引之后的字符串,包含索引处的字符
String substring = s.substring(5);
System.out.println(substring);
//截取指定的开始索引和结束索引之间的字符串,包头不包尾
String substring1 = s.substring(5, 8);
System.out.println(substring1);
String s1 = "abcde";
//获得这个字符串对应的字符的数组
byte[] bytes = s1.getBytes();
System.out.println(Arrays.toString(bytes));
//把字符串转换成字符的数组
char[] chars = s1.toCharArray();
System.out.println(Arrays.toString(chars));
String s5 = "abcde我爱你中国15554555";
//把字符串的字母部分变成大写
String s6 = s5.toUpperCase();
System.out.println(s6);
String s7 = "ABCDE我爱你中国15554555";
//把字符串大写字母变成小写
String s8 = s7.toLowerCase();
System.out.println(s8);
//String concat = s5.concat(s7);
String concat = s5+s7;
//拼接两个字符串,了解即可
System.out.println(concat);
补充
String s = "aaa-bbb-cccc-ddd";
//把一个字符串按着某种字符拆分成数组
String[] split = s.split("\\-");
for (int i = 0; i < split.length; i++) {
System.out.println(split[i]);
}
String s1 = "HelloWorld";
//把字符串中的某个字符串替换成另一个字符
String replace = s1.replace('l', 'x');
System.out.println(replace);
String s2 = "aaa-bbb-aaa-ddd";
//把字符串中子字符串替换成另一个子字符串
String replace1 = s2.replace("aaa", "kkk");
System.out.println(replace1);
String s3 = " abc ";
//去掉字符串两边的空格
String trim = s3.trim();
System.out.println("|"+trim+"|");