当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:15:00  来源:本站整理

Java初学者都必须理解的六大问题[Java编程]

赞助商链接



  本文“Java初学者都必须理解的六大问题[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

关于这个系列里的问题,每个学Java的人都应当搞懂.当然,假如只是学Java玩玩就无所谓了.假如你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列.

问题一:我声明了什么!

String s = "Hello world!";

很多人都做过这样的事情,但是,我们到底声明了什么?答复普通是:一个String,内容是“Hello world!”.这样模糊的答复普通是概念不清的本源.假如要精确的答复,一半的人大约会答复错误.

这个语句声明的是一个指向对象的引用,名为“s”,可以指向范例为String的任何对象,目前指向"Hello world!"这个String范例的对象.这就是真正发生的事情.我们并没有声明一个String对象,我们只是声明了一个只能指向String对象的引用变量.所以,假如在方才那句语句背面,假如再运行一句:

String string = s;

我们是声明了别的一个只能指向String对象的引用,名为string,并没有第二个对象产生,string还是指向本来那个对象,也就是,和s指向同一个对象.

问题二:"=="和equals办法毕竟有什么辨别?

==操作符专门用来对比变量的值能否相等.对比好理解的一点是:

int a=10;
int b=10;

则a==b将是true.

但不好理解的地方是:

String a=new String("foo");
String b=new String("foo");

则a==b将返回false.

按照前一帖说过,对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身.a和b都利用了new操作符,意味着将在内存中产生两个内容为"foo"的字符串,既然是“两个”,它们自然位于差别的内存地址.a和b的值其实是两个差别的内存地址的值,所以利用"=="操作符,后果会是false.当然,a和b所指的对象,它们的内容都是"foo",应当是“相等”,但是==操作符并不触及到对象内容的对比.

对象内容的对比,恰是equals办法做的事.

看一下Object对象的equals办法是若何实现的:

boolean equals(Object o){
return this==o;
}

Object对象默许利用了==操作符.所以假如你自创的类没有覆盖equals办法,那你的类利用equals和利用==会得到一样的后果.一样也可以看出,Object的equals办法没有到达equals办法应当到达的目标:对比两个对象内容能否相等.因为答案应当由类的成立者决意,所以Object把这个任务留给了类的成立者.

看一下一个极度的类:

Class Monster{
private String content;
...
boolean equals(Object another){ return true;}
}

我覆盖了equals办法.这个实现会招致无论Monster实例内容若何,它们之间的对比永久返回true.

所以当你是用equals办法判断对象的内容能否相等,请不要想当然.因为大概你认为相等,而这个类的作者不这样认为,而类的equals办法的实现是由他掌握的.假如你需求利用equals办法,大概利用任何基于散列码的调集(HashSet,HashMap,HashTable),请察看一下java doc以确认这个类的equals逻辑是若何实现的.


  以上是“Java初学者都必须理解的六大问题[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .