黑马程序员第二节:String类和Stringbuffer
3527 点击·0 回帖
![]() | ![]() | |
![]() | 1.String 类是不可被继承的 String s=new String (); String s1=""; //多用 两者是相同的 2.String s="abc" //s 是一个类类型的变量,"abc"是一个对象 ,字符串是一个特殊的对象 //字符串最大的特点:一旦被初始化,就不能改变了 3.String s1=new String("abc"); String s2="abc"; s1 和s2有什么区别? s1在内存中只有一个对象 s2在内内存中有两个对象 4.字符替换 String s="Hello.java"; String s1=s.replace('a','A'); System.out.print("s="+s); System.out.print("s1="+s1); 打印s的结果还是Hello.java 打印s1的结果是Hello.java 为什么s的值没有改变? 答:字符串一但被赋值了,则不可改变的, 改变的只是. 5.切割(分隔符) String []split(); 6.字串 String s="hello.java" System.out.print(s.substring(4));//从指定数组下标位置到字符串结尾 System.out.print(s.substring(2, 4));//包含头,但不包含尾。即从指定数组的2下标到4下标的前一个结束 7.转换 7.1 将字符串转换成大写或者小写 String toUpperCase 7.2 去除字符串中的空格 trim(); 7.3 比较字符串大小 String s="abc"; String s2="ABC"; System.out.println(s.compareTo(s2)); 如果比较结果为一个正整数。则s >s2 ; 如果这两个字符串相等,则结果为 0 如果比较结果为一个负整数。则s >s2 . 8.去除空格的实例去除两边的空格 8.1 String str=" we are "; public static String Trim(String str) { int start = 0; int end =str.length() - 1; while (start < end ;; str.charAt(start) == ' ') { start++; } while (str.charAt(end) == ' ') { end--; } return str.substring(start, end + 1); } 8.2 如何将单词与其它字符之间将多个空格转换成一个空格 String str1="we are boy hkaf 8888"; str1=str1.replaceAll(" {2,}", " ");//意思是说将出现2个或者是2个以上的空格替换成1个空格 System.out.println(str1); 8.3如何除去左边的空格 String s=" java com "; System.out.println(s.substring(s.indexOf("j"), s.length())); } 运行结果: java com 9.如何将字符串反转 String s="上海好美"——>"美好海上" char[] ch; ch=s.toCharArray(); for(int j=s.length()-1;j>=0;j--){ System.out.print(ch[j]); } 10.StringBuffer 字符串缓冲区 CURD C ——>create U——>update R——>read D——>delete StringBuffer 和 StringBuilder StringBuffer 线程同步的 www.atcpu.com StringBuilder 线程不同步(1.5才出现的) 如果是单线程的则选择 StringBuilder 因为可以提高效率 以后开发建议使用 StringBuilder 两者方法基本相同,区别在于一个有锁(同步),一个没有锁 11.基本数据类型包装类 byte Byte short Short int Integer char Character 11. 1 把一个整数封装成对象好处体现在:最大值和最小值是个固定值,不需要刻意去记,Integer.MAX_VALUE 11 .2 基本数据类型最常见的用法就是基本数据类型和字符串之间的转换 (1) 基本数据类型装换成字符串最简单的方式: 基本数据类型+"" (2)专业转法: Integer.toString(88); (3)十进制转换成其他进制 toBinaryString(); toHexString(); toOctalString(); int num=Integer.paseInt("110",10) //将二进制转换成10进制 int num=Integer.paseInt("16",2) //将10进制转换成2进制 11.JDK1.5新特性只自动拆箱装箱机制 问: Integer x=new Integer("888"); Integer y=new Integer (888); x==y? false //两个不同的对象,所以指向的地址不同,当然是false了 x.equals(y)? true JDK1.5升级后为了简化书写 可以直接写为:Integer x= 888;//=new Integer("888"); Integer x= 888;等号左边是数据类型,右边必然是对象,因为类类型变量必然指向对象 x=x+2 //x进行了自动拆箱,有对象变成基本数据类型,和2进行加法运算,在自动装箱赋给x //拆箱原理x.Valueof(),当x为null时要进行判断,以为x为空时,不会调用Valueof方法 (2)Integer x=127 Integer y=127 x==y? //true 因为不同指向同一对象, Integer m=128; Integer n=128; m==n? //false 以为对于JDK1.5的新特性来说,对于不在byte(-128 到 127)范围类的数值,它会从新开辟一个新空间 //而不会认为该数值已存在 | |
![]() | ![]() |