Java学习笔记(字符串)

来源:互联网 发布:db2删除一列的sql语句 编辑:程序博客网 时间:2024/05/20 02:51

16 集合

16.1 字符串

16.1.1 String

String s = “abc”;//s是一个类型变量,”abc”是一个对象;

**String类的特点:
字符串对象一旦被初始化就不会被改变**。
例1:

public class StringDemo {    public static void main(String[] args) {        String s1 = "abc";        String s2 = new String("abc");        System.out.println(s1==s2);        //String类复写了Object类中的equals方法,该方法用于判断字符串是否相同        System.out.println(s1.equals(s2));    }}

运行对象:

例1分析:s1在内存中有一个对象,s2在内存中有两个对象。

字符串创建的时候,有一个字符串常量池,s1创建后,”abc”放入其中。而s2是在堆内存中创建了另外一个”abc”字符串对象。所以,两个对象不是同一个对象。

例2:

public class StringDemo {    public static void main(String[] args) {        String s = "abc";        s = "cba";        System.out.println(s);    }}

运行结果:cba

例2分析:”abc”字符串对象并没有被改变,只是引用变量s指向了新创建的字符串对象”cba”。

16.1.2 StringBuffer

StringBuffer是一个字符缓冲区,即一个容器。

特点:

  1. 长度可变;
  2. 可操作多个不同类型数据;
  3. 最终通过toString方法转化为字符串进行使用。

    public class StringBufferDemo {    public static void main(String[] args) {        method_del();        method_add();        method_update();        method_getChar();    }    public static void method_del(){        StringBuffer s = new StringBuffer("abcdef");        s.delete(2, 4);        write(s.toString());        s.deleteCharAt(0);        write(s.toString());    }    public static void method_add(){        StringBuffer s = new StringBuffer();        s.append("acd").append(31).append(true);        s.insert(1, "gf");        write(s.toString());    }    public static void method_update(){        StringBuffer s = new StringBuffer("abcds");        s.replace(1, 3, "gabriel");        write(s.toString());        s.setCharAt(0, 'b');        write(s.toString());    }    public static void method_getChar(){        StringBuffer s = new StringBuffer("abcds");        char[] c = {'a','c','s','w'};        s.getChars(0, 3, c, 1);        for(int i=0;i<c.length;i++){            write("c["+i+"]="+c[i]);        }    }    public static void write(String str){        System.out.println(str);    }}

    运行结果:

16.1.3 StringBuilder

StringBuffer是线程同步,StringBuilder是线程不同步。

开发建议使用StringBuilder,为StringBuffer升级版,内容与StringBuffer一致。

Java升级三个因素:

  1. 提高效率;
  2. 简化书写;
  3. 提高安全性。

16.1.4 基本数据类型对象包装类

  1. byte Byte
  2. short Short
  3. int Integer
  4. long Long
  5. float Float
  6. double Double
  7. char Character
  8. boolean Boolean

基本数据类型对象包装类最常见作用,就是用于基本数据类型和字符串类型之间转换。

  • 基本数据类型–>字符串

    1. 基本类型数据+”“;
    2. 基本数据类型.toString(基本数据类型值);例如:Integer.toString(21);//将21整数变成字符串“21”;
    3. String类中的静态方法valueOf(基本数据类型)。
  • 字符串–>基本数据类型

    1. 使用包装类中的静态方法parseXxx(String);
      xxx s = Xxx.parseXxx(String);
      int a = Integer.parseInt();
      只有Character没有parse方法。
    2. Integer中的intValue()方法,将Integer对象转换为基本数据类型;
    3. String类中的静态方法valueOf(基本数据类型)。

      public class IntegerDemo {    public static void main(String[] args) {        Integer x = new Integer("123");        Integer y = new Integer(123);        Integer m= 128;        Integer n = 128;        Integer a = 127;        Integer b = 127;        write("x==y:"+(x==y));        write("x.equals(y):"+x.equals(y));        write("m==n:"+(m==n));        write("a==b:"+(a==b));    }    public static void write(String str){        System.out.println(str);    }}

      运行结果:

分析:上例中a和b指向了同一个Integer对象,因为当数值在byte范围内容,对于新特性,如果该数值已经存在,则不会开辟新的空间。而Integer中重写了equals方法。

1 0
原创粉丝点击