Java基础问题(1)(jdk/jre/equals)

1.JDK和JRE
1.1 JDK(Java development kit)Java开发工具包,面向开发人员使用的SDK(software development kit)包括库函数,编译程序等,JDK包含JRE,JRE包含JVM。
1.1 JRE(Java runtime environment)Java运行环境,在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre
jvm:Java虚拟机,Java语言实现跨平台的核心,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行

2.“==”和equals的区别
前者是对于基本数据类型作比较:byte,short,char,int,long,float,double,boolean,直接比较他们的值是否相同,如果是比较对象的话就回去比较他们的内存中的地址,对于引用的数据类型来说,除非是同一个new 出来的对象,否则结果都为false;
equals:Object超类当中定义的equals方法默认比较对象的内存地址,但在其他类方法中equals方法被重写了。比如说String ,Integer等,比较成员变量的值是否相等而不是比较内存地址。

public static void  main(String[] args){
    //基本数据类型比较
    int a = 111;
    int b = 222;
    int c = 111;
    System.out.println("a == b:  "+ Boolean.valueOf(a == b));
    System.out.println("a == c:  "+ Boolean.valueOf(a == c));
    //对象类型比较
    TestOne testOne = new TestOne();
    System.out.println("testOne.equals(testOne):  "+ Boolean.valueOf(testOne==testOne));
    System.out.println("testOne.equals(testOne):  "+ Boolean.valueOf(testOne.equals(testOne)));
    String h = new String("hello");
    String w = new String("world");
    String m = new String("hello");
    System.out.println("h == w:  "+ Boolean.valueOf(h==w));
    System.out.println("h.equals(w):  "+ Boolean.valueOf(h.equals(w)));
    System.out.println("h == m:  "+ Boolean.valueOf(h==m));//地址比较,
    System.out.println("h.equals(m):  "+ Boolean.valueOf(h.equals(m)));//值比较
}

输出:

a == b:  false
a == c:  true
testOne.equals(testOne):  true
testOne.equals(testOne):  true
h == w:  false
h.equals(w):  false
h == m:  false
h.equals(m):  true

3

发布了54 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/liutaiyi8/article/details/101053247