Java基础复习
Java语言特点
- 简单易学;
- 面向对象(封装,继承,多态);
- 平台无关性( Java 虚拟机实现平台无关性);
- 支持多线程( C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支持);
- 可靠性;
- 安全性;
- 支持网络编程并且很方便( Java 语言诞生本身就是为简化网络编程设计的,因此 Java 语言不仅支持网络编程而且很方便);
- 编译与解释并存;
- 在企业级开发中有极其强大的生态
JVM
Java 虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM 有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。(实现跨平台的特性)。
会java基础能赚钱吗
.java文件可以被Javac程序编译成.class字节码文件,JVM在将其解释成机器可执行的机器码。(JVM只面向字节码,只要符合JVM字节码规范的都可以运行,无论字节码是由Java文件编译过来还是python文件都可以运行)
Java数据类型
Java具有确定的数据类型,它不像其它的编程语言一样会随着硬件的架构变换而变化,这也是Java比其他语言具有更好的可移植性的原因之一。
boolean 只有两个值:true、false,可以使用 1 bit 来存储,但是具体大小没有明确规定。JVM 会在编译时期将 boolean 类型的数据转换为 int,使用 1 来表示 true,0 表示 false。JVM 支持 boolean 数组,但是是通过读写 byte 数组来实现的。
基本类型都有对应的包装类型,基本类型与其对应的包装类型之间的赋值使用自动装箱与拆箱完成。以Integer为例
面试题
x,y是两个不同的对象,他们不相等可以理解,那么为什么z == w呢?这就涉及到Java里面的缓存池技术了。以Integer为例,Java会缓存-128 ~127范围内的对象,调用Integer.valueOf()会判断传入的值在不在范围,若在直接返回缓存池里的对象
在 jdk 1.8 所有的数值类缓冲池中,Integer 的缓冲池 IntegerCache 很特殊,这个缓冲池的下界是 - 128,上界默认是 127,但是这个上界是可调的,在启动 jvm 的时候,通过 -XX:AutoBoxCacheMax=
为什么浮点型数据没有缓存池?
你能说出 0~1直接到底有多少个浮点型数据不?
Java参数传递
Java的参数传递都是值传递而不是引用传递,对应基本数据类型,Java会拷贝一份值,然后传递到形参中,对于引用数据类型Java会把引用的地址以值的形式传递给形参。
示例:
分析
final关键字
- final关键字修饰类,类不能被继承,类里的所有方法都隐式的被final关键字修饰
- final关键字修饰方法,方法不能被重写,private方法被final关键字隐式修饰
- final关键字修饰变量,变量就为编译时常量,在运行时可以通过反射进行修改,若final变量赋予了初始值,在编译期进行了优化 return (final) var ---> retunrn var的字面量。
static关键字
- 修饰成员变量和成员方法: 被 static 修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享,可以并且建议通过类名调用。被 static 声明的成员变量属于静态成员变量,静态变量 存放在 Java 内存区域的方法区。调用格式:类名.静态变量名 类名.静态方法名()
- 静态代码块: 静态代码块定义在类中方法外, 静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。 该类不管创建多少对象,静态代码块只执行一次.
- 静态内部类(static 修饰类的话只能修饰内部类): 静态内部类与非静态内部类之间存在一个最大的区别: 非静态内部类在编译完成之后会隐含地保存着一个引用,该引用是指向创建它的外围类,但是静态内部类却没有。没有这个引用就意味着:1. 它的创建是不需要依赖外围类的创建。2. 它不能使用任何外围类的非 static 成员变量和方法。
Java异常体系
Java异常分为Exceptions 和 Errors,他们都继承与Throwable。
- Exception:程序能处理的异常,可以通过try,catch处理掉,其又分为受检查Exceptions和非受检查异常
- Errors:程序自己不能处理的异常,如内存溢出异常,栈溢出异常,发生这种异常虚拟机会选择结束掉线程
- 受检查异常
Java 代码在编译过程中,如果受检查异常没有被处理的话,就没办法通过编译 。
除了及其子类以外,其他的类及其子类都属于受检查异常 。常见的受 检查异常有: IO 相关的异常、、...。 - 非受检查异常
Java 代码在编译过程中 ,我们即使不处理不受检查异常也可以正常通过编译。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/25924.html