String
- String在内存中的表现
- 字符串常量池pool
- 特点:预先把对象放入池中
- String对象内容不可变(做任何操作只是给一个新的对象)
- 分类
都是与字符串数组相关
* char[] charArray = str0.CharArray();//字符串转换数组
* char c = str0.charAt(1);
* int index = str0.indexOf("j")//返回字符的下标
* int index = str0.indexOf("1");//返回一个字符在String首次出现的位子
* int index = str0.lastindexOf("1")//最后出现的位子
* int length = str0.length();//属性
* boolean flag = str0.contains("ell");//返回一个字符串是否包涵另一个字符串
* Stringsubstring = str0.substring (1,4);根据下标截取字符串,特点是前闭后开(包含1,不含4)
* Stringsubstring = str0.substring (4);//从下标截取到最后
* String newa = str0.replace('1','s');//替换
* String newa = str0.replace("11","ss");//替换
* flag = str0.starsWith("he")//判断一个字符是否以某个字符串开头(t or f)
* flag = str0.endsWhith("lo")//判断一个字符是否以某个字符串结尾(t or f)
与英文相关
* String upCase = str0.toupperCase();//转换全大写
* String lowCase = str0.toupperCase();//转换全小写
* boolean flag = "Hello".equalsIgnoreCase("hello")//忽略大小写比较相等
* "hello".compareTo("hello")使用字典顺序,字符比较,输出Ascii码,如字符一样在比长度,长度不一样,输出长度
* "hello".compareToIgnoreCase("hello")//忽略大小写比较
重点
- 对任意一个字符串做非空判断,都要做两个判断(空与空串)比较
- if(str0 != null && !str0.equals(” “)){ //位置不能换,利用&&的短路
- System.out.print(“字符串非空”)
- }else{
- System.out.print(“字符串无效”)
- }
- trim方法//去掉字符串前后空格
- str = ” he llo “;
- System.out.print(str0.trim());
- matcher(模糊符号)
- 正则表达式的匹配
- regex一个字符串模板,规定了字符串的样式
- 任何一个字符串都是正则表达式
- 基本符号
- []{}()*+?
- []一个代表一个字符,
- {}代表正则表达式反复出现的次数
- ()和|配合,表示可选,(|),不限制字符(123|abs|a-)
- {m,n}至少m次,至多n次。 {m,}至少出现m次。 {m}只能出现m次。
- *表示任意次
- +表示至少一次
- ?表示0-1次
- String 的常用方法
- 校验方式:正则表达式
- 缺点
- 表示String的类
- String Boffer
- String Buller
split()
对字符串进行拆分
传的是分隔符
- String message = “J122-123-456”
- String[] results = message.split(“-“);
- System.out.print(resulits[0]);
StringBuffer
- 内容可变的字符串类型,方法主要集中在改变StringBuffer对象的内容上
需要NEW出来
- StringBuffer sb = new StringBuffer(“hello”);
- sb.append(“world”);
- 适用于安全的多线程的,效率低
与Buffer功能一样,单线程,不安全,但是效率高。
StringBuilder
在大量做字符串拼接的时候,用这两个
凡是安全多线程的效率一定慢
凡是不安全的单线程的效率一定快
包装类:专门为基本数据类型设计
- 作用:在基本和引用之间充当桥梁
- 首字母大写,唯有int-intege,char-character
- 包装类——基本类型——String互转
- 查doc文档
- 方法
- 基本转包装类,调用包装类的带参构造
- int a = 10;
- Inteager i = new Inteager(a);
- 基本转包装类, 自动封箱
- Inteagaer i = a;
- 包装类转基本,自动拆箱
- Inteager i = 100;
- int a = i;
- 包装类转基本,调用包装类的value()
- int a = i.intvalue();
- 包装类转String,,调用包装类的tostring()
- Intager i = 100;
- String a = i.tostring();
- atr = i +”“;//其本质还是调用了Inteager对象的toString方法
- String转包装类,调用包装类的带String参数的构造
- String str = 100;
- Inteager i = new Inteager(str);
- 基本转String,用包装类的带参tostring()方法
- int i = 10;
- String str = Inteager.toString(i);
- String转基本,调用包装类的方法
- String str = “250”;
- int i = Inteager.parseInt(atr);
- 基本转包装类,调用包装类的带参构造