学习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

java学习之String类

java String 类的使用方法
  • lzx_longyou
  • lzx_longyou
  • 2015年05月17日 14:35
  • 2170

Kotlin Android入门学习一

Kotlin 是一种基于 JVM 的新的编程语言,由 JetBrains 开发,在 Apache 许可下已经开源; 主要优点有:开源、语言简洁、安全、通用、互操作、句末不用分号、跟java互通!哈哈...
  • azhansy
  • azhansy
  • 2016年03月12日 15:12
  • 1234

Java 学习——Map

本文主要介绍了Map集合中entrySet()方法与keySet()、value()方法的使用,其中前两者取出的都是key和value的映射关系,只有最后的values取出的是集合中所以的值,没有键,...
  • zwk626542417
  • zwk626542417
  • 2014年12月31日 09:32
  • 3025

Java中String类的学习

String类 public class StringTest3 { public static void main(String[] args) { String a = "hello ni...
  • leiHanc
  • leiHanc
  • 2017年05月12日 11:29
  • 113

java学习记录(一)String类的常用方法

java String类的各方法使用介绍
  • wuwenhui_2
  • wuwenhui_2
  • 2015年01月25日 18:59
  • 254

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

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

Java学习笔记:String类

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

Java学习笔记之String类的常用方法

public class StringTest{ public static void main(String[] args) { //创建一个字符串,注意前后各留一个空格 ...
  • Lindroid20
  • Lindroid20
  • 2016年07月18日 16:59
  • 562

黑马程序员之java中操作字符串的常用类String和StringBuffer学习

String类中常用方法: 将字符数组转成字符串; static String copyValueof(char[] data,int offset,int count) static Stri...
  • ll596408349
  • ll596408349
  • 2014年03月09日 16:39
  • 381

java中String类源代码学习

源代码阅读工具连接SourceInsight:http://www.sourceinsight.com/。 java中的String类可谓是重中之重,java保证其不变性,其有很多方法例如subst...
  • ingwfj
  • ingwfj
  • 2016年08月16日 00:10
  • 2072
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习java String类
举报原因:
原因补充:

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