灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2593回复:0

黑马程序员第二节:String类和Stringbuffer

楼主#
更多 发布于:2012-09-08 09:43

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)范围类的数值,它会从新开辟一个新空间
                //而不会认为该数值已存在



喜欢0 评分0
游客

返回顶部