当前位置: 首页 > news >正文

java.uitl.Scanner 这个叫jar包吗?

 java.util.Scanner 并不直接等同于 “Jar 包”,而是 Java 标准库中的类。以下从技术原理和概念区分两方面详细解析:

一、java.util.Scanner 的本质:JDK 内置类

  1. 所属位置
    Scanner 类位于 JDK 核心库中,具体存放在 rt.jar(Runtime Jar)文件里。rt.jar 是 JDK 安装目录下 jre/lib 或 lib 路径下的核心运行时库,包含了 Java 标准库(如 java.langjava.utiljava.io 等包)的所有类。

  2. 与 Jar 包的关系

    • rt.jar 是一个 系统级别的 Jar 包,但它属于 JDK 自带的标准库,无需手动引入(不像第三方 Jar 包需要通过 Maven 等工具下载)。
    • 当 JVM 启动时,会自动加载 rt.jar 中的类,因此使用 java.util.Scanner 时无需额外添加依赖。

二、Jar 包的范畴:用户自定义与第三方库

  1. 标准库 vs 第三方 Jar 包

    • 标准库:如 java.utiljava.io 等包中的类,存放在 rt.jartools.jar 等 JDK 内置 Jar 中,属于 Java 语言的原生能力。
    • 第三方 Jar 包:如 Spring 框架的 spring-core.jar、Apache 工具类的 commons-lang3.jar 等,需要通过 Maven/Gradle 手动引入,存放在项目的依赖库中(如 Maven 的 .m2 仓库)。
  2. import 语句的作用
    import java.util.Scanner 只是 声明要使用该类,并不涉及 “引入 Jar 包” 的操作。只有当使用第三方库的类(如 import org.springframework.stereotype.Controller)时,才需要通过 Maven 等工具添加对应的 Jar 包依赖。

三、案例对比:标准库类与第三方类的依赖差异

场景示例代码依赖处理方式
使用标准库类import java.util.List;无需任何额外操作,JDK 已内置 rt.jar,包含 java.util.List(接口)和实现类(如 ArrayList)。
使用第三方类import org.springframework.boot.SpringApplication;需在 Maven 中添加 Spring Boot 依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency>,Maven 会自动下载对应的 spring-boot-starter-xxx.jar

四、核心概念总结

  1. Jar 包是类的容器:无论是 JDK 内置的 rt.jar,还是第三方的 spring-core.jar,本质都是打包类和资源的文件格式。
  2. import 声明类的位置import 语句用于告知编译器 “类的包路径”,而 是否需要手动引入 Jar 包,取决于类是否属于 JDK 标准库
    • 标准库类(如 java.util.*java.lang.*):无需引入 Jar 包,JDK 已包含。
    • 非标准库类(如 org.springframework.*com.google.gson.*):必须通过 Maven/Gradle 引入对应的 Jar 包依赖。

常见误区澄清

  • 误区:“import 某个类就等于引入了 Jar 包”。
    纠正:import 仅用于引用类的包路径,真正的依赖管理(如下载、加载 Jar 包)由构建工具(Maven/Gradle)或手动部署完成。例如,使用 Spring 的 @Autowired 注解时,必须先在 Maven 中添加 Spring 依赖,否则会出现 “类找不到” 的编译错误。

通过理解标准库与第三方库的区别,可更清晰地掌握 Java 开发中的依赖管理逻辑:JDK 内置类无需额外操作,第三方类需通过构建工具引入对应的 Jar 包。

 

http://www.xdnf.cn/news/1055053.html

相关文章:

  • 【Docker管理工具】安装Docker磁盘使用仪表板Doku
  • PG靶机复现 Mice
  • windows server部署.net项目(nopcommerce)
  • Luckfox Pico Pro Max SD 卡镜像扩容方法
  • Spark核心概念与DAG执行原理笔记
  • Skip-Gram CBOW
  • 通达信 玄学首板 抓首版指标
  • 深入探索Joomla子模板:解决模板更新覆盖问题的终极方案​
  • 调和级数 发散 P级数判别法
  • git 开源平台网站推荐 (2025-06 更新)
  • hot100 -- 14.贪心算法
  • 土建施工安全管理难?免费AI系统 24h 监控预警
  • Android16变更
  • NodeJS哪些情况下会造成内存泄漏和避免方法
  • Unity3D仿星露谷物语开发63之NPC移动
  • 多模态大语言模型arxiv论文略读(122)
  • SAP实施服务专家——哲讯科技,赋能企业智慧升级
  • DAY 50 超大力王爱学Python
  • ROS2中,如果对rviz格式文件做了修改,都需要重新编译才可以launch出新的rviz配置对么?
  • 4,QT文件操作
  • 02-D3.js 控制横向柱图切换数据带动画效果
  • 创始人IP如何崛起:系统化打造的实践路径 | 创客匠人
  • web性能优化
  • 动态规划之斐波那契数(一)
  • 【已解决】bash: /usr/bin/perl: bad interpreter: No such file or directory
  • UI学习汇总
  • Yocto vs Buildroot:SDK(软件开发套件)创建能力全面对比
  • 快速入门多线程(一):线程生命周期详解(附流程图详解)
  • Python数字信号处理——利用块间系数相关性的DCT域鲁棒盲图像水印(PyQT5界面)
  • 【分析学】 实数