Java 中的几种基本数据类型是什么?各自占用多少字节?
- byte - 1 字节
- short - 2 字节
- char - 2 字节
- int - 4 字节
- long - 8 字节
- float - 4 字节
- double - 8 字节
- boolean - 理论上占用 1/8 字节(1 bit),实际处理按 1 byte 处理
char 类型变量中能不能存储一个中文汉字?为什么?
在 Java 语言中,char 类型占 2 个字节,且 Java 默认采用 Unicode 编码,一个 Unicode 码是 16位(2 字节)。所以,在 Java 中,char 类型变量可以存储一个中文汉字。 // Java 中无论是汉字还是英文字母,都是用 Unicode 编码来表示的。
什么是引用类型?
引用类型声明的变量是指该变量在内存中实际存储的是一个引用地址,实体在堆中。
关键字:引用类型 变量值 对象的内存地址
引用类型包括类(如 String)、接口、数组等。
什么是值传递和引用传递?
- 值传递:方法接收的是实参值的拷贝,会创建副本。
- 引用传递:方法接收的直接是实参所引用的对象在堆中的地址,不会创建副本,对形参的修改将影响到实参。
在 Java 中只有值传递。
属性(字段)和变量的区别?
变量可以分为成员变量(属性/字段)和局部变量。
什么是重载和重写?Overload(重载)和 Override(重写)的区别?
重载 | 重写 | |
发生范围 | 同类中 | [父]子类 |
方法名 | 相同 | 相同 |
形参列表 | 不同 | 相同 |
返回值 | - | 子类 ≤ 父类 |
异常 | - | 子类 ≤ 父类 |
修饰符 | - | 子类 ≥ 父类 |
发生阶段 | 编译期 | 运行期 |
注意:若原方法被 private 关键字声明,则不能对其进行重载/重写。
什么是 Java 序列化,如何实现 Java 序列化?或者请解释 Serializable 接口的作用?
序列化:将数据结构或对象转换成二进制字节流的过程。
反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程。
对于 Java 这种面向对象编程语言来说,序列化的都是对象。
序列化的主要目的是通过网络传输对象或者将对象存储到文件系统、数据库、内存中。
图 1
JDK 自带的序列化,只需实现 java.io.Serializable 接口即可 {
该接口是一个 mini 接口,接口内部没有需要被实现的方法,实现该接口只是为了标记该对象是可以被序列化的。
}