学习java String类

原创 2006年06月16日 23:51:00
class A
{
   static String lock1 ="mylock";
  
   String lock11="mylock";
}

 class B
{
    static String lock2=new String("mylock");
    static String lock3="mylock";
   
    String lock22=new String("mylock");
    String lock23="mylock";
}


public class HelloWorld {

    /**
     * @param args
     */
    public static void main(String[] args)
    {
        // TODO 自动生成方法存根
        System.out.println("你好");
       
        String a = "Hello";
        String b = "Hello";
        String c = "HelloHello";
        String d = "Hello" + "Hello";
        String e = "Hell" + "oHello";
        String f = a + b;
        String g = a+"Hello";

        System.out.println("c == d : " + (c == d));  // true
        System.out.println("c == e : " + (c == e));  // true
        System.out.println("c == f : " + (c == f));   // false
        System.out.println("c == g : " + (c == g));   //false
有这样一个规则:
(1) 当 = 的右边全是字符串常量,那么 = 左边的变量(左值)也成为字符串常量。
(2) 当 = 的右边包含字符串变量(或其它变量),那么 = 左边的变量(左值)也成为字符串变量(StringBuffer().append()...的结果)。
原因:
编译器优化,右边全是常量运算,则生成一个常量;字符串常量不同于字符串变量,字符串变量常量存于 类常量池 Class Constant Pool中,对于同一个常量的引用相等。

       System.out.println(A.lock1.equals(B.lock2));   // true : 值的比较
       System.out.println(A.lock1==B.lock2); //false:引用的比较,new出来的String对象的引用!=同值常量的引用
       System.out.println(A.lock1==B.lock3); //true:对于不同的类的Class Constant Pool,可以发生Same String constant reference
      

        A obj_a=new A();
        B obj_b=new B();
        System.out.println(obj_a.lock11==obj_b.lock22);   //false  
        System.out.println(obj_a.lock11==obj_b.lock23);   //true
//原因:同上。对类成员、对象成员同时成立。                  
    }
}

参考:http://forum.javaeye.com/viewtopic.php?t=11649&postdays=0&postorder=asc&start=30
               http://forum.javaeye.com/viewtopic.php?t=12961&postdays=0&postorder=asc&start=0&sid=9505d8ef70ecce0626907531c025b884

http://dreamhead.blogbus.com/logs/2005/05/1189478.html

相关文章推荐

C++实现java中的String方法,供学习

  • 2008年11月21日 10:16
  • 20KB
  • 下载

(22)Java学习笔记——常用对象API / String类

String 类 字符串:就是由多个字符组成的一串数据。也可以堪称是一个字符数组。 字符串的特点: 字符串字面值“abc”也可以看成是一个字符串对象。 字符串是常量,一旦赋值不能被改变。 构造方法: ...

Java学习总结11——基础类库1(String相关类)

1.Stringxiang'jie String类是Java中最常用的对象之一

你不知道的Java学习笔记14--String类

一、字符串类 1、字符串是最常用的一种数据类型,表现形式有两种:String和StringBuffer 2、String是一种引用类型,也是final类型。 3、String对象代表一组不可改变...

Java学习笔记(四)--封装 String类 StringBuffer StringBuilder

封装1.封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。 2.好处: -提高了代码的复用性 -提高了安全性 3.体现:将不需要对外提供的内容都隐藏起来。 4.做法:把属性隐藏,提...

java基础学习总结——常用类string

常用类目录一:string类在java中有3个类来负责字符的操作。 1.Character 是进行单个字符操作的, 2.String 对一串字符进行操作。不可变类。 3.StringBuffer 也...

Java学习笔记:String类

String类: String类代表了字符串,Java中所有的字符串(如:“abcd”)都由String作为实例来实现。 字符串是常量;它们的值在创建之后不能更改,重新赋值并没有改变而是改变了引用,如...

java学习之String类

java String 类的使用方法

JAVA学习.常用类使用.String&Character

String类中的一些常用方法的介绍和分析: package StringDemoAndCharacterDemo; /** * */ //一般来说,如果你所引用的类和你当前使用的该类的类 //...

Java学习之String类

Java中的String类也是对字符串事物的描述,字符串的简单用法如下: package com.jikexueyuan.ch; import java.util.Scanner; public c...
  • fk5431
  • fk5431
  • 2015年08月26日 15:40
  • 582
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习java String类
举报原因:
原因补充:

(最多只允许输入30个字)