《Java面向对象程序设计》(第2版)第八章课后习题及答案

三.String类型有什么特点?

1. 两种实例化方式:
  • String可以采用直接赋值的形式进行操作,这一点像基本数据类型的赋值操作一样。

    范例:String str = “hello”; //第一种

  • String是一个类,所以可以new一个对象

    范例:String str = new String(“hello”);//第二种

2. 字符串比较:
  • 使用"=="比较字符串

    String str1 = "hello" ;

    String str2 = new String("hello");

    System.out.println(str1 == str2) ;

输出:false

分析:因为str1和str2保存在栈内存中,分别存放了两个对象所保存的内存地址的数值,因此不相等。这种比较属于地址数值比较,并没有比较对象的内容。

  • 使用equals比较字符串
    String str1 = "hello" ;

    String str2 = new String("hello");

    System.out.println(str1.equals(str2)) ;

输出:true
分析:使用equals方法,不管是何种String实例化方式都将比较对象的内容,因为在String中将equals方法覆盖,用于比较内容的差异。

3. String的内容:
  • String对象是不可变的,在String类中每一个看起来会修改String对象内容的方法,实质都是创建了一个全新的String对象。

四. String什么时候进行值比较,什么时候进行引用比较?

stringA.equals(stringB);进行值比较
stringA==stringB;进行引用比较

五.String与StringBuffer的区别是什么?如何互相转换?

区别:

  • StringBuffer对象的值是可变的,对字符串的增加、插入、修改、删除等操作比String高效(不需多次创建新的对象)
  • String对象是不可变的,在String类中每一个看起来会修改String对象内容的方法,实质都是创建了一个全新的String对象。

转换方法:
示例1:
String s = “a” + “b” ;
String st = new StringBuffer().append(“a” ).append(“b” ).toString();
toString()方法专属于StringBuffer

示例2:
String s = “hello”;
StringBuffer sb = new StringBuffer(s);
String a = new String(sb);

你可能感兴趣的:(JAVA,java)