Skip to content

基本数据类型与访问修饰符

面试题 Java

java 的数据类型有哪些?

1601007392799-1cec91b3-0b28-4ba2-b7f8-e46217597a44.png

访问权限修饰符 public、private、protected 以及不写(默认)时的区别?

Java 中成员的访问权限共有四种,可见性如下:

privatedefaultprotectedpublic
同一类中
同一包中的类
子类
其他包中的类

接口和抽象类有什么区别?

实现

抽象类的子类使用 extends 来继承

接口必须使用 implements 来实现接口

构造函数

抽象类可以有构造函数

接口没有

main 方法

抽象类有 main 方法,并且可以运行

接口不能有 main 方法

实现数量

类可以实现多个接口,

但是只能继承一个抽象类。

访问修饰符

接口中的方法默认使用 public 修饰符

抽象类的方法可以是任意访问修饰符

final, finally, finalize 的区别?

final

用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。

finally

是异常处理语句结构的一部分,表示总是执行。

finalize

是 Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等. JVM 不保证此方法总被调用。

抽象类能用 final 修饰吗?

不能:

定义抽象类就是让其他类继承的,如果定义为 final,该类就不能被继承,这样彼此就回产生矛盾,所以 final 不能修饰抽象类。

为什么不能用浮点型表示金额?

由于计算机中保存的小数其实是十进制的小数的近似值,并不是准确值,所以,千万不要在代码中使用浮点数来表示金额等重要的指标。

建议使用 BigDecimal 或者 Long(单位为分)来表示金额。

int 和 Integer 有什么区别?

int 是 Java 提供的 8 种原始数据类型之一。

Java 为每个原始类型提供了封装类,Integer 是 Java 为 int 提供的封装类。

int 的默认值为 0,而 Integer 的默认值为 null,是引用类型,即 Integer 可以区分出未赋值和值为 0 的区别,int 则无法表达出未赋值的情况

Java 中 int 和 Integer 关系如下:

  • int 是基本的数据类型;
  • Integer 是 int 的封装类;
  • int 和 Integer 都可以表示某一个数值;
  • int 和 Integer 不能够互用,因为他们两种不同的数据类型;

char 型变量中能不能存储一个中文汉字,为什么?

char 类型可以存储一个中文汉字,因为 Java 中使用的编码是 Unicode(不选择任何特定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法),一个 char 类型占 2 个字节(16 比特),所以放一个中文是没问题的。

补充:使用 Unicode 意味着字符在 JVM 内部和外部有不同的表现形式,在 JVM 内部都是 Unicode,当这个字符被从 JVM 内部转移到外部时(例如存入文件系统中),需要进行编码转换。所以 Java 中有字节流和字符流,以及在字符流和字节流之间进行转换的转换流,如 InputStreamReader 和 OutputStreamReader,这两个类是字节流和字符流之间的适配器类,承担了编码转换的任务;

更新: 2023-11-18 09:40:56
原文: <https://www.yuque.com/fcant/notes/ydnhwr&gt;

最近更新