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