String
- 1、概念
- 2、重要方法
- 1)charAt()
- 2)length()
- 3)toCharArray()
- 4)new String(char[] cs,int offset,int count)
- 5)compareTo()
- 6)compareToIgnoreCase()
- 7)concat()
- 8)contains()
- 9)startsWith()/endWith()
- 10)equals()
- 11)getBytes()
- 12)new String(byte[] bs,int offset,int length,char charset)
- 13)hashcode()
- 14)indexOf()
- 15)intern()
- 16)isEmpty()
- 17)mathes()
- 18)replaceAll()
- 19)split()
- 20)replace()
- 21)subString()
- 22)toLowerCase/toUpperCase
- 23)toString()
- 24)trim()
- 25)valueOf()
1、概念
最终类—没有子类
java中所有的字符串常量都是String类的对象
String类对象的内容存储在底层的无法改变的字符数组中,String类创建出的对象值也就无法改变java中所有的常量存储在方法区的运行时常量池(字符串常量存的是引用,其他的常量存储是值)(方法区分为静态常量池和运行时常量池)
如果给定的字符串常量内容和之前的出现的内容一致,公用同一个方法区常量引用—共享
注:
①s1指向方法区 String s1=“ab”;
②s2指向堆String s2=new String(“ab”);
s1和s2地址值不相同
③String s5=“a”;s5=s5+“b”;
s2和s5,
s2指向堆,s5指向堆但是开辟两个不同的堆内存所以地址值不一样。
④String类的对象底层由不可改变的字符数组来存储所以对象的值不能改变—不能做拼接
String类借由别的类来做内容的拼接
底层实现:
s5=new StringBuilder(“a”).append(“b”).toString();
toString方法底层是创建一个新的String类对象来返回。
⑤StringBuilder和StringBuffer
StringBuffer:从jdk1.0出现用于实现String类的内容的拼接,线程安全但是拼接效率较低。底层采用了同步方法机制。
StringBuilder:从jdk1.5开始出现用于实现String类内容的拼接,线程不安全但是拼接效率较高。
⑥字符串的哈希码是固定不变的
2、重要方法
1)charAt()
根据指定的下标返回对应的字符
2)length()
返回字符串对象的长度
3)toCharArray()
将字符串对象内容转成新的字符数组进行返回
4)new String(char[] cs,int offset,int count)
可以将字符数组的部分内容转成新的字符串对象来进行返回
5)compareTo()
根据字典来比较两个字符串对象的大小
6)compareToIgnoreCase()
忽略大小写来进行字典比较
7)concat()
把指定的字符串对象内容拼接到原字符串对象内容的末尾进行返回
和+的区别:
①+底层由StringBuilder来做拼接(StringBuilder中的append方法),concat底层由数组扩容实现拼接
②+可以拼接任意类型的数据但是concat只能拼接字符串对象
8)contains()
判断指定的字符串对象内容是否是原串的子串(返回是布尔值)
9)startsWith()/endWith()
判断是否以子串来开头/结尾
10)equals()
重写Object类里的方法,重写的功能是根据对象的地址值和对象的内容来进行比较
补充:instanceof
instanceof关键字,左边填入的是对象,右边填入的可以是父类、本类、子类。
用来判断对象和类的关系
11)getBytes()
把字符串对象内容转成对应的字节数组进行返回
12)new String(byte[] bs,int offset,int length,char charset)
可以把字节数组部分内容转成对应的新的字符串对象进行返回
13)hashcode()
针对Object类里方法进行重写,重写功能是计算过程只和字符串对象的内容有关系。
14)indexOf()
返回子串第一次出现的下标
如果没有找到返回-1
也可以指定起始下标来查找第一次出现的子串(包含指定的下标)
15)intern()
把指向堆中的引用转向到方法区中
16)isEmpty()
判断字符串对象是否是空串
17)mathes()
预定义字符
.
根据填入的正则语法来匹配对应的字符串信息
①匹配内容为指定的字符串对象
“abc”.equals(str)
如果匹配的内容是一段固定内容,正则里可以填入固定内容
matches方法是来做具体的匹配,在方法里填入的正则内容是匹配条件
str.matches(“abc”)
②匹配内容为数字(单个)的字符串对象
//d–字符串转义–/d–正则转义–[0-9]
str.matches("\d")
③匹配小写英文字母
[起始-结束]可以在起始和结束范围之内匹配一个字符
str.matches("[a-z]")
④.—代表任意一个字符
⑤代表数量词,来修饰前面字符出现的个数
代表前面的字符可以不出现、可以出现1次也开以出现多次
str.matches(".")
⑥匹配字符串中含有数字
str.matches(".\d.*")
补充:正则表达式
针对字符串内容进行匹配
18)replaceAll()
根据填入的正则语法来匹配对应的信息并且把对应的信息替换成指定的内容
19)split()
根据填入的正则语法来匹配关键信息,把关键信息当作切割符来切割原串返回字符串数组
切割符对字符串对象切割得到一个字符串数组
①如果切割符出现在字符串的最后面直接切掉如果在最前面会切出空串
②如果切割符出现多次并且位置是在最后面那么会被全部切掉
③如果切割符出现多次并且位置是在中间有n个切割符就切出n-1个空串
④如果切割符出现多次并且位置是在最前面有几个切割符就切出几个空串
20)replace()
把指定的内容替换成新的内容
21)subString()
根据指定的下标来截取子串
①包含起始下标不包含结束下标—含头不含尾
②结束下标减去起始下标就是截取子串长度
22)toLowerCase/toUpperCase
转小写/大写
23)toString()
对Object类进行重写,操作的就是字符串对象的内容而不是地址值
24)trim()
针对字符串前后出现的空格要去掉-----掐头去尾
25)valueOf()
可以支持把任意类型的数据转成字符串类型的数据(都是静态方法)