------- http://www.itheima.comjava培训、android培训期待与您交流!-------
一、java API
1、String
String是一个类,且不能有子类(被final修饰),不可复写其功能。
字符串是一个特殊的对象,字符串一旦初始化就不能被改变。
(1)String s1 = “abc”; s1是类类型变量,一定指向abc对象。若s1=”kk”;s1只是指向了kk,而s1未变。
String s2 = new String(“abc”); s2在堆内存中有两个对象。
此时,s1==s2;是错的,比较的是对象的地址。
s1.equals(s2);是正确的,比较的是对象中的内容。
(2)字符串的操作
A、获取
String s1 = "wangtingting"; //获得字符串的长度(字符串中包含的字符数) int x = s1.length(); //根据字符串的索引(位置)获取该位置的字符 char ch1 = s1.charAt(3); //根据字符获取某个字符在该字符串中的位置(返回的是该字符第一次出现的位置) int i1 = s1.indexOf('a'); //获取从指定位置开始,该字符在字符串出现的位置 int i2= s1.indexOf('i', 6); //i字符在该字符串中第一次出现的位置 int i3 = s1.indexOf('i'); //n字符串在该字符串中第一次出现的位置 int i4 = s1.indexOf("n"); //可以索引该字符串第一次在整个字符串出现的位置,如果返回-1,则该字符串p不在整个字符串中存在 //也可用于对指定字符串判断是否存在 int i7 = s1.indexOf("p"); //n该字符串从指定位置(索引3)开始,在字符串中出现的位置(且是该字符串在指定位置后的第一次出现的位置) int i5 = s1.indexOf("n",3); //该字符在整个字符串中最后出现的位置 int i6 = s1.lastIndexOf('i'); System.out.println(i7);
B、判断
String s2 = "wangtingting"; //字符串中是否包含某一字串 boolean b1 = s2.contains("ting"); //判断字符串是否为空(字符串长度是否为0) boolean b2 = s2.isEmpty(); //判断该字符串是否是以字符串ti开头 boolean b3 = s2.startsWith("ti"); boolean b4 = s2.endsWith("ng"); //判断给出的字符串是否和s字符串相同 boolean b5 = s2.equals("wangtingting"); //判断给出的字符串是否和s字符串的内容相同,并忽略大小写 boolean b6 = s2.equalsIgnoreCase("Wangtingting"); System.out.println(b6);
C、转换
char[] arr = {'e','f','h','l','m','o','r','y'}; //使用构造函数的方法将字符数组转换成字符串 String str1 = new String(arr); //将字符数组中的一部分转换成字符串。 起始位 转换的个数 //String(char[] value, int offset, int count) String str2 = new String(arr,3,4); //str2 =arr.copyValueOf(arr); System.out.println(str2); //将字符串转成字符数组 byte[] bt = {'g','r','z','y','j','m'}; String str3 = new String(bt); System.out.println(str3.toCharArray());
D、切割和替换
public static void splitAndReplace() { //替换 String str3 = new String("wangting"); //用新字符串替代原字符串中的内容 //若替换的字符串不存在,则返回原字符串"你好" System.out.println(str3.replace("ting","shan")); //以,将字符串切割 String stri = "wangwu,lisi,zhangsan"; String[] arr1 = stri.split(","); for (int x = 0;x
2、StringBuffer 字符串缓冲区,相当于一个容器,用于存储字符串该字符串缓冲区的 长度可以变化/可操作多个数据类型/最终会通过toString方法转变成字符串。
(1)添加
StringBuffer sb = new StringBuffer("wangtingting"); //在已有字符串的末端添加内容 System.out.println(sb.append("你好")); System.out.println(sb.append(true).append(123)); //sb和sb1指向的是同一个对象 StringBuffer sb1 = new StringBuffer("wangtingting"); System.out.println(sb==sb1);
(2)删除
//删除从start到end之间的字符,包含头,不包含尾 StringBuffer sb2 = sb.delete(4,8); //删除指定位置的字符串 StringBuffer sb3= sb.deleteCharAt(1); //清空缓冲区 StringBuffer sb4 = sb.delete(0,sb.length()); //获取4位置上的字符 char ch2 = sb.charAt(4); System.out.println(ch2);
(3)修改
StringBuffer sb0 = new StringBuffer("wangtingting"); //在1位置上插入hello这个字符串 System.out.println(sb0.insert(1,"hello")); //将字符串ting替换成字符串shan 包含头,不包含尾 System.out.println(sb0.replace(8,12,"shan")); 将字符串中的某个字符替换 sb0.setCharAt(1,'o'); System.out.println(sb0.toString());//或直接打印sb0
(4)反转
将整个字符串反转
System.out.println(sb0.reverse());
(5)将缓冲区中的指定数据存储到指定字符组中
//void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) StringBuffer strb = new StringBuffer("wangshan"); char[] chs = new char[5]; strb.getChars(4,8,chs,1); for (int x = 0;x
3、StringBuilder
StringBuilder也是字符串缓冲区,只是在JDK1.5版本之后出现的新特性。
StringBuffer是线程同步的
StringBuilder是线程不同步的
升级原因: 提高效率、简化书写、提高安全性
基本数据类型对象包装
基本数据类型byte、short、int、long、boolean、float、double、char对应引用数据类型Byte、Short、Integer、Long、Boolean、Float、Double、Character
将数据类型对象包装的作用:用于基本数据类型和字符串之间做转换。
基本数据类型-->字符串
System.out.println(3+" ");
System.out.println(Integer.toString(3));
字符串-->基本数据类型
int num = Integer.parseInt("123");
boolean b = Boolean.parseBoolean("true");
Integer i = new Integer("123"); //打印结果 123
int num2 = i.valueOf("123"); //123
System.out.println(num2);
十进制-->其他进制
System.out.println(Integer.toBinaryString(-6));
System.out.println(Integer.toHexString(60));
System.out.println(Integer.toOctalString(8));
其他进制-->十进制
//将110转换成十进制、二进制、八进制的数
System.out.println(Integer.parseInt("110",10));
System.out.println(Integer.parseInt("110",2));
System.out.println(Integer.parseInt("110",8));
基本数据类型新特性
(1)
Integer x = new Integer("123");
Integer y = new Integer(123);
System.out.println(x==y); //false
System.out.println(x.equals(y));//true
x和y的地址值不同,
但x和y指向的内容相同。
(2)
Integer x1= 4;
System.out.println(x1+2);
自动装箱:x1代表的是一个对象,是引用数据类型,由于自动装箱功能,x1可以直接这样写。
自动拆箱:x1+2 ,将类类型变量直接作为值进行运算。
---------- http://www.itheima.comjava培训、android培训期待与您交流! ----------