黑马程序员技术交流社区

标题: java笔试题String问题 [打印本页]

作者: ﹏゛心被伱牵    时间: 2012-10-26 19:07
标题: java笔试题String问题

public class Foo {
        public static void main(String[] args) {
                String strValue="ABCDEFG";
                strValue.substring(3);
                strValue.concat("123");
                System.out.println("result=" + strValue);
               
                String value = new String ("ABCDEFG");
                System.out.println(strValue== value);

        }
}
求打印结果?
作者: 班志国    时间: 2012-10-26 19:31
ABC
false
作者: 张忠豹    时间: 2012-10-26 19:41
result=ABCDEFG
false
String类型的字符串在进行操作的时候,它的原来内容是不会改变的。如果想要保存方法操作的值,就应该重新赋给一个变量。
String与StringBuffer的区别,也是在这一块上。StringBuffer各种操作返回的是这个StringBuffer变量本身,而String操作返回的是另外一个String对象。
作者: 李靖    时间: 2012-10-26 19:44
打印的结果是
result=ABCDEFG
false
substring()返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,一直到索引 endIndex - 1 处的字符。其实他并没有真的将源字符串截取掉。
而==比较的是俩个对象的栈地址,value和strValue的栈地址不同,而用equal的话,会返回true
作者: 李润根    时间: 2012-10-26 20:08
1、ABCDEFG
strValue.substring(3);
strValue.concat("123");
都是创建一个新的对象,不改变原来的

2、false
String strValue="ABCDEFG";
String value = new String ("ABCDEFG");
两个引用的内存地址不同
------------------------------------------------------------------------------------
楼主可以分别运行以下代码看看
String strValue = new String ("ABCDEFG");
String value = new String ("ABCDEFG");
-----------------
String strValue = "ABCDEFG";
String value ="ABCDEFG";
作者: 赵红萍    时间: 2012-10-26 21:10
打印结果是:ABCDEFG,false
因为字符串是常量,它们的值在创建之后不能更改,所以String类的对象是不可变的,strValue和value是String的两个不同的对象,所以它们在内存中的地址也是不同的
作者: 442851994    时间: 2012-10-26 21:48
result=ABCDEFG  
false
作者: 崔政    时间: 2012-10-27 18:30
  1. package test;
  2. import java.util.*;
  3. class  Test2{
  4.      public static void main(String[] args) {
  5.              String strValue="ABCDEFG";
  6.          strValue.substring(3); //字符串被创建以后不会改变,这个是返回一个新的字符串
  7.          strValue.concat("123");//在字符串后面加上123,但是仍是返回一个新字符串,和原字符串没关系
  8.          System.out.println("result=" + strValue);//所以不变还是ABCDEFG
  9.          
  10.          String value = new String ("ABCDEFG");
  11.          //String value = "ABCDEFG";//如果是这样,就是true了,因为常量池中已经存在了ABCDEFG(第一句将ABCDEFG存入常量池),所以直接将该引用赋予value
  12.          System.out.println(strValue== value);//结果为false,因为是new String("ABCDEFG"),不同引用相比肯定是flase
  13.          


  14.       }
  15. }

复制代码

作者: 聆听    时间: 2012-10-28 04:07
ABCDEFG
false




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2