面试宝典(一)
一、java跨平台原理
精简概述: 通过JVM虚拟机实现
完整概述:我们直接写完的Java程序并不是直接在Windows或者Linux这样的操作系统中运行的,而是会通过Java编译器将这个Java程序编译为.class字节码文件(也就是将我们写的Java程序翻译成计算机可以识别的程序),然后由JVM虚拟机对字节码文件进行执行,最终我们程序是由JVM进行执行的而非Windows或者Linux,Unix操作系统执行,所以我们只需要安装对应操作系统版本的JVM虚拟机即可实现Java程序的跨平台实现。
二、JDK、JRE、JVM分别包含什么?各自之间的关系
- 什么是JVM?
- Java虚拟机(Java Virtual Machine),帮助我们运行Java程序.
- 什么是JRE?
- Java运行时的必要环境(Java Runtime Environment) -> 包含JVM以及核心类库JAVA API.
- 什么是JDK? -> Kit 工具
- Java的开发工具 (Java Development Kit)-> 包含JRE和开发JAVA程序时的一些工具.
- JDK,JRE,JVM之间的包含关系是什么?
- JDK包括JRE,JRE包括JVM.
[外链图片转存失败(img-4OoYHAs2-1564107061223)(E:\itheima\forMyself\allPicture\2019-07-13_081322.jpg)]
三、短路逻辑运算符和逻辑运算符的区别(&&/&、||/|)
-
在逻辑与&表达式中,只要有一个表达式的值为false,那么后面的表达式不管是true还是false,结果都是false,但是后面的表达式还是会进行运算,消耗了系统性能,所以当使用短路与&&的时候,如果左边表达式是false,那么不会再去判断右边的表达式,直接返回false.
-
短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行.
-
在逻辑或|的表达式中,只要有一个表达式的值为true,那么后面的表达式不管是true还是false,结果都是true,但是后面的表达式还是会进行运算,消耗了系统性能,所以当使用短路或||的时候,如果左边的表达式是true,那么不会再去判断右边的表达式,直接返回true.
-
短路或||,如果左边为假,右边执行;如果左边为真,右边不执行.
简而概之:
逻辑与&:无论左边真假,右边都要执行。
短路与&&:如果左边为真,右边执行;如果左边为假,右边不执行。
逻辑或|:无论左边真假,右边都要执行。
短路或||:如果左边为假,右边执行;如果左边为真,右边不执行
四、方法重载
1.概念:
方法重载指在同一个类中定义多个方法之间的关系,满足下列条件的多个方法相互构成重载.**
- 多个方法在同一个类中.–>同一个爹.
- 多个方法具有相同的方法名.–>同一个姓.
- 多个方法的参数不相同,类型不同或者数量不同.
2.注意事项
- 方法仅对对应方法的定义,与方法的调用无关,调用方式参照标准格式.
- 重载仅针对同一个类中的方法与参数进行识别,与返回值无关,不能通过返回值是否不相同来判断两个方法是否构成重载.
五、java中是值传递还是引用传递?
值传递 -> 哪怕是引用类型,传递也是这个地址值.
六、成员变量和局部变量
- 成员变量
- 在类中方法外的变量是成员变量.
- 局部变量
- 在方法中或者方法声明中(形式参数)的变量是局部变量.
- 成员变量和局部变量的区别是? -> 面试高频题
- 在类中的位置不同
- 成员变量在类中方法外,局部变量在方法中或者方法声明中.
- 在内存中的位置不同
- 成员变量在堆内存,局部变量在栈内存.
- 生命周期不同
- 成员变量随着对象的创建而创建,随着对象的消失而消失,局部变量随着方法的调用而创建,随着方法的调用完毕而消失.
- 初始化值不同
- 成员变量拥有初始化值,局部变量没有初始化值,必须先赋值然后才能使用.
- 在类中的位置不同
初始化值**,局部变量没有初始化值,必须先赋值然后才能使用.