更详细Java面试请点击这里
Java 基础必会知识点
-
Java 关键字及功能
- 熟悉 Java 常用关键字的拼写及功能
- 所有的 Java 关键字都是小写
- goto 和 const 是保留关键字,在 Java 中没有使用
- true, false, null 不是严格意义上的关键字,而是文字常量(literals)
- 程序中遇到 return 语句将不会执行 finally 语句
-
Java 数据类型
- 8 种基本数据类型:byte, short, int, long, float, double, char, boolean
- 8 种基本数据类型占用的字节长度
- 3 种引用数据类型:类、接口、数组
- 8 种基本数据类型对应的包装类,被 final 修饰,不可被继承
- String 和 StringBuffer 类也是被 final 修饰的
-
Java 基本运算符
- Java 基本运算符的种类
- Java 基本运算符的优先级
- 单目、双目、三目运算符的划分
- 运算符操作工程中的类型转换问题
-
Java 基本程序控制语句
- 有三种执行方式:顺序结构、选择结构和循环结构
- 条件选择语句:if...else, switch...case
- 循环语句:while ,do...while, for
- 注意 while 和 do...while 的**区别
- while 是先判断再执行循环体,do...while 是先执行再判断
- switch 支持得数据类型有:byte, short, int, char, 枚举类型,JKD 1.7时又增加了 String
-
Java 数组(重视)
- Java 数组的概念与特点
- Java 实现了真数组,即数组中的元素是一个一个线性存放的,通过第一个元素就能访问后面的元素,避免了数据覆盖的可能性
- 一维数组和二维数组的声明
- 数组初始化的两种方式:静态初始化和动态初始化的使用方法及区别
- 动态初始化数组必须给出长度,否则将报“缺少数组维数”的错误
- 动态初始化二维数组时,可以指定第一维的长度而不指定第二维的长度
- 当数组包含的元素是引用数据类型时,必须为每个元素实例化,否则出现空指针异常
常见 Java 基础知识陷阱
对初学者来讲,由于对 Java 语言的概念和特性了解不深入,总会导致一些错误的产生。为了避免产生这些错误,我们需要熟知道 Java 语言的性质并了解。常见的陷阱有以下:
-
浮点数运算陷阱
- float 和 double 不能进行精确运算,因为计算机底层是使用的二进制,二进制不能精确的表示十进制的浮点数例如以下代码:
System.out.println(2.0-1.1); //输出为:0.899999999,并非为0.9
- 不能简单的使用四舍五入的方法解决上述问题
- 可以使用 Java 自带的 BigDecimal 类了解BigDecimal解决,见下面:
BigDecimal a1 = new BigDecimal(Double.toString(2.0));
BigDecimal a1 = new BigDecimal(Double.toString(1.1));
System.out.println(a1.subtract(a2).doubleValue());
//输出为0.9
```
- 自增、自减运算符陷阱
1. ++ 与 -- 运算符的规则
2. i++ 与 ++i 的区别
3. 进行增量或减量运算常见错误
int j = 0;
for (int i = 0; i < 100; i++) {
j = j++;
}
System.out.println(j);
//输出为0,因为先执行++操作,再将之前的 j 赋值给 j,所以永远是0
//注意在C语言中,编译器会吧j=j++优化成j++,于是C跟Java的执行结果会不一样
```
-
字符和字符串陷阱
- 字符串与字符拼接规则
- 转义字符使用规则
System.out.println("a"+"b");//输出ab System.out.println('a'+'b');//输出195,因为字母a的ASCII码为97 System.out.println("a"+'b');//输出ab,字符a被强制转化为字符串a
-
返回和退出陷阱
- return 与 try...catch 语句规则,尤其是有 finally 语句时候
- exit() 函数与 try...catch 语句规则
public static boolean return1() { try { return true; } finally{ return false; } }//返回的是false public static void return2() { try { System.err.println("Hello!"); System.exit(0); } finally{ System.out.println("GoodBye!"); } }//输出的是Hello