1111111111111111

07_基本数据类型和包装类

1. String类

   String类是final类

     String对象是一个特殊的对象,一旦初始化就不可被改变

     String str = "abc" 与 String str = new String("abc");的区别.

          一个是内存中只存在一个对象"abc",一个是存在两个对象"abc"和 new String("abc").

     String类复写了Object类中的equals方法,不是比较地址而是比较里面的字符串是否相同.


1.获取

     int length()获取长度

     char charAt(int index)获取某个位置上字符

     int indexOf(int ch):返回从ch在字符串中第一次出现的位置,-1表示没有找到

     int indexOf(int ch,int fromIndex):返回从fromIndex开始, ch在字符串中第一次出现的位置,-1表示没有找到

     int indexOf(String str):返回str在字符串首次出现位置,-1表示没有找到

     int indexOf(String str, int fromIndex):从fromIndex开始返回str在字符串首次出现位置,,-1表示没有找到

2.判断

     boolean contains(str)字符串是否包含某一字串

     boolean isEmpty():判断是否为空,原理是判断length是否为0

     boolean startsWith(str):是否指定位置开头

     boolean endsWith(str):是否指定位置结尾

     boolean equals(str):判断字符串内容是否相同,复写了Object的equals方法.

     boolean equalsIngoreCase(str):忽略大小写的判断内容是否相同

3.转换

     3.1 将字符数组转字符串

          构造函数: String (char[] buf)

          构造函数: String (char[] buf,offset, count) 

          静态方法:

               static copyValueOf(char[] buf);

               static copyValueOf(char[] buf,int offset, int count);

               static ValueOf(char[] buf);

               static ValueOf(char[] buf,int offset, int count);

     3.2字符串转字符数组

          char[] toCharArray()

     3.3将字节数组转字符串

          构造函数: String (byte[] buf)

          构造函数: String (byte[] buf,offset, count)

     3.4字符串转字节数组

          byte[] getBytes()

     3.5基本数据类型转字符串

          static String valueOf(int);          

          static String valueOf(double);    

          //3+"" //String.valueOf(3);

4.替换

     String replace(char oldch,char newch); 将字符串中的内容进行替换

     String replace(String s1,String s2);

   String replaceAll(String regex, String replacement);按照给定的replacement替换此字符串所有匹配给定regex的子字符串.

   String repalceFirst(String regex, String replacement);按照给定的replacement替换此字符串所有匹配给定regex的第一个子字符串.

5.切割

     String[] split(regex)

6.获取子串.

     String substring(int beginIndex, int endIndex)//包含begin 不包含end 。如果角标不存在则出现越界异常

     String substring(int beginIndex);

7.转换

     将字符串中的字母转成大小写。

          String toUpperCase():大写

          String toLowerCase():小写

     将字符串两端的空格去除。

          String trim();

     字符串自然排序比较

          int compareTo(str);


2. StringBuffer类

     字符串的组成原理就是通过该类实现的

     可对字符串内容进行修改

     是一个容器

     很多方法与String相同

     是可变长度的.

     最终可通过toString方法返回字符串


既然是一个容器对象。应该具备什么功能呢?

 增删改查  C(create)U(update)R(read)D(delete) 

 1,添加:

          StringBuffer append(data);将参数的字符串表示形式追加到序列。

          StringBuffer insert(index,data);在指定index位置插入

 2,删除:

          StringBuffer delete(start,end):包含头,不包含尾。 案例:清空缓冲区sb.delete(0,sb.length());

          StringBuffer deleteCharAt(int index):删除指定位置的元素 

 3,查找(获取):

      char charAt(index);

      int indexOf(string);

      int lastIndexOf(string);

      int length()

      String subString(int start, int end); 而不是StringBuffer

 4,修改:

      StringBuffer replace(start,end,string); 将start到end-1替换成对应的String

      void setCharAt(index,char);

5. 反转

     StringBuffer reverse();

6. 将缓冲区指定数据存储到指定的字符数组中

     void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin): sb的srcBegin到srcEnd-1存到dst字符数组中,按从desBegin开始存


 jdk1.5以后出现了功能和StringBuffer一模一样的对象。就是StringBuilder

      不同的是:

          StringBuffer是线程同步的。通常用于多线程。

           StringBuilder是线程不同步的。通常用于单线程。 它的出现提高效率。


 jdk升级的三个原因:

     1,简化书写。

     2,提高效率。

     3,提高安全性。


八大基本数据类型及其包装类

byte          Byte

short         Short

int             Integer

long          Long

boolean    Boolean

char          Character

float          Float

double      Double

基本数据类型 转 字符串

     基本数据类型+""

     基本数据类型.toString(基本数据类型值); //Integer.toString(123);

字符串转基本数据类型

     xxx a = Xxx.parseXxx(String)

     例如int a = Integer.parseInt("123");

            double d = Double.parseDouble("12.33");

            boolean b = Boolean.parseBoolean("true");

int十进制转其他进制字符串

     转二进制static String toBinaryString(int i)

     转八进制static String toOctalString(int i)

     转十六进制static String toHexString(int)

任意进制字符串位置int十进制.

     int a = Integer.parseInt("123"); //a=123

     int a = Integer.parseInt("123",10); //a=123,与上文一样

     int b = Integer.parseInt("ff",8); //b=255

或者通过把String类型先封装成Integer对象,然后 对象.intValue()方法得到.


Integer x = new Integer(4);

等价于 Integer x = 4;//自动装箱

x = x + 2;//又能 x.intValue()自动拆箱进行运算再装箱. 


Integer m  = 128;

Integer n = 128;

syso(m == n);

Integer a= 127;

Integer b= 127;

syso(a== b);

结果分别为false和true

     第一个结果为false很好理解,因为两个不同的对象

     而第二个由于新特性,byte范围类128~127不会开辟新空间.

posted @ 2014-09-24 18:00  acc8226  阅读(260)  评论(0编辑  收藏  举报