关于String类-字符串、String中常用API、正则表达式、StringBuilder 和 StringBuffer的课程笔记

Object:

​ getClass() - 获取类的字节码对象
​ wait * 3
​ notifyAll()/notify()
​ toString() - 内容以字符串方式输出
​ equals() - 判断两个对象是否相等
​ hashCode() - 获取内存地址值
​ clone()
​ 深克隆: 复制对象
​ 浅克隆: 复制引用
​ finalize()
​ 垃圾回收机制 - gc
​ 内存溢出: 存满了,没有空间
​ 内存泄漏: 被没有引用的对象占用空间

跟时间相关的类:

​ long - 短时间内的计算
​ Date - 显示时间
​ Calendar - 时间的推算/时间的跳转

时间格式化的类:
SimpleDateFormat("")

format(Date) -> 按指定格式输出String

parse() -> Date -> String

String类 - 字符串

1.特点:
a.字符串就是字符序列,本质上就是一个字符数组
b.String类是final修饰的,不可被继承的
c.String一旦创建就不可修改,属于不可变的字符序列
d.String重写了toString()

2.创建方式
a.直接创建
String str = “”;

b.构造方法创建
String()
String(byte[] bytes)
String(byte[] bytes, Charset charset)
String(char[] value)
String(String original)

3.常量池
a.常量池中放的都是常量
b.只要直接赋值的字符串,都指向常量池

4.内存编码问题
1)编码方式:
UniCode字符集 -> jvm识别
1字符 = 2字节

操作系统识别的编码方式: GBK UTF-8 ASCII ISO8859-1
UTF-8 -> 1字符 = 3字节
GBK -> 1字符 = 2字节

2)编码: 字符 -> 字节
API:
byte[] str.getBytes() -> 默认方式
byte[] str.getBytes(“GBK”) -> 指定方式

3)解码: 字节 -> 字符
构造方法:
new String(byte[],“GBK”)
new String(byte[])

4)乱码问题:
a.产生原因:
如果以gbk的方式编码得到的数组,然后以UTF-8的方式进行解码,就会出现乱码问题
b.解决乱码:
1.按照错误的方式进行编码
2.得到字节数组,在重新解码

常用API:

  	 char charAt(int index)  
  	 String concat(String str)  
  	 boolean contains(CharSequence s)  
  	 boolean endsWith(String suffix)  //判断结尾字符
  	 boolean equalsIgnoreCase(String anotherString) //忽略大小写比较
  	 int indexOf(String str)  
  	 boolean isEmpty()  
  	 int lastIndexOf(String str)  
  	 int length()  //字符串长度
  	 String replace(char oldChar, char newChar)  
  	 boolean startsWith(String prefix)  //判断开始字符
  	 String substring(int beginIndex)  //获取子字符串
  	 char[] toCharArray()  
  	 String toLowerCase()  //全部小写
  	 String toUpperCase()  //全部大写
  	 String trim()  //去首尾空格
  	 static String valueOf(Object obj)  

正则表达式 - 字符串的一些排列规则

  	常用标识符:
  		边界匹配器:
  			开头: 以 ^开头 -> /^
  			结尾: 以 $结尾 -> /$
字符类:
		[]:表示一个字符的位置
			[abc]:可以出现a,或者可以出现b,或者可以出现c
			[a-zA-Z]:所有的字母,包括大小写
			[]: 在[]中不需要添加\表示转义

	Greedy 数量词:
		+		 -> 	1 或 n
		?		 -> 	0 或 1
		*		 -> 	0 或 n
		{n}  ->   刚好出现n次
		{n,} ->   至少出现n次
		{n,m} ->  最少出现n次,最多出现m次

	预定义字符类:
		.			表示所有字符
		\d    表示[0-9]
		\w    表示[a-z0-9A-Z_]
				转义字符:
			\.   表示.本身
			\\   表示\本身
			\r
			\t
			\n

正则表达式常用API:
 String replaceAll(String regex, String replacement)//替换
 boolean matches(String regex)      //判断正则表达式
 String[] split(String regex)       //根据正则表达式切割

StringBuilder 和 StringBuffer

  1. StringBuilder 和 StringBuffer都是属于可变长字符串[在改变字符串的时候,不会产生新的对象]

    2.创建:
    new StringBuilder()
    new StringBuilder(“String”)

    3.常用API:
    StringBuilder append(Object obj) - 追加
    StringBuilder delete(int start, int end) - 删除
    StringBuilder insert(int offset, boolean b) - 插入
    StringBuilder replace(int start, int end, String str) - 替换
    StringBuilder reverse() - 反转

4.区别:
a.版本:
StringBuilder -> JDK1.5
StringBuffer -> JDK1.0

b.线程安全
StringBuilder: 线程不安全,效率高
StringBuffer: 线程安全,效率低

c.使用环境:
操作少量的数据使用 String
单线程环境下大量数据使用 StringBuilder
多线程环境下大量数据使用 StringBuffer

d.效率对比
String < StringBuffer < StringBuilder

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值