首页 java中的接口

java中的接口

举报
开通vip

java中的接口java中的接口 类定义属性和方法 描述某一类事物的抽象 而接口定义的是行为 并不限于任何具体意向 按照逻辑上来说 单继承更明确 一个子类就应该是其父类代表的事物中的某个更具体的类别 不应该即是这种东西又是那种东西 而从实用角度上来说 单继承易读 易维护 语义清晰 逻辑清楚 而接口则不同 接口只定义一些公共行为 比如有两个接口 一个定义了跑这个动作 另一个定义了走这个动作 人这个类就可以同时实现这两个接口所定义的行为 类对接口的implements称作实现 不能叫做继承 当然 接口可以多继承接口 因为接口只...

java中的接口
java中的接口 类定义属性和方法 描述某一类事物的抽象 而接口定义的是行为 并不限于任何具体意向 按照逻辑上来说 单继承更明确 一个子类就应该是其父类代表的事物中的某个更具体的类别 不应该即是这种东西又是那种东西 而从实用角度上来说 单继承易读 易维护 语义清晰 逻辑清楚 而接口则不同 接口只定义一些公共行为 比如有两个接口 一个定义了跑这个动作 另一个定义了走这个动作 人这个类就可以同时实现这两个接口所定义的行为 类对接口的implements称作实现 不能叫做继承 当然 接口可以多继承接口 因为接口只定义行为 并不包含类别的含义 不指代具体的某类事物 而且 从语义上来说 接口对接口的继承称之为扩展更为合适 java语言:String类的concat方法与StringBuffer类的append方法区别,内存状态, 如:line1: "abc"+"def"+"ghi" line2: new String("abc").concat("def").concat("ghi"); line3:newStringBuffer("abc").append("def").append("ghi") ; 上述三行代码的区别,尤其是在内存中的变换状态的区 别, 谁能帮我介绍一下java语言中string and stringbuffer的区 别和用法啊, String类用来表示那些创建后就不会再改变的字符串,它是 immutable的。而StringBuffer类用来表示内容可变的字符 串,并提供了修改底层字符串的方法。 ,,当我们进行 字符拼接时,请使用StringBuffer类而非String类,因为前 者将比后者快上百倍。 的确,在程序的太多场合我们都 会进行字符串拼接工作,简单的代码示例如下: String str="You are nice."; str+="I love you so much."; 如果 用StringBuffer类的话,代码如下: StringBuffer str= new StringBuffer("You are nice."); str.append("I love you so much."); 从表面看来String类只用一个加号(+) 便完成了字符串的拼接,而StringBuffer类却要调用一个 append()方法,是否实现起来更简洁,更单纯呢,其实不然, 让我们了解一下程序运行内部发生了哪些事情: 经编译后程序的bytecode(字节码)展示出了实质: 在用String类对象直接拼接时,JVM会创建一个临时的StringBuffer类对象,并调用其append()方法完成字符串的拼接,这是因为String类是不可变的,拼接操作不得不使用StringBuffer类(并且,,JVM会将"You are nice."和"I love you so much."创建为两个新的String对象)。之后,再将这个临时StringBuffer对象转型为一个String,代价不菲~可见,在这一个简单的一次拼接过程中,我们让程序创建了四个对象:两个待拼接的String,一个临时StringBuffer,和最后将StringBuffer转型成为的String,,它当然不是最初的str了,这个引用的名称没变,但它指向了新的String对象。 而如果直接使用StringBuffer类,程序将只产生两个对象:最初的StringBuffer和拼接时的String("I love you so much."),也不再需要创建临时的StringBuffer类对象而后还得将其转换回String对象。 可以想象,当我们的字符串要被循环拼接若干段时,用String类直接操作会带来多少额外的系统开销,生成多少无用的临时StringBuffer对象,并处理多少次无谓的强制类型转换哪。 java里String 和StringBuffer的区别, 我看概念上说的是: “这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。” 我不明白,为啥String不可更改呢, String s = "sss"; s = "ddd"; 这样编译是能捅过的,可以更改啊,,, String s = "sss"; 不可变是说对象new String("sss")是不可变的,你写s="ddd",创建了一个新的new String("ddd")对象,并让引用s 指向这个对象的地址,原来的sss被就被抛弃了。 String s = "sss"; s+= "ddd"; 这样也是可以的,是不是s也是可变的呢, 实际上JVM是生成了一个临时对象BufferString,将两个字符串拼接后再保存为新对象,然后将引用s指向新对象。 在这一个简单的一次拼接过程中,我们让程序创建了四个对象:两个待拼接的String,一个临时StringBuffer,和最后将StringBuffer转型成为的String,,它当然不是最初的sss了,这个引用的名称没变,但它指向了新的String对象。
本文档为【java中的接口】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_574951
暂无简介~
格式:doc
大小:14KB
软件:Word
页数:3
分类:互联网
上传时间:2017-09-27
浏览量:33