news 2026/4/19 17:05:23

学习Java39天

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
学习Java39天

包 (Package)

一、包的基本概念

  • 定义:包本质上是文件系统中的文件夹,用于对Java类进行分门别类的管理。

  • 作用

    1. 组织与管理:将功能相似或相关的类组织在一起,结构清晰。

    2. 避免命名冲突:不同包中可以存在同名类。

    3. 访问控制:与访问权限修饰符(public,protected, 默认,private)结合,提供不同级别的访问保护。

    4. 便于维护:项目规模扩大时,良好的包结构能使代码更易理解和维护。

二、包名的命名规范

遵循“公司域名反写 + 项目/模块名 + 功能分类”的原则。

  • 全部英文小写

  • 见名知意

  • 使用点.分隔层级,对应文件系统的目录结构。

  • 示例

    • com.google.android.utils(Google公司的Android项目工具类包)

    • org.apache.commons.io(Apache Commons项目的IO工具包)

    • cn.itcast.student.manager(传智播客的学生管理模块)

三、导包 (Import) 规则

当在一个类中使用另一个包中的类时,需要明确类的来源。

情况是否需要导包 (import)示例
使用同一个包下的类不需要com.example.A类中使用com.example.B
使用java.lang包下的类不需要String,System,Math
使用不同包下的类需要com.test.Main中使用java.util.Date
使用同名类(来自不同包)不能直接导包,必须使用全类名同时用到java.sql.Datejava.util.Date

全类名 (Fully Qualified Name):包名 + 类名。例如:java.util.Scanner

示例

java

package com.example.ui; // 导包:使用不同包下的类 import java.util.ArrayList; import java.util.Scanner; // 使用同名类:必须使用全类名 java.util.Date utilDate = new java.util.Date(); java.sql.Date sqlDate = new java.sql.Date(System.currentTimeMillis()); public class Main { public static void main(String[] args) { // 同一包下的类,无需导包 Helper helper = new Helper(); // java.lang 包下的类,无需导包 String str = "Hello"; // 导包后使用 Scanner sc = new Scanner(System.in); ArrayList<String> list = new ArrayList<>(); } }

final 关键字

final意为“最终的”,可以修饰方法变量

一、修饰类

  • 含义:被final修饰的类称为最终类

  • 特点不能被继承(没有子类)。

  • 目的:防止类被修改或扩展,保证类的安全性和稳定性。

  • 常见示例String类、System类、Scanner类等都是final类。

java

final class MyFinalClass { // 类内容 } // class SubClass extends MyFinalClass {} // 编译错误!不能继承final类

二、修饰方法

  • 含义:被final修饰的方法称为最终方法

  • 特点不能被重写 (Override)

  • 目的:防止子类修改该方法的实现,锁定方法行为。

  • 注意:一个类如果是final的,那么它的所有方法都隐式地是final的(因为无法被继承)。

java

class Parent { public final void show() { System.out.println("这是最终方法,不能被子类改变"); } } class Child extends Parent { // @Override // public void show() {} // 编译错误!不能重写final方法 }

三、修饰变量(常量)

  • 含义:被final修饰的变量称为常量 (Constant)

  • 核心规则只能被赋值一次,之后值不能再改变。

1. 常量的命名规范
  • 单个单词:全部大写,如MAX_VALUE,PI

  • 多个单词:全部大写,单词间用下划线_连接,如MAX_SPEED,FILE_PATH

  • 目的:提高代码可读性,一眼就能识别出是常量。

2. 常量在开发中的应用

常量的值通常在程序运行期间不会改变,常用作:

  • 系统配置信息:数据库连接字符串、文件路径、默认配置等。

  • 数学或物理常量:π、光速等。

  • 状态码或标志位:成功/失败代码。

