字符串
String ,StringBuilder,StringBuffer
StringBuffer是java 较早版本函数,因为考虑了线程同步,所以效率比较低。
StringBuilder是jdk1.5新加。不考虑线程同步。
一组不可改变的unicode的字符序列。
String的底层是一个char数组。
StringBuffer,StringBuilder,byte数组可以通过构造转化成数组。
采用的是设计模式中的不变模式,值永远不会改变。
不变的优点:String s1="abc"; String s2="abc";String s3="abc";
多个客户端操作不会改变。
字符串常量值 "abc"(字面值,在池里的具体的值),永远不变。做到了池里面。池:常驻内存,不被回收。
String (String origin);开辟多个副本。
charAt ,compareTo和equals区别大于小于等于返回int,正整负整0,compareToIgoreCase,
concat(无用,+的纠错性更好) ,endsWith,
equals,hashCode,getBytes,indexOf(str),length,match,replace(CharSequence,CharSequence)可以传递一个字串。因为CharSequence是String的父接口。
split ,startsWith,subString(开始的时候包括,结束的时候不包括,前闭后开(java规范)) toLowerCase ,toUpperCase.trim,valueOf(是静态方法),
需要不看API也可以使用
常用方法:equals length indexOf startsWith split(拆分),replace,mathes(匹配,输入验证。),trim(比如char(10)常用,因为在数据库里存储的可能不满10位,都含有空格),
toLowerCase..
b=b.subString(1,2);
String是不可改变的,所以要重新赋值来改变
例:
//打印在一个字符串中所有出现"ddd"的位置。
String s3="abcdddabcddddabcddd";
int index = 0;
for (int i = 0; i < s3.length(); i = i++) {
index = s3.indexOf("ddd", index);
if (index == -1)
break;
System.out.println(index);
index++;
}
封装类:
基本类型在内存中只保存值,为了统一面向对象及增加它们的操作。引入了 封装类。