1.字符串值
字符串值在创建后就不能修改,但字符串缓冲区可以支持可变字符串,在官方API官方文档中说到字符串值是不可变的,在字符串的源码中,字符串的底层是一个char[]数组组成的,byte数组中的值的用final修饰的,表示值是不可被修改的,而且也没有提供方法去修改字符串的值
2.字符串是一个常量,也是一个对象
例如:“abc”.方法,或者new.String().方法;
//常量
"ss".length();
//对象
String s1 = new String();
s1.length();
3.String拼接“+”操作
在官方Java语言为字符串连接运算符(+)提供特殊支持,并为其他对象转换为字符串。 字符串连接是通过StringBuilder (或StringBuffer )类及其append方法实现的,然后通过toString方法来实现转换字符串
String s1 = "ss";
/*在进行+字符串拼接是时,在底层会new一个StringBuilder(或StringBuffer)对象出来,
然后通过append方法实现字符串拼接的 ,所以说拼接后的“ssss”是存储到堆中的*/
s1=s1+"ss";
//s2值存储到常量池中
String s2="ssss";
System.out.println(s1==s2);
3.编码、解码、字符编码表
编码:将字符串转换为byte数据
解码:将byte数据转换为字符串
乱码:编码和解码不是同一个字符集,就会出现乱码
字符编码:
GBK --> 中文编码,一个汉字表示2个字节
UTF-8 --> 万国码,所有的国家的文字都能在在这张表找到,一个汉字表示3个字节
iso-8859-1 --> 西欧编码
/*
编码:将字符串转换为byte数据
解码:将byte数据转换为字符串
*/
//编码:将字符串转换为byte数据
String s = "Hello,Word";
byte[] bt= s.getBytes();
System.out.println("编码:"+Arrays.toString(bt));
//解码:将byte数据转换为字符串
String s1 = new String(bt);
System.out.println("解码:"+s1);
4.String常用方法
public static void main(String[] args) {
/**
* equals 比价字符是否相等和equalsIgnoreCase忽略大小写
*
* charAt(索引),获取指定位置的字符,返回值是char
*
* toCharArray(),转换字符数组,可以单独拿出来
*
* substring(索引值1,索引值2),截取字符,包头不包尾
*
* indexOf(字符串),获取字符串的下标,重复的获取第一个出现的
*
* lastIndexOf(字符串),获取字符串的下标,重复的获取最后个出现的
*
* replace("",""),字符串进行替换
*
* split(),以字符串为分界限进行分割成字符串数组
*
* trim(),去掉字符串两端的空格
*
*/
//charAt(索引),获取指定位置的字符,返回值是char
String a = "你好,你这次的验证码为:786452,请你打死都要告诉别人";
for (int i = 0; i < a.length(); i++) {
char b =a.charAt(i);
System.out.print(b+"\t");
}
//toCharArray(),转换字符数组,通过下标可以单独拿出来
System.out.println();
char[] c=a.toCharArray();
System.out.println(c[1]);
//substring(索引值1,索引值2),截取字符,包头不包尾
System.out.println(a.substring(0,3));
//indexOf(字符串),获取字符串的下标,重复的获取第一个出现的下标,返回类型为int
System.out.println(a.indexOf("你"));
//lastIndexOf(字符串),获取字符串的下标,重复的获取最后个出现的,,返回类型为int
System.out.println(a.lastIndexOf("你"));
//replace("原字符","新字符"),字符串相同的进行全部替换
System.out.println(a.replace(",","?"));
//split(),以字符串为分界限进行分割成字符串数组
String str1 = "ui78,8huh,jf87,uie8,ujkdf90,hu67ghj,894ghk";
/**
* 声明字符串数组str2
*/
String[] str2 = str1.split(",");
/**
* 遍历字符串数组
*/
for(int i = 0;i<str2.length;i++)
{
System.out.println("第" + i + "个:" + str2[i]);
}
/*
思考:通过indexOf、substring方法,怎么获取到验证码?
*/
int x = a.indexOf(":");
System.out.println(a.substring(x+1,x+7));
}