JAVA API-----String类和StringBuffer类

  String类和StringBuffer类主要用来处理字符串,这两个类提供了很多字符串的使用处理方法。String类是不可变类,表示对象所包含的字符串类不能改变。StringBuffer类是可变类,其对象所包含的字符串内容可以被添加或修改。

  关于这两个类处理字符串的常用方法请参考:http://www.runoob.com/java/java-string.html    

                      http://www.runoob.com/java/java-stringbuffer.html

  下面主要介绍:equals和==在字符串和非字符串使用方面的区别

class Test{
    int x=1;
}

public class EqualTest{
    public static void main(String args[]){
        String a1,a2,a3="abc",a4="abc";
        a1=new String("abc");
        a2=new String("abc");
        System.out.println("a1.equals(a2): "+(a1.equals(a2)));
        System.out.println("a1==a2: "+(a1==a2));
        System.out.println("a1.equals(a3): "+(a1.equals(a3)));
        System.out.println("a1==a3: "+(a1==a3));
        System.out.println("a3.equals(a4): "+(a3.equals(a4)));
        System.out.println("a3==a4: "+(a3==a4));
        System.out.println("----------------------------");
        Test one=new Test();
        Test two=new Test();
        System.out.println("one.equals(two): "+(one.equals(two)));
        System.out.println("one==two: "+(one==two));
        one=two;
        System.out.println("赋值后:");
        System.out.println("one.equals(two): "+(one.equals(two)));
        System.out.println("one==two: "+(one==two));
    }
}

1. ==可以用来比较基本类型和引用类型,判断内容和内存地址

2. equals只能用来比较引用类型,它只判断内容。

java中的数据类型,可分为两类: 
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean 
  他们之间的比较,应用双等号(==),比较的是他们的值。 
2.复合数据类型(类) 
  当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,
  所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。

 

字符串缓冲池:程序在运行的时候会创建一个字符串缓冲池。
当使用 String a3 = "abc"; 这样的表达是创建字符串的时候,程序首先会在这个String缓冲池中寻找相同值的对象

在String a3 = "abc";中,a3先被放到了池中。所以在a4被创建的时候,程序找到了具有相同值的 a4,并将a4引用a3所引用的对象"abc"。

使用了 new 操作符,他明白的告诉程序:"我要一个新的!不要旧的!"于是一个新的"abc"Sting对象被创建在内存中。他们的值相同,但是位置不同。

 

posted @ 2016-08-08 10:13  生成风  阅读(778)  评论(1编辑  收藏  举报