关闭

Java基础日记———String

标签: stringbufferstring包装类
140人阅读 评论(0) 收藏 举报
分类:
一.概述
    Java中万物皆对象。
    字符串是一个特殊的对象。
    字符串一旦初始化就不可以被改变。
    例如A是一个类。A X则是创建一个引用变量,X=NEW A()则是在内存中建立一个对象(开辟了1片空间),对象的模板就是A(可以理解为在空间里复制了A类里的变量到空间里去)此时就可以使用引用变量X去引用对象中的变量了
    String s1 = "abc"; 
    String s2 = new String("abc"):
    s1在内存中只有一个对象,s2在内存中存在两个对象。
    内存中存在一个常量池,s1字符会找常量池。
二.方法介绍
1.String方法:
(1).获取。
    1.1 字符串中的包含的字符数,也就是字符串的长度。
          int length():获取长度。
    1.2 根据位置获取位置上某个字符。
          char charAt(int index):
    1.3 根据字符获取该字符在字符串中位置。
          int indexOf(int ch):返回的是ch在字符串中第一次出现的位置。
          int indexOf(int ch, int fromIndex) :从fromIndex指定位置开始,获取ch在字符串中出现的位置。
          int indexOf(String str):返回的是str在字符串中第一次出现的位置。
          int indexOf(String str, int fromIndex) :从fromIndex指定位置开始,获取str在字符串中出现的位置。
          int lastIndexOf(int ch) :
  (2)判断。
     2.1 字符串中是否包含某一个子串: boolean contains(str)。
     特殊之处:indexOf(str):可以索引str第一次出现位置,如果返回-1.表示该str不在字符串中存在。
     所以,也可以用于对指定判断是否包含。
         if(str.indexOf("aa")!=-1)
      而且该方法即可以判断,有可以获取出现的位置。
     2.2 字符中是否有内容。
          boolean isEmpty(): 原理就是判断长度是否为0.
     2.3 字符串是否是以指定内容开头。
         boolean startsWith(str);
     2.4 字符串是否是以指定内容结尾。
          boolean endsWith(str);
     2.5 判断字符串内容是否相同。复写了Object类中的equals方法。
          boolean equals(str);
     2.6 判断内容是否相同,并忽略大小写。
          boolean equalsIgnoreCase();
 (3)转换。
     3.1 将字符数组转成字符串。
         构造函数:String(char[])
         String(char[],offset,count):将字符数组中的一部分转成字符串。
      静态方法:
         static String copyValueOf(char[]  data);
        static String copyValueOf(char[] data, int offset, int count)
         static String valueOf(char[]):
     3.2 将字符串转成字符数组。**
          char[] toCharArray():
     3.3 将字节数组转成字符串。
           String(byte[])
           String(byte[],offset,count):将字节数组中的一部分转成字符串。
     3.4 将字符串转成字节数组。
           byte[] getBytes():
    3.5 将基本数据类型转成字符串。
          static String valueOf(int)
          static String valueOf(double)
          //3+"";//String.valueOf(3);
          特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
  (4)替换
         String replace(oldchar,newchar);
  (5)切割
         String[] split(regex);
  (6)子串。获取字符串中的一部分。
         String substring(begin);
         String substring(begin,end);包含头 不包含尾。
  (7)转换,去除空格,比较。
     7.1 将字符串转成大写或则小写。
          String toUpperCase();
          String toLowerCase();
     7.2 将字符串两端的多个空格去除。
          String trim();
         7.3 对两个字符串进行自然顺序的比较。
          int compareTo(string);//ASCII码的值相减。
      数组获得一个字符串:
            String str = String.copyValueOf(k);//将数组变为字符串。
            或者new String(k);

举例:对字符串中字符进行自然顺序排序。
思路:
1,字符串变成字符数组。
2,对数组排序,选择,冒泡,Arrays.sort();
3,将排序后的数组变成字符串。
代码示例:

   public static void main(String[] args) {
            System.out.println(getOrder("sgadxcvxcvags"));
     } 
 private static String getOrder(String s) {
      char[] arr = s.toCharArray();
      for(int x=0;x<arr.length-1;x++){
           for(int y=0;y<arr.length-x-1;y++){
           if(arr[y]>arr[y+1]){
           char temp = arr[y+1];
           arr[y+1] = arr[y];
           arr[y] = temp;
        }
     }
  }
      String s2 = new String(arr);
      return s2;
} 
2.StringBuffer:字符串缓冲区
它是一个容器,里面存储的字符串即字符串缓冲区。
特点:
    1,长度是可变化的。
    2,可以字节操作多个数据类型。
    3,最终会通过toString方法变成字符串。
基本方法:  
(1)存储。
     StringBuffer append():将指定数据作为参数添加到已有数据结尾处。
     StringBuffer insert(index,数据):可以将数据插入到指定index位置。
(2)删除。
     StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。
     StringBuffer deleteCharAt(index):删除指定位置的字符。
(3)获取。
      char charAt(int index)
     int indexOf(String str)
      int lastIndexOf(String str)
      int length()
     String substring(int start, int end)
(4)修改。
     StringBuffer replace(start,end,string);
     void setCharAt(int index, char ch) ;
(5)反转。
     StringBuffer reverse();
(6) 将缓冲区中指定数据存储到指定字符数组中。
     void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

   JDK1.5 版本之后出现了StringBuilder,它与StringBuffe基本类似。
StringBuffer是线程同步。StringBuilder是线程不同步。
以后开发,建议使用StringBuilder
将 StringBuilder 的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用StringBuffer
升级三个因素:
    (1)提高效率。
    (2)简化书写。
    (3)提高安全性。

3.基本数据类型包装类:
 byte   Byte
 short  Short
 int     Integer
 long   Long
 boolean Boolean
 float  Float
 double Double
 char   Character
基本数据类型对象包装类的最常见作用,
就是用于基本数据类型和字符串类型之间做转换
字符串转成基本数据类型。
    xxx a = Xxx.parseXxx(String);
    int a = Integer.parseInt("123"); 
    double b = Double.parseDouble("12.23");
     boolean b = Boolean.parseBoolean("true");
     Integer i = new Integer("123");
     int num = i.intValue();
 十进制转成其他进制。
     toBinaryString();
     toHexString();
     toOctalString();
其他进制转成十进制 
    parseInt(string,radix);

JDK 1.5版本以后可以自动装箱。
Integer x = 4;//自动装箱。//new Integer(4)
 x = x/* x.intValue() */ + 2;
 x 进行自动拆箱。变成成了int类型。和2进行加法运算,再将和进行装箱赋给x。

代码示例:

Integer m = 128;
     Integer n = 128;
     System.out.println("m==n:"+(m==n)); //falses

      Integer a = 127;
      Integer b = 127;
      System.out.println("a==b:"+(a==b));//结果为true。因为a和b指向了同一个Integer对象。
因为当数值在byte范围内容,对于新特性,如果该数值已经存在,则不会在开辟新的空间。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2349次
    • 积分:151
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档