JAVA JDK 源码学习

article/2025/9/19 12:13:31

JAVA JDK 源码学习 ,以1.8为例,按照下面图片顺序依次学习: applet ,awt,beans,io,lang,math,net,nio,rmi,security,sql,text,time,util

第一课,广泛认知它们

1 applet

Java applet 为使用Java语言编写的一些程序,可以直接插入到网页之中。

不建议去学,已经被淘汰了

2 awt

java.awt是一个软件包,包含用于创建用户界面和绘制图形图像的所有分类。

个人觉得用途不大,谁会用java 画图?

3 beans

java 的底层,没读懂

4 io

Java的核心库java.io提供了全面的IO接口。包括:文件读写、标准设备输出等。

5 lang

java.lang包是真正的核心,它提供了java中的基础类。包括基本Object类、Class类、String类、基本类型的包装类、基本的数学类等等最基本的类。

按理说是要最先学的。

6 math

java.math提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。

这个包里内容很少就是为了让java更精确,可以单独出来学

7 net

java.net是Java技术相关的社区网站,它还提供了基于网络的一个Java项目的源代码库。

网路链接相关的类都在这里。可它依赖了io /util等等很多包,需要靠后学。

8 nio

java.nio 是指非阻塞式IO , 它为java 提供非阻塞式的高伸缩性网络.

依赖io,需要靠后学

9 rmi

RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制,能够让在某个 Java虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。

在这个包,丰富了JAVA 的面向对象,可以单独出来学

10 security

java.security为java提供安全。建议单独出来靠后学。

11 sql

java 访问数据库的底层,可以单独学。

不是很常用了,被mybatis 等框架代替了

12 text

java.text,提供一些用于迭代文本的类,一些用于格式化和分析的类,一些用于整理字符串的类

13 time

定义了一些原生的date ,可以先学。

14 util

包含集合框架、遗留的 collections 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、日期Date类、堆栈Stack类、向量Vector类等)。集合类、时间处理模式、日期时间工具等各类常用工具包

实际开发中用的最多的一个包,要重点学。

第二课,开始逐一学习

1 java.lang.Object

如图,它有下面几个方法.

(1) equals 

需要知道的时,如果不重写这个equals 那么这里就是== 

  public boolean equals(Object obj) {return (this == obj);}

string 类的equals. 是先比地址再比value .

public boolean equals(Object anObject) {if (this == anObject) {return true;}if (anObject instanceof String) {String anotherString = (String)anObject;int n = value.length;if (n == anotherString.value.length) {char v1[] = value;char v2[] = anotherString.value;int i = 0;while (n-- != 0) {if (v1[i] != v2[i])return false;i++;}return true;}}return false;}

 

 

 

附录1: 统计类数量的代码段

这是看rt包里 java/util 里类的数量的方法。

 public static void main(String[] args) throws IOException {JarFile jarFile = new JarFile("C:\\Program Files\\Java\\jdk1.8.0_60\\jre\\lib\\rt.jar");Enumeration<JarEntry> jarEntries = jarFile.entries();AtomicInteger num = new AtomicInteger();jarFile.stream().forEach(m->{if(m.getName().startsWith("java/util") && !m.getName().contains("$") && m.getName().endsWith("class")){System.out.println(m.getName());num.getAndIncrement();}});System.out.println("共有类:"+num.toString());}

 


http://chatgpt.dhexx.cn/article/ZaZHpeUS.shtml

相关文章

JDK源码学习

Java集合框架之Collection集合 http://www.leocook.org/category/#java Java的集合框架分两大系Collection系和Map系&#xff0c;之所以要分开是因为Collection内存储的是线性集合&#xff0c;而 Map的元素是以键值对&#xff08;Key-Value&#xff09;的形式存的。其实Map和…

如何阅读Java源码?

阅读Java源码的前提条件&#xff1a; 1、技术基础 在阅读源码之前&#xff0c;我们要有一定程度的技术基础的支持。 假如你从来都没有学过Java&#xff0c;也没有其它编程语言的基础&#xff0c;上来就啃《Core Java》&#xff0c;那样是很难有收获的&#xff0c;尤其是《深入J…

JDK源码学习-基础

JDK源码学习 目录 基础 1. 安装 1.1 下载JDK 1.2 配置环境变量 1.3 验证 2. 简单的程序 2.1 编写代码 2.2 编译文件 2.3 执行类 3. java基本类型 基础 1. 安装 1.1 下载JDK Java下载地址&#xff1a;https://www.oracle.com/technetwork/java/javase/downloads/in…

bug修复---同时触发mousedown事件和touchstart事件

这两天遇到一个bug&#xff0c;每次点击下方键盘时&#xff0c;点击一次数字&#xff0c;文本框中会出现两次重复值&#xff0c;如下所示&#xff1a; 而且console中还有以下报错信息&#xff1a; 查看项目代码&#xff0c;代码如下&#xff1a; <ul><liv-for"…

Vue下 touchstart touchend 事件无效失效解决办法

Vue下 touchstart touchend 事件无效失效解决办法 <van-button:disabled"isLoading"plaintype"info"touchstart.native.prevent"touchstart"touchend.native.prevent"touchend"style"width:40%;height: 40px;"round>对…

触屏touchstart 与 click

设计效果&#xff1a;当手指点击或触摸红框线menuList之外的部分时&#xff0c;弹框menuList消失。 问题&#xff1a;在优化触屏版的时候发现如图问题&#xff0c;当menuList弹出&#xff0c;手指触摸屏幕向下滑动时&#xff0c;menuList弹框不消失&#xff0c;只有手指点击men…

