终于有人把Git最火Java全套详细笔记(吐血放出)资料给分享出来了
liuian 2025-09-29 07:21 59 浏览
前言
全文总共分为28部分,从原码、反码、补码一直到网络编程,因为内容实在是太多了 ,所以小编只把部分知识点拿出来粗略的介绍了一下,每个小节都有跟家细化的内容,希望大家能够理解与喜欢!!
1.原码、反码、补码
1. 原码、反码、补码
1.1. 原码
将最高位作为符号位(以
0 代表正, 1 代表负),其余各位代表数值本身的绝对值(以二进制表示) 。
为了简单起见,我们用1 个字节来表示一个整数:
+7 的原码为:00000111
-7 的原码为:10000111
问题:
0 的原码为:00000000
-0 的原码为:10000000
1.2. 反码
一个数如果为正,则它的反码与原码相同;
一个数如果为负,则符号位为1,其余各位是对原码取反。
为了简单起见,我们用1 个字节来表示一个整数:
+7 的反码为:00000111
-7 的反码为:11111000
问题:
+0 的反码为:00000000
-0 的反码为:11111111
1.3. 补码
利用溢出,我们可以将减法变成加法。
对于十进制数,如果从9 得到结果 5,可以用减法: 9-4=5;
因为 4+6=10,我们将 6 作为 4 的补数,将上式的减法改写为加法:
9+6=15;
去掉高位 1(也就是减去 10),得到结果 5。
对于 16 进制数,如果从C 得到结果 5,可以用减法: C-7=5;
因为 7+9=16,我们将 9 作为 7 的补数,将上式的减法改写为加法:
C+9=15 ;
去掉高位 1(也就是减去 16),得到结果 5。
在计算机中,如果我们用1 个字节表示一个数,一个字节有8 位,超过 8 位就进 1,在内存中情况为: 1 00000000,进位 1 被丢弃。
一个数如果为正,则它的原码、反码、补码相同;
一个数如果为负,则符号位为1,其余各位是对原码取反,然后整个数加1。
为了简单起见,我们用1 个字节来表示一个整数。
+7 的补码为:00000111
-7 的补码为:11111001
1.4. 负数的补码转换为十进制数
a、 先对各位取反;
b、 将其转换为十进制数;
c、 加上负号,再减去1。
例如: 11111010,最高位为 1,是负数,先对各位取反得00000101,转换为十进制数得5,加上负号得 -5,再减 1 得-6。
2.char
3.运算符
3.1.移位运算符
3.2.位运算符
3.3.逻辑运算符
4.流程控制
4.1.switch
4.2.break 和 continue
5.方法
5.1.构造方法
5.2.方法重载
6.this
7.继承
7.1.super
7.2.多态( polymorphism )
7.3.instanceof
8.static
9.final
10.abstract
11.类的加载
11.1.触发类加载的几种情况
11.2.类加载的顺序
12.接口( interface)
13.访问控制
14.Object 类
14.1.clone()
14.1.1.对象克隆过程
14.1.2.浅复制和深复制概念
14.2.finalize()
14.3.equals(Object obj)
14.4.toString()
15.String 类及对象池
15.1.String a="hello";
15.2.String c=new String("hello");
16.StringBuffer 和 StringBuilder
17.主方法参数
18.方法的可变长参数
19.包装类
19.1.Number
19.2.自动封箱 /自动解封( Autoboxing/Unboxing )
19.3.对象池
20.内部类
20.1.意义
20.2.四种形式的内部类
20.2.1.静态内部类
20.2.2.成员内部类
20.2.3.局部内部类
20.2.4.匿名内部类
20.3.内部类的应用
21.集合框架 (Collection Framework)
21.1.Iterator 接口和 Iterable 接口
21.2.Connection 接口和 Connections 类
21.2.1.java.util.Collection
21.2.2.java.util.Collections
21.3.List(列表)接口
21.3.1.ArrayList
21.3.2.LinkedList
21.3.3.Vector
21.4.Set(集合)接口
21.4.1.HashSet
21.4.2.TreeSet
21.5.排序的两种办法
21.5.1.java.lang.Comparable(可比较的)
21.5.2.java.util.Comparator( 比较器 )
21.6.Map
21.6.1.HashMap
21.6.2.Hashtable
21.6.3.Hashtable 下的子类 Properties 类
21.6.4.SortedMap 接口下的 TreeMap 类
22.泛型 (Generic)
22.1.泛型特点
22.2.通配符
22.2.1.上限通配符:
22.2.2.下限通配符
22.2.3.总结:
22.3.运用
23.异常
23.1.异常处理基础
23.2.异常的类继承结构
23.3.常见的未检查异常
23.4.throw
23.5.自定义异常类
24.反射( Reflection )
24.1.反射需要用到的类
24.1.1.java.lang.Class
24.1.2.java.lang.reflect.Field
24.1.3.java.lang.Package
24.1.4.java.lang.relect.Modifier
24.1.5.java.lang.reflect.Mothed
24.1.6.java.lang.reflect.Array
24.1.7.java.lang.reflect.Constructor
24.2.三种获得某个类的Class 对象的方法
24.2.1.Class c=Class.forName(" 类名 ");
24.2.2.Class c=类名 .class;
24.2.3.Class c=对象名 .getClass();
24.3.所能探查出来的类的特征
24.4.通过反射生成一个类的实例
24.4.1.第一种方法
24.4.2.第二种方法
25.File
25.1.构造方法
25.2.重点方法
25.3.目录
26.流
26.1.字节流
26.2.字符流
26.3.节点流 (Node Stream)
26.4.过滤流 (Filter Stream)
26.5.ObjectInputStream 和 ObjectOutputStream
26.6.字节流转化成字符流的桥转换器
26.7.文本文件和二进制文件
27.线程
27.1.概念与原理
27.1.1.操作系统中线程和进程的概念
27.1.2.Java中的线程
27.1.3.Java中的线程模型
27.1.4.一些常见问题
27.2.线程状态的转换
27.2.1.线程的七种状态
27.2.2.阻止线程执行
27.3.线程的同步与锁 .
27.3.1.同步和锁定
27.3.2.静态方法同步
27.3.3.如果线程不能获得锁会怎么样
27.3.4.何时需要同步
27.3.5.线程安全类
27.3.6.线程死锁
27.3.7.线程同步小结
27.4.线程的交互
27.4.1.线程交互的基础知识
27.4.2.多个线程在等待一个对象锁时候使用notifyAll() .
27.5.守护线程(后台服务线程)
27.6.并发协作 -生产者消费者模型
27.7.volatile 关键字
28.网络编程
28.1.TCP Socket 编程
TCP 是 Tranfer Control Protocol 的简称,是一种 面向连接的保证可靠传输的协议。通过TCP 协议传输, 得到的是一个 顺序的无差错的数据流。
发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP 协议的基础上进行通信,当一个socket(通常都是 serversocket)等待建立连接时,另一个socket 可以要求进行连接,一旦这两个socket 连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。
网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个 Socket。Socket 通常用来实现客户方和服务方的连接。
Socket 是 TCP/IP 协议的一个十分流行的编程界面,一个 Socket由一个 IP 地址和一个端口号唯一确定。
Socket:套接字是两台机器间通信的端点。是为了简化网络编程的复杂度而由开发语言提供的一个网络编程接口。
可以在网络上建立机器和机器之间可靠的、双向的、 持续的、点对点的流式连接。
传统的 Socket 编程(阻塞的,串行)
传统的基于多线程的
Socket 编程(阻塞的,并发)
基于多线程和 NIO 的非阻塞编程
阻塞的含义 :执行这些方法时, 只有这些方法有返回结果的情况下,程序才能继续运行,
否则执行该方法的进程或线程处于阻塞等待状态。
java.net 包中提供了两个类Socket 和 ServerSocket,分别用来表示双向连接的客户端和服务端。28.1.1. ServerSocket
创建一个 TCP 服务器端程序的步骤:
1). 创建一个 ServerSocket
ServerSocket ss= new ServerSocket(post) //只需要用端口号构造拿当前运行的应用程序,向系统申请一个端口号,并绑定该端口号。
2). 从 ServerSocket 接受客户连接请求
Socket s = server.accept();
3). 创建一个服务线程处理新的连接
4). 在服务线程中,从socket中获得 I/O 流ObjectInputStream put=new ObjectInputStream(s.getInputStream());
ObjectOutputStreamo put=newObjectOutputStream(s.getOutputStream());
5). 对 I/O 流进行读写操作,完成与客户的交互
6). 关闭 I/O 流
7). 关闭 Socket
28.1.2. Socket
建立 TCP 客户端
创建一个 TCP 客户端程序的步骤:
1).创建 Socket
Socket connection = new Socket(127.0.0.1, 7777);
2). 获得 I/O 流
3). 对 I/O 流进行读写操作
4). 关闭 I/O 流
5). 关闭 Socket
类 Socket提供了方法 getInputStream()和 getOutStream()来得到对应的输入 /输出流以进行读/写操作,这两个方法分别返回InputStream 和 OutputSteam 类对象。为了便于读/写数据,我们可以在返回的输入/输出流对象上建立过滤流,如
DataInputStream、 DataOutputStream
或 PrintStream 类 对 象 , 对 于 文 本 方 式 流 对 象 , 可 以 采 用 InputStreamReader 和
OutputStreamWriter 、PrintWirter 等处理。
例如:
PrintStream os=new PrintStream(new BufferedOutputStreem(socket. getOutputStream()));
DataInputStream is=new DataInputStream(socket.getInputStream());
PrintWriter out=new PrintWriter(socket.getOutStream(),true);
BufferedReader in=
new ButfferedReader(new InputSteramReader(Socket. getInputStream()));
每一个 Socket 存在时,都将占用一定的资源,在Socket 对象使用完毕时,要其关闭。
关闭 Socket 可以调用 Socket 的 Close() 方法。在关闭 Socket 之前,应将与Socket 相关的所有的输入 /输出流全部关闭,以释放所有的资源。而且要注意关闭的顺序,与Socket 相关的所有的输入 /输出该首先关闭,然后再关闭Socket。
os.close(); is.close();
socket.close();
28.2.UDP Socket编程
相比而言 UDP 的应用不如 TCP 广泛,几个标准的应用层协议HTTP ,FTP,SMT 使用的都是 TCP 协议。但是,随着计算机网络的发展,UDP 协议正越来越来显示出其威力,尤其是在需要很强的实时交互性的场合,如网络游戏,视频会议等,UDP 更是显示出极强的威力,下面我们就介绍一下Java 环境下如何实现UDP 网络传输。
TCP,可靠,传输大小无限制,但是需要连接建立时间,差错控制开销大。
UDP,不可靠,差错控制开销较小,传输大小限制在
64K 以下,不需要建立连接。
***************************************************************************
UDP(User Datagram Protocol):
是一种面向非连接的协议,
在正式通信前不必与对方先建立连接,不管对方状态就直接发送。 每个数据包都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地, 到达目的地的时间以及内容的正确性都是不能被保证的。这与现在手机短信非常相似。
UDP 适用于一次只传送少量数据、对可靠性要求不高的应用环境。
例如“ ping”命令可用来测试两台主机之间TCP/IP 通信是否正常:一次向对方主机发送 4 个 UDP 数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的,否则网络连接不正常。
正因为 UDP 协议没有连接的过程,所以它的通信效果高;但也正因为如此,它的可靠
性不如 TCP 协议高。 QQ 就使用 UDP 发消息,因此有时会出现收不到消息的情况。
28.2.1. DatagramSocket
用于在程序之间建立传送数据包的通信连接,DatagramPacket 则用来表示一个数据包。
先来看一下 DatagramSocket 的构造方法:
DatagramSocket();
DatagramSocket(int port );
DatagramSocket(int port, InetAddress laddr)
其中, port 指明 socket 所使用的端口号, 如果未指明端口号, 则把 socket 连接到本地主机上一个可用的端口。
laddr 指明一个可用的本地地址。
用数据包方式编写client/server 程序时,无论在客户方还是服务方,首先都要建立一个DatagramSocket 对象,用来接收或发送数据包,然后使用 DatagramPacket 类对象作为传输数据的载体。
28.2.2. DatagramPacket
构造方法 :
用于接收:
DatagramPacket(byte buf[],int length) ;DatagramPacket(byte[] buf, int offset, int length) ;
用于发送:DatagramPacket(byte buf[], int length, InetAddress addr, int port);
DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port) ;
其中, buf 中存放数据包数据, length 为数据包中数据的长度,addr 和 port 旨明目的地
址, offset 指明了数据包的位移量。
在接收数据前,应该采用上面的第一种方法生成一个DatagramPacket 对象,给出接收
数据的缓冲区及其长度。然后调用DatagramSocket 的方法 receive()等待数据包的到来,receive()将一直等待,直到收到一个数据包为止。
DatagramPacket packet=new DatagramPacket(buf, 256);
Socket.receive (packet);
发送数据包前,也要先生成一个新的DatagramPacket 对象,这时要使用上面的第二种构造方法,在给出存放发送数据的缓冲区的同时,还要给出完整的目的地址,包括IP 和端口号。发送数据是通过DatagramSocket 的方法 send()实现的, send()根据数据包的目的地址来寻径,以传递数据包。
DatagramPacket packet=new DatagramPacket(buf, length, address, port);
Socket.send(packet);
因篇幅限制,小编在这里就不做过多的介绍了,需要完整版java全套详细笔记资料的朋友,转发关注小编后,私信小编【技术】来领取就可以了。
希望大家学习完本文后,能够提升自己的技术深度和宽度,能够拿到更高的薪资和待遇~~~
相关推荐
-
- 驱动网卡(怎么从新驱动网卡)
-
网卡一般是指为电脑主机提供有线无线网络功能的适配器。而网卡驱动指的就是电脑连接识别这些网卡型号的桥梁。网卡只有打上了网卡驱动才能正常使用。并不是说所有的网卡一插到电脑上面就能进行数据传输了,他都需要里面芯片组的驱动文件才能支持他进行数据传输...
-
2026-01-30 00:37 liuian
- win10更新助手装系统(微软win10更新助手)
-
1、点击首页“系统升级”的按钮,给出弹框,告诉用户需要上传IMEI码才能使用升级服务。同时给出同意和取消按钮。华为手机助手2、点击同意,则进入到“系统升级”功能华为手机助手华为手机助手3、在检测界面,...
- windows11专业版密钥最新(windows11专业版激活码永久)
-
Windows11专业版的正版密钥,我们是对windows的激活所必备的工具。该密钥我们可以通过微软商城或者通过计算机的硬件供应商去购买获得。获得了windows11专业版的正版密钥后,我...
-
- 手机删过的软件恢复(手机删除过的软件怎么恢复)
-
操作步骤:1、首先,我们需要先打开手机。然后在许多图标中找到带有[文件管理]文本的图标,然后单击“文件管理”进入页面。2、进入页面后,我们将在顶部看到一行文本:手机,最新信息,文档,视频,图片,音乐,收藏,最后是我们正在寻找的[更多],单击...
-
2026-01-29 23:55 liuian
- 一键ghost手动备份系统步骤(一键ghost 备份)
-
步骤1、首先把装有一键GHOST装系统的U盘插在电脑上,然后打开电脑马上按F2或DEL键入BIOS界面,然后就选择BOOT打USDHDD模式选择好,然后按F10键保存,电脑就会马上重启。 步骤...
- 怎么创建局域网(怎么创建局域网打游戏)
-
1、购买路由器一台。进入路由器把dhcp功能打开 2、购买一台交换机。从路由器lan端口拉出一条网线查到交换机的任意一个端口上。 3、两台以上电脑。从交换机任意端口拉出网线插到电脑上(电脑设置...
- 精灵驱动器官方下载(精灵驱动手机版下载)
-
是的。驱动精灵是一款集驱动管理和硬件检测于一体的、专业级的驱动管理和维护工具。驱动精灵为用户提供驱动备份、恢复、安装、删除、在线更新等实用功能。1、全新驱动精灵2012引擎,大幅提升硬件和驱动辨识能力...
- 一键还原系统步骤(一键还原系统有哪些)
-
1、首先需要下载安装一下Windows一键还原程序,在安装程序窗口中,点击“下一步”,弹出“用户许可协议”窗口,选择“我同意该许可协议的条款”,并点击“下一步”。 2、在弹出的“准备安装”窗口中,可...
- 电脑加速器哪个好(电脑加速器哪款好)
-
我认为pp加速器最好用,飞速土豆太懒,急速酷六根本不工作。pp加速器什么网页都加速,太任劳任怨了!以上是个人观点,具体性能请自己试。ps:我家电脑性能很好。迅游加速盒子是可以加速电脑的。因为有过之...
- 任何u盘都可以做启动盘吗(u盘必须做成启动盘才能装系统吗)
-
是的,需要注意,U盘的大小要在4G以上,最好是8G以上,因为启动盘里面需要装系统,内存小的话,不能用来安装系统。内存卡或者U盘或者移动硬盘都可以用来做启动盘安装系统。普通的U盘就可以,不过最好U盘...
- u盘怎么恢复文件(u盘文件恢复的方法)
-
开360安全卫士,点击上面的“功能大全”。点击文件恢复然后点击“数据”下的“文件恢复”功能。选择驱动接着选择需要恢复的驱动,选择接入的U盘。点击开始扫描选好就点击中间的“开始扫描”,开始扫描U盘数据。...
- 系统虚拟内存太低怎么办(系统虚拟内存占用过高什么原因)
-
1.检查系统虚拟内存使用情况,如果发现有大量的空闲内存,可以尝试释放一些不必要的进程,以释放内存空间。2.如果系统虚拟内存使用率较高,可以尝试增加系统虚拟内存的大小,以便更多的应用程序可以使用更多...
-
- 剪贴板权限设置方法(剪贴板访问权限)
-
1、首先打开iphone手机,触碰并按住单词或图像直到显示选择选项。2、其次,然后选取“拷贝”或“剪贴板”。3、勾选需要的“权限”,最后选择开启,即可完成苹果剪贴板权限设置。仅参考1.打开苹果手机设置按钮,点击【通用】。2.点击【键盘】,再...
-
2026-01-29 21:37 liuian
- 平板系统重装大师(平板重装win系统)
-
如果你的平板开不了机,但可以连接上电脑,那就能好办,楼主下载安装个平板刷机王到你的个人电脑上,然后连接你的平板,平板刷机王会自动识别你的平板,平板刷机王上有你平板的我刷机包,楼主点击下载一个,下载完成...
- 联想官网售后服务网点(联想官网售后服务热线)
-
联想3c服务中心是联想旗下的官方售后,是基于互联网O2O模式开发的全新服务平台。可以为终端用户提供多品牌手机、电脑以及其他3C类产品的维修、保养和保险服务。根据客户需求层次,联想服务针对个人及家庭客户...
- 一周热门
-
-
用什么工具在Win中查看8G大的log文件?
-
如何修改图片拍摄日期?快速修改图片拍摄日期的6种方法
-
5步搞定动态考勤表!标记节假日、调休日?Excel自动变色!
-
RK3588-HDMIRX(瑞芯微rk3588芯片手册)
-
用纯Python轻松构建Web UI:Remi 动态更新,实时刷新界面内容
-
tplink无线路由器桥接教程(tplink路由器如何进行无线桥接)
-
R语言 | CNS绘图第1款——linkET万物皆可连
-
都说Feign是RPC,没有侵入性,为什么我的代码越来越像 C++
-
windows11专业版密钥最新(windows11专业版激活码永久)
-
如何计算指定日期区间内,有多少工作日和休息日?
-
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
