Java基础
1.JDK和JRE有什么区别?
JDK:JavaDevelopmentKit的简称,java开发工具包,提供了java
的开发环境和运行环境。
JRE:JavaRuntimeEnvironment的简称,java运行环境,为java的
运行提供了所需环境。
具体来说JDK其实包含了JRE,同时还包含了编译java源码的编译
器javac,还包含了很多java程序调试和分析的工具。简单来说:如
果你需要运行java程序,只需安装JRE就可以了,如果你需要编写
java程序,需要安装JDK。
2.==和equals的区别是什么?
==解读
对于基本类型和引用类型==的作用效果是不同的,如下所示:
基本类型:比较的是值是否相同;
引用类型:比较的是引用是否相同;
代码示例:
Stringx=string;Stringy=string;Stringz=new
String(string);System.out.println(x==y);//
trueSystem.out.println(x==z);//falseSystem.out.println(x.equals(y));//
trueSystem.out.println(x.equals(z));//true
代码解读:因为x和y指向的是同一个引用,所以==也是true,
而newString()方法则重写开辟了内存空间,所以==结果为false,
而equals比较的一直是值,所以结果都为true。
equals解读
equals本质上就是==,只不过String和Integer等重写了equals
方法,把它变成了值比较。看下面的代码就明白了。
首先来看默认情况下equals比较一个有相同值的对象,代码如下:
classCat{publicCat(Stringname){this.name=name;}
privateStringname;
publicStringgetName(){returnname;}
publicvoidsetName(Stringname){this.name=name;}}
Catc1=newCat(王磊);Catc2=newCat(王磊
);System.out.println(c1.equals(c2));//false
输出结果出乎我们的意料,竟然是false?这是怎么回事,看了equals源码就
知道了,源码如下:
publicbooleanequals(Objectobj){return(this==obj);}
原来equals本质上就是==。
那问题来了,两个相同java基础面试大全值的String对象,为什么返回的是true?代码如下:
Strings1=newString(老王);Strings2=newString(老王
);System.out.println(s1.equals(s2));//true
同样的,当我们进入String的equals方法,找到了答案,代码如下:
publicbooleanequals(ObjectanObject){
if(this==anObject){
returntrue;
}
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/3624.html