《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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值