目录
一 . 包的定义和使用
1.包的定义
(博哥有话说:在我们深入学习后会建立多个包,为了避免时间长会忘记,我们通常使用相关英文单词加驼峰命名法)
- 使用
package关键字定义包 - 必须是Java文件的第一条非注释语句
- 命名规范:全小写,公司域名倒写(如
com.example.mypackage) - 包名与目录结构必须一致
// 文件位置:com/example/mypackage/MyClass.java
package com.example.mypackage;
public class MyClass {
public void display() {
System.out.println("This is MyClass in com.example.mypackage");
}
}
2.包的导入
- 使用
import关键字导入其他包的类 - 可以导入单个类或整个包(使用
*) java.lang包自动导入- 静态导入:
import static
// 导入单个类
import com.example.mypackage.MyClass;
// 导入整个包
import java.util.*;
// 静态导入
import static java.lang.Math.PI;
public class ImportExample {
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.display();
Date today = new Date();
System.out.println("Today is: " + today);
System.out.println("PI value: " + PI);
}
}
3.jar包(了解)
(博哥有话说:我们大部分时间会导入jar包,具体情况具体分析)
4.系统常用包(了解)
java.lang:核心类(自动导入)java.util:集合框架、日期时间等java.io:输入输出java.net:网络编程java.sql:数据库操作java.awt/javax.swing:GUIjava.math:数学运算java.nio:非阻塞IOjava.time:日期时间API(Java 8+)
二 . 访问控制权限
(博哥有话说:访问权限很重要,熟知)
| 修饰符 | 同类 | 同包 | 子类 | 其他包 |
|---|---|---|---|---|
| private | ✔ | ✖ | ✖ | ✖ |
| default | ✔ | ✔ | ✖ | ✖ |
| protected | ✔ | ✔ | ✔ | ✖ |
| public | ✔ | ✔ | ✔ | ✔ |
三 . 构造方法私有化
- 将构造方法设为
private,阻止外部实例化 - 单例模式
- 工具类(只有静态方法)
- 工厂模式
// 单例模式示例
class Singleton {
private static Singleton instance;
private Singleton() {
// 私有构造方法
}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
public void showMessage() {
System.out.println("Hello from Singleton!");
}
}
// 工具类示例
class MathUtils {
private MathUtils() {} // 防止实例化
public static int add(int a, int b) {
return a + b;
}
public static double circleArea(double radius) {
return Math.PI * radius * radius;
}
}
public class PrivateConstructorDemo {
public static void main(String[] args) {
// 单例使用
Singleton singleton = Singleton.getInstance();
singleton.showMessage();
// 工具类使用
System.out.println("Sum: " + MathUtils.add(5, 3));
System.out.println("Area: " + MathUtils.circleArea(2.5));
// 以下代码会编译错误
// Singleton s = new Singleton();
// MathUtils utils = new MathUtils();
}
}
四 . 枚举(了解)
- 使用
enum关键字定义 - 枚举是特殊的类,继承
java.lang.Enum - 枚举常量默认是
public static final - 可以有构造方法、成员变量和方法
- 可以实现接口
// 简单枚举
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
// 复杂枚举
enum Planet {
MERCURY(3.303e+23, 2.4397e6),
VENUS(4.869e+24, 6.0518e6),
EARTH(5.976e+24, 6.37814e6);
private final double mass; // in kilograms
private final double radius; // in meters
Planet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
}
public double surfaceGravity() {
return 6.67300E-11 * mass / (radius * radius);
}
}
public class EnumDemo {
public static void main(String[] args) {
// 简单枚举使用
Day today = Day.FRIDAY;
System.out.println("Today is: " + today);
// 遍历枚举
System.out.println("All days:");
for (Day day : Day.values()) {
System.out.println(day);
}
// 复杂枚举使用
Planet earth = Planet.EARTH;
System.out.println("Earth gravity: " + earth.surfaceGravity());
}
}
Enum类
主要方法:
values():返回枚举所有值数组valueOf(String):根据名称返回枚举常量name():返回枚举常量名称ordinal():返回枚举常量序号compareTo():比较枚举常量顺序
enum Color {
RED, GREEN, BLUE
}
public class EnumMethodsDemo {
public static void main(String[] args) {
// values() 方法
Color[] colors = Color.values();
for (Color color : colors) {
System.out.println(color);
}
// valueOf() 方法
Color red = Color.valueOf("RED");
System.out.println("Red color: " + red);
// name() 和 ordinal() 方法
System.out.println("GREEN name: " + Color.GREEN.name());
System.out.println("GREEN ordinal: " + Color.GREEN.ordinal());
// compareTo() 方法
System.out.println("RED compareTo BLUE: " +
Color.RED.compareTo(Color.BLUE));
}
}

被折叠的 条评论
为什么被折叠?