  • 好处:集中管理,一处修改,全局生效;避免魔法数字,提高代码可维护性。

java

public class AppConfig { // 系统配置常量 public static final String DB_URL = "jdbc:mysql://localhost:3306/mydb"; public static final int MAX_CONNECTIONS = 100; // 业务常量 public static final int ORDER_STATUS_PENDING = 0; public static final int ORDER_STATUS_PAID = 1; }
3. final修饰变量的细节(非常重要)
变量类型final的作用示例与说明
基本数据类型变量存储的数据值不能改变final int x = 10;
x = 20;// 编译错误!
引用数据类型变量存储的地址值(引用)不能改变,但对象内部的状态可以改变final Student s = new Student("张三");
s = new Student("李四");// 错误!不能改变引用
s.setName("王五");// 正确!可以修改对象属性

引用类型final的示例

java

class Person { private String name; public Person(String name) { this.name = name; } public void setName(String name) { this.name = name; } public String getName() { return name; } } public class Test { public static void main(String[] args) { final Person p = new Person("Alice"); // p = new Person("Bob"); // 编译错误!不能改变p指向的地址 // 但可以修改p所指向对象的内部状态 p.setName("Cathy"); // 这是允许的! System.out.println(p.getName()); // 输出:Cathy final int[] arr = {1, 2, 3}; // arr = new int[]{4,5,6}; // 错误!不能改变引用 arr[0] = 100; // 正确!可以修改数组元素 System.out.println(arr[0]); // 输出:100 } }

四、final 使用总结

  1. final 类:安全、稳定、无需考虑继承的类。

  2. final 方法:锁定方法实现,防止被意外修改。

  3. final 变量

    • 局部常量:在方法内部使用。

    • 成员常量:必须在声明时初始化或在所有构造方法中初始化

    • 静态常量:通常与static结合使用,如public static final

  4. 设计思想final体现了“不变性”的设计,能增强代码的安全性、可预测性和性能(便于JVM优化)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 22:40:22

AdGuard Home终极配置指南:三步打造全网广告拦截系统

AdGuard Home终极配置指南&#xff1a;三步打造全网广告拦截系统 【免费下载链接】AdGuardHomeRules 高达百万级规则&#xff01;由我原创&整理的 AdGuardHomeRules ADH广告拦截过滤规则&#xff01;打造全网最强最全规则集 项目地址: https://gitcode.com/gh_mirrors/ad…

作者头像 李华
网站建设 2026/4/17 16:02:47

深入理解 JavaScript 闭包:从原理到实战避坑

在 JavaScript 面试与实际开发中&#xff0c;闭包是一个绕不开的核心概念。它既是 JS 语言的灵活性体现&#xff0c;也是容易引发内存泄漏、逻辑混乱的“重灾区”。很多开发者对闭包的理解停留在“函数嵌套函数”的表层&#xff0c;却忽略了其底层原理与场景化应用的精髓。本文…

作者头像 李华
网站建设 2026/4/17 22:49:19

LeagueAkari完整攻略:快速掌握自动选英雄与战绩分析神器

LeagueAkari完整攻略&#xff1a;快速掌握自动选英雄与战绩分析神器 【免费下载链接】LeagueAkari ✨兴趣使然的&#xff0c;功能全面的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/LeagueAkari 还在为…

作者头像 李华
网站建设 2026/4/17 18:37:54

为什么Hunyuan MT1.8B总失败?术语干预部署教程入门必看

为什么Hunyuan MT1.8B总失败&#xff1f;术语干预部署教程入门必看 近年来&#xff0c;轻量级多语言翻译模型成为边缘设备和低资源场景下的研究热点。腾讯混元推出的 HY-MT1.5-1.8B 模型凭借“手机端可运行、速度快、效果强”的宣传迅速引发关注。然而&#xff0c;许多开发者在…

作者头像 李华
网站建设 2026/4/17 23:37:42

猫抓进化史:从简单嗅探到全能下载神器的技术蜕变

猫抓进化史&#xff1a;从简单嗅探到全能下载神器的技术蜕变 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经遇到过这样的情况&#xff1a;在网上看到一个精彩的视频&#xff0c;却发现无法…

作者头像 李华