String的常用方法
- 构造方法:
String s2=new String("123");//定义带值的string
String s3=new String();//定义一个空的string
Char 2个
char[] cs ={'你','好','坏','啊'};
String s4=new String(cs);//将一个char[] 变为一个字符串
//从char[]中获取一段构成字符串 参数:char[]名,char[]截取点的起点下标 ,char[]截取点的结束下标
String s5=new String(cs, 1, 2);
Byte 2个
byte[] bs ={97,98,99,100,101};
String s6=new String(bs);//将byte[] 变为字符串
String s7=new String(bs, 1, 3);//截取byte数组的一段构成字符串
- 获取长度方法:.length(); — 数字符串中有多少个字符
byte[] bs ={97,98,99,100,101};
String s6=new String(bs);//将byte[] 变为字符串
System.out.println(s6.length());
- 包含方法:
- 正向包含(从左向右匹配) .indexof:是将string中的字符串看作一个数组,依次对比,如果存储对应的值,则返回一个正数的下标,没有返回-1,只会返回满足的第一个下标
String s6="语 音邀 请我";
int i =s6.indexOf("语音");//默认返回匹配到的第一个
System.out.println(i);
int i =s6.indexOf("语音",2);//设置返回匹配到的第几个
- 逆向比较(从右往左) .lastindexof
String s6="语音语音我";
int i =s6.lastIndexOf("语音");//默认返回匹配到的第一个
System.out.println(i);
int i =s6.lastIndexOf("语音",2); //设置返回匹配到的第几个
4.替换,注意:需要另外声明一个string去接受返回的替换后的结果
(1) replace(字符串原值,替换的新值):全部替换
String s6="语音语音我";
String s7=s6.replace("语音", "xx");
System.out.println(s7);
(2)replaceFirst(字符串原值,替换的新值):只替换第一个
5.拼接:concat(要拼接给字符出的值) ——类似 +
注意:需要另外声明一个string去接受返回的替换后的结果
String s6="语音语音我";
String s7=s6.concat("yyy");
System.out.println(s7);
6.大小写转换:将string中的值的英文大小写进行转换
(1)toUpperCase:小写转大写
String s ="hellow";
//toUpperCase:小写转为大写
String s1 =s.toUpperCase();
(2)toLowerCase:大写转小写
String s2 =s1.toLowerCase();
注意:需要另外声明一个string去接受返回的替换后的结果
7.是否包含:contains(值);如果值被包含返回true,否则false
String s ="hellow java";
boolean b=s.contains("java");
System.out.println(b);
8.获取string中的某一个char .charAt(下标);
String s ="hellow java";
char c =s.charAt(1);
System.out.println(c);
9.将string变为byte数组 getbytes
String s ="hellow java";
byte[] b=s.getBytes();
for (byte c : b) {
System.out.println(c);
}
10.字符串截取 subString 截取字符串中的某一段为一个新的字符串
(1)substring(下标);从当前下标开始往后截取
String s ="hellowjava";
String s1 =s.substring(6);//从当前下标开始往后截取
System.out.println(s1);
(2)substring(下标1, 下标2);从第一下标开始到第二个下标之前截取
String s ="hellowjava";
String s1 =s.substring(2, 6);//从第一下标开始到第二个下标之前截取
System.out.println(s1);
11.分割字符串 split(作为拆分条件的值);将字符串按照分割条件进行拆分,注意:1.拆分出的一定是string[] 2.拆分的条件会被去除
String s ="hel%low%java";
String[] ss=s.split("%");
for (String string : ss) {
System.out.println(string);
}
12.类型转化 valueof,可以将string转为其他引用类型,也可以将其他引用类型转换位string ——valueof方法引用类型之间的强制转换
每种引用类型都有valueof
- string. valueof 可以将其他类型转为string字符串
String s2 =String.valueOf(true);
String s3 =String.valueOf(0.1);
String s4 =String.valueOf(1);
String s5 =String.valueOf('A');
byte b=101;
String s6 =String.valueOf(b);
char[] c ={'A','b'};
String s7 =String.valueOf(c);
- 除去string与Character的引用类型中.valueof
- 可将string类型值变为当前的类型,同时parse..类似于valueof作用
- 将同类的基本类型变为引用类型
Integer in =Integer.valueOf(s);
Integer in1=Integer.valueOf(1);
Integer in2=Integer.parseInt(s);
System.out.println((in+1)+" "+ (in2+1));
Long l =Long.valueOf(s);
Long l2 =Long.parseLong(s);
//string 转double
Double db =Double.valueOf(s);
Double db2 =Double.parseDouble(s);
System.out.println(db+" "+ db2);
//string 转Float
Float fl =Float.valueOf(s);
Float fl2 =Float.parseFloat(s);
3.Character 中valueof只可以将char基本类型转为引用类型
Character c =Character.valueOf('c');
13: 比较大小 A.compareTo(B);再任何引用类型中,比较同类型的值的大小,返回正数前值大,返回负数前值小
14:比值相同:A.equals(B); 再任何引用类型中,比较AB两个对象的值是否相同
Integer i=1010;
Integer i2=1010;
int xi=1010;
int xi2=1010;
System.out.println(i.equals(i2));
System.out.println(i==i2);
System.out.println(xi==xi2);
StringBuffer/builder常用方法:
StringBuffer sb =new StringBuffer("123");
sb.append("456");//类似与string concat 拼接
sb.append("789");
sb.delete(2, 4);//删除StringBuffer中的从下标2到下标4之前的值
sb.deleteCharAt(2);//删除某个下标的值
sb.setCharAt(2, 'A');//修改对应下标的值
String s =sb.toString();//将StringBuffer转为string
String,StringBuffer,StringBuilder之间的区别
- String存储的值不可更改,因为string中char[]是最终修饰的 StringBuffer,StringBuilder中的char[] 不是最终的——大量拼接字符串,优先使用StringBuffer,用append方法拼接,因为String每次拼接一个字符串都需要创建一个新的string对象,会造成资源的大量消耗
StringBuffer s =new StringBuffer("1111");
long times =System.currentTimeMillis();
for(int i =0;i<100000;i++){
s.append("2");
}
long timee =System.currentTimeMillis();
System.out.println(timee-times); //差值7
String s ="1111";
long times =System.currentTimeMillis();
for(int i =0;i<100000;i++){
s=s.concat("2");
}
long timee =System.currentTimeMillis();
System.out.println(timee-times);//差3868
- StringBuffer是线程安全的,StringBuilder是线程不安全的
- StringBuffer ,StringBuilder 都无法直接=赋值,必须使用构造函数赋值
练习:
聊天室
- 创建用户类实体类:用户名,密码,真实姓名,身份证号
- 创建用户类
- 聊天:输入要说的,完毕后提示是否发送1.发 2.否
发送:先检索敏感词是否存在 如果存在改成xx【敏感词检索方法】,之后再输出打印:用户xxxx说:xxxx
可以返回 1上级/ 2继续
- 敏感词检索:将输入的话检索其中是否有违规词,有则替换位xx并 返回(return)
- 敏感词添加and修改方法:先展示(get)所有已经输入的敏感词,1.添加(add) 2.修改(set)3.删除(remove) 完成后保存【提示敏感词可以做成一个集合属性】
可以返回 1上级/ 2继续
- 注册方法:输入用户名,密码,真实姓名,身份证号
创建一个用户对象
- 个人信息查看方法
输出注册的用户,注意密码是*******位数根据输入密码长度决定(length方法)
可以返回 1上级/ 2继续
创建测试方法并按照下述运行
1.先随便插入一些敏感词
2.提示欢迎注册开始注册
3.注册完毕 输出 1.聊天 2 . 个人信息查看 3.敏感词修改/添加