字符数组对象,被默认作为字符串输出
什么是字符串:一组字符数据和相关算法的封装
特点:字符串对象是不可变的
字符串操作结构与原字符串不同一定是新字符串对象
String 是char[]存储的数据+对char[]进行计算的算法 trim() toUpperCase()....
worm 是 Cell[]存储的数据+对Cell[]数组进行的算法 creepp() hit() contains()....
字符串的静态优化现象
1 字符串是很多性能优化现象
A 人能够看到的信息大多是字符串,但是计算机内部没有任何字符一切都是二进制数据
B 字符串的处理性能严重影响软件的性能表现
C Java字符串进行了大量的优化处理
2 Java中静态字符串(常量、字面量,以及常量运算结果)
都在静态池中创建,尽可能使用同一个字符串实例
字符的编码问题
1 计算机中基本的数据表示为字节(8位)
2 java中文本(String,char)数据,是16为整数
3 如果将文本变为基本8位字节数据(文件、互联网)
需要进行适当的转换(拆分)方式称为:文本的编码
4 拆分方案称为:编码方案(encoding)
5 将文本的编码数据byte[] 反向合并为16位字符数据称为文本的解码
6 编码和解码的方案要一致,如果不一致就出现“乱码”
7 java String API提供了编码和解码支持方法(算法)
编码方法:getBytes()
解码方法:new String()
8 常见编码方案:GBK UTF-8 UTF-16BE ISO8859-1 BIG台湾地区的编码
unicode编码
1 是 国际组织,将地球上的每个文字分配了一个数数字表示
这个数字编码称为unicode,80000+字符!
2 java字符类型16位整数支持65536 字符,支持unicode中常用的部分。java是支持国际化
UTF-16BE不常用 ,好理解
1 采用定长2byte编码,中文英文都是2个byte
2 支持字符65535,不能支持全部的unicode
3 缺点 英文编码浪费 *
String str = "ABC中";//A:00000000 01000001
B:00000000 01000010
C:00000000 01000011
中:0100111000101101
UTF-8 编码方案
1 采用变长方案:1~5Byte
英文:1Byte
中文:3Byte
2个Byte,4Byte的文字我不认识
2 支持80000+
3 如果文件内容以英文为主的话很节省
4 是国际化最优方案 *
GBK编码方案(中国国家标准)GB2312 是GBK的子集(6000+字)
1 变长编码1~2Byte
英文:1Byte 中文:2Byte
2 支持20000+中文
3 是中国本地化最优方案
ISO8859-1编码方案,西欧编码,只支持英文,单字节编码,不支持中文
1 256个字符
java String API 正则表达式支持方法
matchs()检查当前字符串对象是否于给定的正则规则匹配
split()将当前字符串对象按照正则规则拆分
replaceAll()替换所有