移动端事件touchstart touchmove touchend 动画事件 过渡事件

在移动端新增了touch事件&#xff0c;因为手指的行为叫做“触摸”&#xff0c; 鼠标的行为叫做“点击” 但是它仍然支持点击事件&#xff0c;有300ms的延迟&#xff0c;检测是否双击 移动端的三个事件 touchstart&#xff1a;触摸开始 绑定方式&#xff1a; dom.addEve…

微信小程序、uniapp使用touchstart和touchmove左右滑动删除。以及解决上下抖动问题。

展示效果图直接上代码 <viewv-for"(item, index) in arr":key"item.id"touchstart"touchstart($event)"touchmove"touchmove(index, $event)":class"[touch-item, item.isTouchMove ? touch-move-active : ]" ><…

html按键使用touch,HTML touchstart事件用法及代码示例

每当用户触摸HTML元素时&#xff0c;就会使用touchstart事件执行脚本。触摸特定元素时&#xff0c;如果touchstart事件与之关联&#xff0c;则可以使用它触发javascript函数。 注意&#xff1a;touchstart事件仅在触摸屏设备上起作用。 用法: object.ontouchstart myScript; 以…

JavaScript touch 事件 touchstart touchmove touchend

JavaScript touch 事件 touchstart touchmove touchend MDN 官方文档&#xff1a; https://developer.mozilla.org/en-US/docs/Web/API/Touch_events 一、touch 事件有哪些 页面中的 touch 事件一般在移动端使用&#xff0c;pc 端是没有效果的。 touch 相关的事件有四个 touc…

触摸事件(touchstart、touchmove和touchend)

触摸事件(touch)会在用户手指放在屏幕上面的时候、在屏幕上滑动的时候或者是从屏幕上移开的时候出发。下面具体说明 touchstart事件&#xff1a;当手指触摸屏幕时候触发&#xff0c;即使已经有一个手指放在屏幕上也会触发。 touchmove事件&#xff1a;当手指在屏幕上滑动的时候…

Vue 绑定使用 touchstart touchmove touchend

今天要做一个页面div长按后触发事件&#xff0c;简单学习后实现如下&#xff1a; 先看代码&#xff1a; <template><div><div class"test" touchstart"gtouchstart()" touchmove"gtouchmove()" touchend"gtouchend()"…

H5移动端 利用touchstart 达到长按事件

一开始的没加.native ,结果长按事件不会触发, 原因是: 给vue组件绑定事件时候&#xff0c;必须加上native &#xff0c;否则会认为监听的是来自Item组件自定义的事件等同于在子组件中: 子组件内部处理click事件然后向外发送click事件: semit"dlick”.fn) //长按事件&am…

javaScript-touch事件详解(touchstart、touchmove和touchend)-滑动事件案例

HTML5中新添加了很多事件&#xff0c;但是由于他们的兼容问题不是很理想&#xff0c;应用实战性不是太强&#xff0c;所以在这里基本省略&#xff0c;咱们只分享应用广泛兼容不错的事件&#xff0c;日后随着兼容情况提升以后再陆续添加分享。今天为大家介绍的事件主要是触摸事件…

「移动端」touch事件,touchEvent对象

随着智能手机普及&#xff0c;有越来越多的手机网页和网页版游戏&#xff0c;手机触摸、移动、旋转等等&#xff0c;多种操作。一般电脑的人机交互靠的是鼠标&#xff0c;而手机用的就是触摸。区别有&#xff1a; PC 端一个电脑只能有一个鼠标&#xff0c;而移动端有多点触摸。…

移动端开发touchstart,touchmove,touchend事件详解使用

页面使用到了触摸事件"touchstart"&#xff0c;“touchmove”&#xff0c;“touchend”。需求&#xff1a;当你手指接触到屏幕并向左滑动时&#xff0c;被滑动的服务商信息开始向左滑动同时出现"编辑"和"停用"操作按钮。若继续用手指向右滑动&am…

C++智能指针的实现与使用(详解)

C智能指针的实现与使用(详解) 智能指针介绍 缘起 C指针的实际问题 分配内存忘记释放&#xff0c;导致内存泄漏有指针引用时释放内存&#xff0c;导致其它指针非法访问异常一些对象的声明周期难以明确 办法 首先重载运算符*、->、[]、使得一个类具有指针的操作 其次&a…

详谈智能指针

一、什么是智能指针 在讲智能指针之前我们必须先知道什么是智能指针&#xff0c;智能指针是一个类&#xff0c;是对普通指针的一个封装使得智能指针对象具有普通指针类型一样的操作。 智能指针是存储指向动态分配&#xff08;堆&#xff09;对象指针的类&#xff0c;用于生…

C++中智能指针详解

1、问题引入 在C中&#xff0c;静态内存和栈内存外&#xff0c;还有一部分内存称为堆程序用堆来存储动态分配的对象即那些在程序运行时分配的对象&#xff0c;当动态对象不再使用时&#xff0c;我们的代码必须显式的销毁它们。在C中一般使用“new”&#xff1a;在动态内存中为对…

C/C++智能指针

目录 1.1RAII(资源获取几初始化) 1.2auto_ptr 1.3unique_ptr 1.4shared_ptr 1.5weak_ptr 我们在在动态开辟空间的时候&#xff0c;malloc出来的空间如果没有进行释放&#xff0c;那么回传在内存泄漏问题。或者在malloc与free之间如果存在抛异常&#xff0c;那么还是有内存泄…