一、String类
1、字符串是一个特殊的对象。
2、字符串一旦初始化就不可以改变。
3、通过String类构造函数可以知道,将字节数组或字符串转换成字符串。
public class StringDemo {
public static void main(String[] args) {
//定义一个字符串。
String str = "abcd";
System.out.println("str="+str);
//多个引用指向同一个字符串
System.out.println("---------------");
String s1 = "itcast";
String s2 = "itcast";
System.out.println(s1==s2);
//两个内容相同,创建方式不同的字符串
System.out.println("--------------");
String s3 = "abc";
String s4 = new String("abc");
//s3和s4有什么不同呢?★★★★★重点掌握的知识点
/*
* s3创建,在内存中只有一个对象。
*
* s4创建,在内存中有两个对象。
*/
System.out.println(s3==s4);//false
// 因为String复写了equals方法,
// 建立字符串自己的判断相同的依据。通过字符串对象中的内容来判断的。
System.out.println(s3.equals(s4));//true,
}
}
二、String方法查找练习
1,字符串是否以指定字符串开头。结尾同理。
* boolean startsWith(string)
* boolean endsWith(string)
2,字符串中是否包含另一个字符串。
* boolean contains(string);
* int indexOf(string)//如果返回-1,表示不存在。
3,字符串中另一个字符串出现的位置。
* int indexOf(string)
4,将字符串中指定的字符串替换成另一个字符串。
* String replace(oldstring , newstring)
*
5,字符串如何比较大小?
*
6,将字符串转成一个字符数组。或者字节数组。
* toCharArray()
* getBytes()
7,将字母字符串转成大写的字母字符串。
* toUpperCase()
* toLowerCase();
8,将字符串按照指定的方式分解成多个字符串, "lisi,wangwu,zhaoliu"获取三个姓名。
* String[] split(string);
public static void main(String[] args) {
//1
String str = "StringDemo.java";
boolean b1 = str.startsWith("Demo");//false
//2
boolean b2 = str.contains("Demo");//CharSequence x = "Demo";//true
//4
String s = str.replace("haha", "Test");//没有被替换内容时,结果是原串儿。
System.out.println("s="+s);
//6
char[] chs = str.toCharArray();
byte[] bytes = str.getBytes();
//7
String upperString = str.toUpperCase();
//8
str = "lisi,wangwu,zhaoliu";
String[] names = str.split(",");
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
//5,字符串如何比较大小?
int result = "ab".compareTo("ab");//只要想让对象具备比较大小的功能只需实现Comparable接口。
System.out.println("result:"+result);
}
}
学习重点:要学会查找API文档,并熟练应用它,会是软件开发的效率大幅提高
## 三、Stringbuffer
StringBuffer:
* 1,是一个字符串缓冲区,其实就是一个容器。
* 2,长度是可变,任意类型都行。注意:是将任意数据都转成字符串进行存储。
* 3,容器对象提供很多对容器中数据的操作功能,比如:添加,删除,查找,修改。
* 4,必须所有的数据最终变成一个字符串。
* 和数组最大的不同就是:数组存储完可以单独操作每一个元素,每一个元素都是独立的。
* 字符串缓冲区,所有存储的元素都被转成字符串,而且最后拼成了一个大的字符串。
*
* 可变长度数组的原理:新建数组,并复制数组元素到新数组中。
*/
public class StringBufferDemo {
public static void main(String[] args) {
//1,创建一个字符串缓冲区对象。用于存储数据。
StringBuffer sb = new StringBuffer();
//2,添加数据。不断的添加数据后,要对缓冲区的最后的数据进行操作,必须转成字符串才可以。
String str = sb.append(true).append("hehe").toString();
// sb.append(“haha”);
// sb.insert(2, “it”);//插入
// sb.delete(1, 4);//删除
// sb.replace(1, 4, “cast”);
// sb.setLength(2);
System.out.println(sb);
// String s = “a”+5+‘c’;//原理就是以下这句
// s = new StringBuffer().append(“a”).append(5).append(‘c’).toString();
}
}
## 四、StringBuilder 与Stringbuffer的区别
* StringBuilder:非同步的。单线程访问效率高。
* StringBuffer:同步的,多线程访问安全。
——————————————————————————
个人觉得掌握如何API文档是很重要的,这更符合java面向对象的思想