String类和StringBuilder
Scanner键盘录入字符串:
String next():遇到空格或者tab键,就不再录入了;
String nextLine():以回车作为录入结束标记
如果键盘录入所有的数据均是字符串,用nextLine();
如果数据除了字符串,还有其他数据类型,用next();
String字符串虽然不可以更改(内容),但是可以被共享;
字符串常量池:双引号创建字符串对象时,会检查常量值中是否存在该数据;不存在,则创建;存在,则复用。
不同的JDK版本,则常量池存在位置不同;JDK7之前,常量池在方法区;JDK7开始以及以后的版本,常量池在堆内存;
常量优化机制:给一个变量赋值,如果等于号的右边是常量的表达式并且没有一个变量,那么就会在编译阶段计算该表达式的结果,然后判断该表达式的结果是否在左边类型所表示范围内,如果在,那么就赋值成功,如果不在,那么就赋值失败。但是注意如果一旦有变量参与表达式,那么就不会有编译期间的常量优化机制**
字符串比较
public boolean equals(object anobject):将此字符串与指定的对象比较。
public boolean equalsIdnoreCase(object anobject):将此字符串与指定的对象比较,且忽略大小写。
字符串的遍历
public char[] toCharArray():将此字符串转换为一个新的字符数组;
ctrl+alt+m抽取成一个方法;类中方法不加static,如果方法与主方法平级,就不要带static,否则就带static。
public charAt(int index):返回指定索引处的字符。
public int length():返回字符串的长度;
String类的截取-替换-切割方法
public String substring(int beginIndex):根据传入的索引开始做截取,截取到字符串的末尾;
public String substring(int beginIndex,int endIndex):根据传入的开始和结束索引进行截取,包含头,不包含尾。
public String replace(看API文档)、String[] split(String[] regex):根据传入的字符串作为规则,切割当前字符串,'.'代表任意字符,通配符,想要实现‘.’切割的话,
用’\\.';
StringBuilder类
StringBuilder 引入提高了字符串操作效率;
StringBuilder一个可变的字符序列;StringBuilder是字符串缓冲区,将其理解为容器,可以存储任意类型数据,只要进入这个容器,全部变成字符串。
打印StringBuilder对象名的时候也是字符串;
构造方法:
无参(初始容量为16个字符),超出16,自动扩容;
带参(String str):构造一个字符串生成器,并初始化为指定的字符串内容。容器在创建好之后就带有参数。
常用成员方法:
public StringBuilder append(任意类型) 添加数据,并返回对象本身;
链式编程:调用的方法,返回的结果是对象,就可以继续向下调用方法;s.append().append().append()…
public StringBuilder reverse()反转容器中的内容;
public String toString() 通过toStirng()就可以实现把StringBuilder转换为String
public int length()返回长度(字符出现的个数)
StringBuilder的实例用于多个线程是不安全的,StringBuffer是线程安全的。除此之外,其他的相同。线程安全的一般效率偏低。