第十二天总结0404

来源:互联网 发布:brett anderson知乎 编辑:程序博客网 时间:2024/05/22 09:49

第十二天总结
1.String类
描述字符串的类就是String类
字符串是一个特殊的对象,字符串一旦被初始化就不能被改变
String s="abc";这里只有一个对象
String s1=new String("abc");这里有两个对象,new了一个对象,abc也是一个对象,传给了new的构造函数
这两种写法在使用上没区别但是s和s1的内存地址值是不一样的s==s1得到的结果是false
equals方法在这里被复写了,在String中比较的是两个对象的内容
把一个字符数组转化成字符串有两种方式,一种是构造函数,另外一个是copyValueOf方法
查阅API文档的时候,在寻找方法的时候,最快的方法是通过返回值类型查找
字符序列接口CharSequence,String是他的子类
class Demo1
{
 public static void main(String[] args)
 {
  String str="abcd";
  String str1="efg";
  String str2="abca";
  char[] arr={'a','b','v','d'};
  System.out.println(str.codePointCount(0,2));//0和2角标之间的字符数量,包含0不包含2
  System.out.println(str.codePointAt(0));//零角标处的字符所对应的Uniclde码
  System.out.println(str.codePointBefore(2));//2角标之前的字符所对应的Uniclde码
  System.out.println(str.charAt(0));//返回0角标对应的字符
  System.out.println(str.concat(str1));//把两个字符串连接起来,str1放在str的尾部
  System.out.println(str.contains("cb"));//判断该字符串中是否有cd这个字符序列
  System.out.println(String.copyValueOf(arr,1,3));//将arr数组从角标1位开始取,往后取三位得到的子数组转化成字符串。包含角标1位
  System.out.println(str.endsWith("cd"));//判断该字符串是否以cd结尾
  System.out.println(str.equals("abcd"));//讲字符串和字符串进行比较
  System.out.println(str.equalsIgnoreCase("ABCD"));//忽略大小写比较
  System.out.println(str.indexOf('b'));//返回字符串中第一次出现b的位置角标
  System.out.println(str2.indexOf('a',2));//返回字符串从角标2开始第一次出现a的位置角标,包含2角标位
  System.out.println(str.isEmpty());//判断该字符串是否没有值
  System.out.println(str2.lastIndexOf('a',3));//返回从2角标为开始向前最后一个出现a的位置角标,包含2
  System.out.println(str.replace('b','a'));//将该字符串中的b替换成a
  System.out.println(str.replace("ab","ba"));//讲该字符串中的ab替换成ba
  System.out.println(str.startsWith("ab"));//判断该字符串是否以ab开始
  System.out.println(str.substring(2,4));//取该字符串角标2到4的子字符串,包含2不包含4
  char[] cha=str.toCharArray();//讲一个字符串转化成一个字符数组
  System.out.println(cha[0]);
  System.out.println(new String("ABCD").toLowerCase());//讲一个字符串小写
  System.out.println(str.toUpperCase());//将一个字符串大写
  System.out.println(new String("  abcd   ").trim());//取出一个字符串前后的空
  System.out.println(new String(String.valueOf(57)).length());//讲一个int数转换成字符串,并输出长度

 }
}
2、StringBuffer
字符串缓冲区
在JDK1.5以后,如果是单线程的用StringBulider,比较效率,但是多线程就必须用StringBuffer了,因为StringBulider会抛出异常
StringBuffer是可变长度的,他可以把不同类型的数据都变成字符串
用append添加方法返回的还是一个SrtingBuffer类型的,如果要转化成String类型的,只需要在后面加一个.String()
dlete清空方法,结尾角标不包含dlete(int start,int end)
dleteCharAt(int index)删除某角标的内容
insert(int offset,char i)在某一位插入某个字符
replace(int start,int end,String str)开始为到结束位被改变成指定的字符串
reverse()反转
setCharAt(int index,char ch)修改方法,修改某一个角标为的字符
3.基本数据类型的对象包装类
除了int和char类型的,其他类型的对象包装类名和数据类型名一样的,只是首字母大写
int写成Integer,char写成Character
parseInt(String)可以把一个数字字符串解析成int型数字
parseShotr(String)同上
intValue()可以把Integer转化成一个int型的数值
parseInt(String s,int x)x代表字符串S的进制,就是把x进制的S转化成整数
基本数据类型对象包装类的出现,是将基本数据类型进行描述,变成对象的好处,是可以在其中定义属性和行为。来操作该基本数据类型。
基本数据类型对象包装类通常用于:字符串转化成基本数据类型的操作
xxx paseXxx(String)把字符串变成基本数据类型
srt.toString(xxx)把基本数据类型转化成对象,也可以直接加一个空字符串得到
在JDK1.5以后的新特性:
Integer i=5;//等同Integer i=new Integer(5);//自动装箱,前面i是一个类类型的引用
i=i+4;//这个i是对象,4是个整数//自动拆箱,把i自动变成基本数据类型和4运算,拆箱的动作调用方法了相当于,i.intValue()//在拆箱后运算结束后,左边i又进行了一次装箱
System.out.println(i);
但是这种写法有一个弊端
Interget x=a;
Interget y=b;
如果a=b并且在范围-128到127之间的时候,x==y是true,因为在1个字节之间他们new的是一个对象,所以他们的地址值是一样的