《零基础学Java编程:手把手教你写出第一个可运行的程序 - 基础知识篇八》

目录

一 . 包的定义和使用

        1.包的定义

        2.包的导入

        3.jar包(了解)

        4.系统常用包(了解)

二 . 访问控制权限

三 . 构造方法私有化

四 . 枚举(了解)

        Enum类


一 . 包的定义和使用

        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:GUI
  • java.math:数学运算
  • java.nio:非阻塞IO
  • java.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));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

博哥爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值