文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>java string之我见...

java string之我见...

时间:2010-08-13  来源:xiogjie_67

一、java中的String类为什么不可以被改变?    

public class StringTest {
 public static void main(String[] args) {
  String str = new String ("abcdef");
  str.replace('c', 'C');
  System.out.println(str);
 }
}

 

这里面的代码,试图将字符串中的字符'c'替换成大写字母'C',使用的是String类的replace方法,调用这个方法之后,再重新输出字符串str,发现并没有改变str的值。这是怎么一回事呢?

大家只要查看一下String的API就知道,这个类的replace()方法,它返回的是一个新的String,也就是说,调用String的replace()方法之后,它会在内存堆中新创建一个String对象,而不会去改变之前在堆中创建的String对象。

 

总之,大家可以查看String的API,只要是试图改变一个字符串的方法,它最终都会返回一个新的String,也就是说在内存堆中开辟一个新的空间来存放这个新的字符串。这也就是不能改变原String对象的值的根本原因。也就是说,无论你调用String的什么方法,改变原String对象的值,它都会产生一个新的字符串返回。

二、java中的String类为什么是不可以继承的?

     查看jdk你就可以清楚的看到String是final类型的,表明它是一个终态类,大家都清楚final作用在类上,就表示这个类是不能够被子类继承的。下方是String类的类定义:

     public final class String

     extends Object     implements java.io.Serializable, Comparable<String>, CharSequence      为什么final作用在类上面,这个类就不能够被子类继承,也就是被子类扩展呢?     因为类上面如果添加了final修饰,则这个类里面的方法就默认会加上final修饰符,我们知道,final作用在方法上面的时候,在子类中是无法重写这个方法的。所以,如果类里面所有的方法都加上final之后,那么子类就无法重写这个类里面所有的方法,继然重写不了,也就谈不上继承了。
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载