Java 基础知识点总结
【摘要】 Java 基础知识点总结 一、Java 语言概述Java 是一门面向对象的编程语言,具有跨平台特性。源文件(.java)经 javac 编译成字节码(.class),再由 JVM 解释执行,因此“一次编写,到处运行”。JDK:开发工具包,含 javac、java、jdb 等。JRE:运行环境,含 JVM 与核心类库。JVM:虚拟机,负责加载并执行字节码。程序入口:public class ...
Java 基础知识点总结
一、Java 语言概述
Java 是一门面向对象的编程语言,具有跨平台特性。源文件(.java)经 javac 编译成字节码(.class),再由 JVM 解释执行,因此“一次编写,到处运行”。
- JDK:开发工具包,含
javac、java、jdb等。 - JRE:运行环境,含 JVM 与核心类库。
- JVM:虚拟机,负责加载并执行字节码。
程序入口:
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, Java!");
}
}
二、基本数据类型
| 类型 | 字节 | 取值范围 |
|---|---|---|
| byte | 1 | -128 ~ 127 |
| short | 2 | -32768 ~ 32767 |
| int | 4 | -2^31 ~ 2^31-1 |
| long | 8 | -2^63 ~ 2^63-1 |
| float | 4 | 单精度 |
| double | 8 | 双精度 |
| char | 2 | Unicode 字符 |
| boolean | 1 | true / false |
注意:long 字面量需加 L,float 需加 F。基本类型存于栈,引用类型存于堆。
三、变量与运算符
int a = 10;
double b = 3.14;
final int MAX = 100; // 常量,不可修改
运算符分为算术、关系、逻辑、位、三元运算符。注意:
==对基本类型比较值,对引用类型比较地址。- 字符串比较内容必须用
equals()。 &和&&区别:&&具有短路特性。
四、流程控制
if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
for (int i = 0; i < 5; i++) { }
while (condition) { }
do { } while (condition);
switch (day) {
case 1: System.out.println("周一"); break;
default: System.out.println("其他");
}
Java 14 之后支持增强 switch 表达式,写法更简洁。
五、数组
int[] arr = new int[5];
int[] nums = {1, 2, 3, 4};
for (int n : nums) {
System.out.println(n);
}
数组长度固定,通过 arr.length 获取。越界访问会抛出 ArrayIndexOutOfBoundsException。
六、面向对象三大特性
封装:属性私有化,通过 getter/setter 访问。
public class User {
private String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
继承:extends 单继承,子类可复用父类成员,通过 super 调用父类构造。
多态:父类引用指向子类对象,运行时决定调用哪个重写方法。
Animal a = new Dog();
a.speak(); // 调用 Dog 的 speak()
七、抽象类与接口
abstract class Shape {
abstract double area();
}
interface Flyable {
void fly(); // 默认 public abstract
default void info() { } // 默认方法
}
区别:抽象类可有构造器与成员变量,接口主要用于定义行为规范;一个类只能继承一个抽象类,但可实现多个接口。
八、String 与常用类
String s = "abc";
String s2 = new String("abc");
System.out.println(s == s2); // false
System.out.println(s.equals(s2)); // true
String 不可变,频繁拼接应使用 StringBuilder。另有 StringBuffer(线程安全但较慢)。
九、异常处理
try {
int r = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("除数不能为 0");
} finally {
System.out.println("一定执行");
}
Error:系统级错误,程序无法处理。Exception:可处理异常。分为受检异常与运行时异常。- 自定义异常继承
Exception或RuntimeException。
十、集合框架
| 接口 | 常用实现 | 特点 |
|---|---|---|
| List | ArrayList | 有序、可重复,查询快 |
| List | LinkedList | 增删快,查询慢 |
| Set | HashSet | 无序、不可重复 |
| Set | TreeSet | 有序、不可重复 |
| Map | HashMap | 键值对,键唯一 |
| Map | TreeMap | 按 key 排序 |
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
Map<String, Integer> map = new HashMap<>();
map.put("age", 18);
System.out.println(map.get("age"));
十一、多线程基础
Thread t = new Thread(() -> System.out.println("running"));
t.start();
也可实现 Runnable 或 Callable。线程有新建、就绪、运行、阻塞、终止五种状态。注意 synchronized 用于保证同步,避免竞态条件。
十二、常见易错点
String比较用equals(),不用==。- 重写
equals()时必须同时重写hashCode()。 - 局部变量必须先赋值才能使用,成员变量有默认值。
switch中忘记break会穿透。- 接口中的变量默认是
public static final。 - 自动装箱拆箱在循环中可能造成性能损耗。
finally中不要写return,会覆盖原有返回值。
十三、学习建议
先掌握语法与面向对象,再练习集合、异常与 IO,最后进入多线程、JVM 与框架。每学一个知识点都动手写 Demo,比只看不写有效得多。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)