字符相关
一、字符类型
char是Java的一种基本数据类型,也是Java中的保留字。char在Java中占两个字节,无符号类型,是16位二进制Unicode字符。
char是类型表示的是字符,不是字符串;
char类型变量值只能用单引号来表示,不可使用双引号;
即表示单引号内的单个字符。
1 | /** |
二、字符串类
1、String
(1)String类表示字符串,是字符串常量(另:常量池),其值在创建后不能改变,因此Stirng对象创建后是不可变的,直至到被GC回收。
(2)创建String对象
1 | public class StringTest { |
(3)常见方法
I.获取字符串长度与某个字符
1 | String str = "Java Code"; |
II.str.compareTo方法
该方法的作用是比较两个字符串的大小,比较的原理是依次比较每个字符的字符编码。首先比较两个字符串的第一个字符,如果第一个字符串的字符编码大于第二个的字符串的字符编码,则返回大于0的值,如果小于则返回小于0的值,如果相等则比较后续的字符,如果两个字符串中的字符编码完全相同则返回0。
1 | String data1 = "Javi"; |
III.截取方法
1 | String str = "Java Code"; |
IV.连接方法
1 | String st1 = "Java"; |
V.查找方法
1 | String str = "Java Code"; |
VI.replace方法
该方法的作用是替换字符串中所有指定的字符,然后生成一个新的字符串。经过该方法调用以后,原来的字符串不发生改变。
1 | String str = "Java Code"; |
VII.split方法
以特定的分隔符分隔字符串,生成一个 数组。
1 | String data = "java,c++,c,c#"; |
2、Stringbuffer
同样是字符串类,Stringbuffer 是字符串变量,实现方式与String有所不同,在进行处理字符串时不生成新的对象。在存储和操作字符串操作比String更合适。
I.字符串拼接
1 | StringBuffer data = new StringBuffer("The");//创建对象 |
II.deleteCharAt方法
此外,字符串操作相关的方法还有insert插入、reverse反转倒序、setCharAt修改某个下标上的字符、trimToSize将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费。
3、Stringbuilder
Stringbuilder和StringBuffer基本类似,相关方法也一样
4、String、StringBuffer和Stringbuilder的具体区别
[以下复制,来自其他博主总结]
String:字符串常量
StringBuffer:字符创变量,线程安全
StringBuilder:字符创变量,非线程安全
如果要操作少量的数据用String
单线程操作字符串缓冲区下操作大量数据StringBuilder
多线程操作字符串缓冲区下操作大量数据StringBuffer
5、其他[引用]
I.字符串比较"=="与equal()方法
"==" 判断两个引用的是不是同一个内存地址(同一个物理对象).
equals 判断两个字符串的值是否相等.
除非你想判断两个string引用是否同一个对象,否则应该总是使用 equals()方法.
II.密码及其他问题上char[]优先于String原因
String是不可变对象, 意思是一旦创建,那么整个对象就不可改变. 即使新手觉得String引用变了,实际上只是(指针)引用指向了另一个(新的)对象.
而程序员可以明确地对字符数组进行修改,因此敏感信息(如密码)不容易在其他地方暴露(只要你用完后对char[]置0).