第九章 Java常用类库
Java中常用的网络编程库和工具介绍

Java中常用的网络编程库和工具介绍在当今互联网时代,网络编程成为了软件开发中不可或缺的一部分。
Java作为一种广泛应用的编程语言,拥有丰富的网络编程库和工具,为开发者提供了便捷的网络编程解决方案。
本文将介绍一些常用的Java网络编程库和工具。
一、SocketSocket是Java中最基本、最底层的网络编程工具之一。
它提供了一种用于网络通信的机制,通过TCP或UDP协议实现数据的传输。
使用Socket可以方便地创建客户端和服务器端的网络连接,并进行数据的读写操作。
Socket的使用相对较底层,需要开发者自行处理数据的拆分和组装,适合对网络编程有一定了解的开发者使用。
二、NIO(New IO)NIO是Java提供的一种新的I/O模型,相对于传统的阻塞式I/O,NIO提供了更高效的I/O操作方式。
NIO中的核心概念是通道(Channel)和缓冲区(Buffer),通过使用Selector来实现非阻塞式的I/O操作。
NIO的优势在于可以同时处理多个连接,提高了系统的并发性能。
NIO适用于需要高并发处理的网络编程场景,如服务器开发。
三、NettyNetty是一个基于NIO的高性能网络编程框架,它提供了一系列的抽象和组件,简化了网络编程的复杂性。
Netty的设计目标是提供快速、简单、可靠的网络编程解决方案,广泛应用于服务器开发、分布式系统、游戏开发等领域。
Netty提供了事件驱动、异步的编程模型,使得开发者可以方便地处理大量的并发连接和高并发请求。
四、Apache HttpClientApache HttpClient是一个功能强大的HTTP客户端库,用于发送HTTP请求和接收HTTP响应。
它支持各种HTTP协议,包括HTTP/1.1、HTTP/2和WebSocket 等。
HttpClient提供了简洁的API,使得开发者可以轻松地进行HTTP通信。
它可以用于编写爬虫、访问Web服务、模拟用户行为等场景。
Java常用类库

Java常⽤类库1、Object类package LESSON8;public class DEMO1 {/**ng.Object类是类层次结构中最顶层⽗类(根类/基类/超类)。
所有的类(包括数组)直接或者间接的继承⾃Object类,同时也继承了该类中的⽅法。
Object的构造⽅法Object类只有⼀个⽆参的构造⽅法Object()Object中常⽤的⽅法boolean equals(Object o) ⽐较两个对象是否相同int hashCode() 返回⼀个对象的哈希码String toString() 将⼀个对象转换为字符串*/public static void main(String[] args) {Object o1=new Object();Object o2=new Object();Object o3=o2;//equals(Object object)⽅法和==⽐较的区别//==可以⽐较基本数据类型也可以⽐较引⽤数据类型,equals只能⽤来⽐较引⽤数据类型//在Object类中。
==和equals⽐较的是⾸地址和内容是否相等//在其他类中,==表⽰⽐较⾸地址和内容是否相等,⽽equals只⽐较内容System.out.println(o1.equals(o2));//falseSystem.out.println(o1==o2);//falseSystem.out.println(o2.equals(o3));//true//获取对象的哈希码System.out.println(o1.hashCode());//24417480System.out.println(o2.hashCode());//13884241System.out.println(o3.hashCode());//13884241o1=o1.toString();if(o1 instanceof String){System.out.println("我属于String");}}}package ceshi;public class ceshi2 {public static void main(String[] args) {ceshi2 ceshi1=new ceshi2();ceshi2 ceshi2=new ceshi2();System.out.println(ceshi1==ceshi2);//false ⾸地址不同System.out.println(ceshi1.equals(ceshi2));//false ⾃⼰写的测试类,默认继承Object类,equals为Object类的⽅法。
Java的基础类库

Java基础类库
Java已经为编程者编制了许多类,这些类已 经经过测试,基本上不存在错误,这些类都 是编程的基础。如果不利用这些已存在的类, 编程工作将变得异常复杂,所以应尽可能多 的掌握Java基本类库的内容。 学习重点 ● 包的概念 ● ng中的几个基本类
1.2 包的引用
2、 Java语言类库的结构
Java 2平台类库共为程序员提供了很多个包, 每个包都分别负责不同的功能,除了ng 之外,其它包的内容只要经过import语句引用, 就可以在程序中使用。所有这些类的介绍和使 用方法,Java都提供了极其完善的技术文档, 这种机制在极大程度上释放了程序员,让他们 何以把更多的时间放在对象的设计上,而不是 语法和一些局部算法上。
3.2 Class类
Class类是非常特殊的,它的对象将伴随每 个类。当一个类X被编译后,就有一个特殊 的对象(Class对象)产生,它隐藏在X.class 文件中,Class对象是由编译系统自动生成 的。
输入输出流与文件处理
1 流的概念与分要求
理解流的概念,了解在Java中进行文件读、 写操作的方法
下面是javac编译器各种参数及其解释: -g 生成所有debug信息 -g:none 不生成任何debug信息 -g:{lines,vars,source} 只生成部分debug信息 -O 优化 -nowarn 不生成警告 -verbose 输出编译器的工作记录 -deprecation 输出所有过期API的位置 -classpath<path> 声明查找用户类库的路径 -sourcepath<path> 声明查找源文件的路径 -bootclasspath<path> 覆盖引导类文件路径 -extdirs<dirs> 覆盖安装扩展路径 -d<directory> 声明将生成的.class文件放在何处 -enconding<encoding> 声明源文件的编码方式 -traget<release> 未指定版本的虚拟机生成类文件
Java类库常用类

Java.long 和Java.util 常用类1.Enum2.包装类3.Math4.String5.StringBuffer6.日期时间类7.Random类Enum(ng.Enum的子类)枚举的定义语法:[Modifier] enum enumName{EnumContantName1[,EnumContantName1...[;]]//[field,method]}》Modifier 是访问修饰符,如public等》enum是关键字》EnumContantName1 , EnumContantName1...表示枚举常量列表,枚举常量之间以逗号隔开》//[field,method]表示其他成员,包括构造方法,至于枚举常量的后面》在枚举中,如果除了定义枚举常量,还定义其他成员,则枚举常量类表必须以分号(;)结尾enum好处》枚举使代码更易于维护,有助于确保为变量指定合法的,期望的值》枚举更易于输入,使用枚举赋值,只需要输入枚举名(.),加点》枚举使代码更清晰,允许描述性的名称表示数据,使用时直观方便包装类// 基本数据类型-转换-包装类public void jiben() {String bian = "11";Integer integer = new Integer(bian);// 初始化Integer integer1 = Integer.valueOf(11);// 赋值Integer integer2 = Integer.parseInt("1998");// String-intString str = integer2.toString();// int-StringInteger integer3 = Integer.valueOf(bian, 2);/** valueOf(bian, 2)方法不是把第几位转化为int类型!!这个int参数是你的这个字符串是什么基数!!2 就是二进制10 就是十进制返回值是* 以这个基数的十进制整数例如(Integer.parseInt("11",2))返回时3 不是11这是把11解析为二进制*/System.out.println("基本数据类型转换为包装类:" + integer3);}//包装类-转换-基本数据类型public void baozhuang(){Integer integer = Integer.valueOf(10);integer += 1; //可以拿类对象进行运算。
Java类库简介

Java lang包的继承关系
Java lang包的主要类
ng包中的常用类可以大致分为几种
各个基本类型进行封装而得到的"包装类"如 Byte,Char,Integer,Double,Boolean等; 线程有关的类,如Thread,ThreadGroup; Java环境有关的类,如ClassLoader, SecurityManager,Compiler; 错误类和异常类,除了图上已有的Error和 Exception之外,还有这两个类的许多派生类; 有运行时系统类Runtime,进程类Process,系 统类System等等
数学类Math
max,min,abs pow,exp,sin,cos… random
实现Math类
max,min,abs pow,exp,sin,cos… random
字符串类String
String类封装了有关字符串的操作.这里的 字符串是常量,创建后就不可改变. StringBuffer类则是动态可变的字符串缓冲, 它提供了一系列方法,把不同类型(如整型, 布尔型等)数据插入缓冲或追加在缓冲的末 尾.线程类ຫໍສະໝຸດ Java util包的主要类
Java的实用工具类库java.util包.在这个包中, Java提供了一些实用的方法和数据结构. Java提供日期(Data)类,日历(Calendar)类来产生 和获取日期及时间; 提供随机数(Random)类产生各种类型的随机数; 提供了堆栈(Stack),向量(Vector) ,位集合 (Bitset)以及哈希表(Hashtable)等类来表示相应的 数据结构
在程序中使用全名
常用Java类库
ng 语言支持包:字符串,线程等 java.util 程序语言包:时间,日期,数据结构等 java.io 输入输出包:文件处理等 java.awt 核心包:GUI,图像处理等 javax.swing扩展包:组件,插件等 网络支持包 java.applet 嵌入小程序包
java类库

8
(4) System类
该类提供的变量和方法可以使用标准输入 /输出设备,获取和设置系统属性等。 常量:in、out、err分别代表标准输入、 输出和标准错误流。(以后详细介绍) 方法:如设置主机、用户和当前目录等的 JAVA 运行环境。
9
它的属性和方法都是静态的,不能实例对 象。
2、java.until包
4
1、ng包
ng是Java语言的核心包, 它定义了Java 中的大多数基本类。包中包含基本数据类型的封 装 类 , 如 Number 类 ( 子 类 : Byte 、 Integer 、 Long 、 Short 、 Float 、 Double ) 、 字 符 类 Character、布尔类Boolean、字符串类String; 包中还包含数学类Math、系统类System、线程类 Thead、异常类Exception等。
Math类提供的方法都是用static修饰的,可以通过 类名直接使用该的方法。
7
(3)数据类型类
该包还定义了基本数据类型相对应的类:Boolean、 Character、Byte、Integer、Short、Long、Float、 Double。 基本数据类型不具备面向对象的特征,即每一种类型只表 示数据,而未将数据和对数据可进行的运算封装在类。而 JAVA的数据类型类是对基本数据类型的封装,为基本数据 类型提供一些常用数据和处理数据的方法。
Java语言程序会自动引该包。
5
(1)Object类
ng.Object类是Java中整个类层次结构的 根节结点。 Java中所有的其它类都是从Object类中派生出类 的(直接或间接地继承该类)。
Java开发常用类库之Hutool详解

Java开发常⽤类库之Hutool详解简介与安装简介Hutool是⼀个⼩⽽全的Java⼯具类库,通过静态⽅法封装,降低相关API的学习成本,提⾼⼯作效率,使Java拥有函数式语⾔般的优雅,让Java语⾔也可以“甜甜的”。
Hutool中的⼯具⽅法来⾃每个⽤户的精雕细琢,它涵盖了Java开发底层代码中的⽅⽅⾯⾯,它既是⼤型项⽬开发中解决⼩问题的利器,也是⼩型项⽬中的效率担当;Hutool是项⽬中“util”包友好的替代,它节省了开发⼈员对项⽬中公⽤类和公⽤⼯具⽅法的封装时间,使开发专注于业务,同时可以最⼤限度的避免封装不完善带来的bug。
Hutool名称的由来Hutool = Hu + tool,是原公司项⽬底层代码剥离后的开源库,“Hu”是公司名称的表⽰,tool表⽰⼯具。
Hutool谐⾳“糊涂”,⼀⽅⾯简洁易懂,⼀⽅⾯寓意“难得糊涂”。
Hutool如何改变我们的coding⽅式Hutool的⽬标是使⽤⼀个⼯具⽅法代替⼀段复杂代码,从⽽最⼤限度的避免“复制粘贴”代码的问题,彻底改变我们写代码的⽅式。
以计算MD5为例:【以前】打开搜索引擎 -> 搜“Java MD5加密” -> 打开某篇博客-> 复制粘贴 -> 改改好⽤【现在】引⼊Hutool -> SecureUtil.md5()Hutool的存在就是为了减少代码搜索成本,避免⽹络上参差不齐的代码出现导致的bug。
上述摘⾃安装在Maven项⽬中在项⽬的pom.xml的dependencies中加⼊以下内容:<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.5.8</version></dependency>⾮Maven项⽬中点击以下任⼀链接,下载hutool-all-X.X.X.jar即可:注意 Hutool 5.x⽀持JDK8+,对Android平台没有测试,不能保证所有⼯具类或⼯具⽅法可⽤。
JAVA常用类及方法收集

JAVA常用类及方法收集Java是一种面向对象的编程语言,拥有丰富的类库和方法,能够满足各种开发需求。
下面是一些常用的Java类及方法的收集,帮助您更好地使用Java进行开发。
1. Object类Object是所有类的根类,提供了一些常用的方法,如equals(,hashCode(,toString(等。
这些方法在所有类中都可以使用。
2. String类String类是用于操作字符串的类,提供了很多常用的方法,如indexOf(,substring(,length(等。
它是不可变的,一旦创建就不可以修改。
3. Math类Math类提供了一些数学运算的方法,如abs(,sqrt(,sin(等。
这些方法都是静态方法,可以直接通过类名调用。
4. StringBuilder和StringBuffer类StringBuilder和StringBuffer类是用于操作可变字符串的类,提供了一些常用的方法,如append(,insert(,delete(等。
StringBuilder是非线程安全的,而StringBuffer是线程安全的。
5. Date和Calendar类6. Arrays类Arrays类提供了对数组的操作方法,如sort(,binarySearch(,equals(等。
它还提供了一些用于数组的复制、填充和排序的静态方法。
7. ArrayList和LinkedList类ArrayList和LinkedList是用于存储和操作集合的类。
ArrayList是基于数组实现的,提供了快速的随机访问能力;LinkedList是基于链表实现的,提供了更好的插入和删除性能。
8. HashMap和Hashtable类HashMap和Hashtable是用于存储和操作键值对的类。
HashMap是非线程安全的,允许存在null键和null值;Hashtable是线程安全的,不允许存在null键和null值。
9. InputStream和OutputStream类InputStream和OutputStream是用于输入和输出字节流的类,提供了读取和写入字节的方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SimpleDateFormat构造方法
SimpleDateFormat() SimpleDateForห้องสมุดไป่ตู้at(String pattern) 按照指定的模式创建 SimpleDateFormat对象
java.text.SimpleDateFormat类
日期时间模式
java.text.SimpleDateFormat类
常用方法
String format(Date date);将一个java.util.Date对象按照 指定的模式格式化为日期 Date parse(String date);将一个日期字符串按照指定模 式解析为java.util.Date类型的对象
java.text.NumberFormat类
Date() 无参构造方法 Date(long time) 有长整形参数的构造方法 其他构造方法已经废弃(可以使用)
Date类常用方法
long getTime();返回1970 年 1 月 1 日 00:00:00 GMT 以 来此 Date 对象表示的毫秒数 String toString();将Date对象转换为字符串,默认的转 换格式为:dow mon dd hh:mm:ss zzz yyyy
常用的日历字段
AM_PM 上午或者下午 YEAR 年 MONTH 月 DATE 日 HOUR 12小时制 HOUR_OF_DAY 24小时制 MINUTE 分钟 SECOND 秒 MILLISECOND 毫秒
java.util.GregorianCalendar类
GregorianCalendar是Calendar的一个直接子类
java.util.Calendar类
Calendar常用方法
Calendar getInstance();返回一个Calendar对象 void set(int field,int x);设置日历字段的值 int get(int field);获取某个日历字段的值 java.util.Date getTime();返回代表该日历对象的Date值 void setTime(java.util.Date date);使用指定的Date设置该日 历对象
java.util.Calendar类
java.util.Date类中获取当前年、月、日和将时间格式 化以及将字符串类型的日期转换为Date对象的方法 都已经被废弃。 如果想要获取Date对象的年、月、日、星期等操作, 需要使用Calendar类以及其子类完成。 Calendar是一个抽象类,它为获取和修改年、月、日、 星期等日历字段提供了一系列的方法。
将Date对象转换为指定模式的字符串对象 将字符串日期时间按照指定模式解析为日期时间对象
作业二:
为以后开发方法,提供一个数字工具类,该类提供如 下方法
将数字转换为指定模式的字符串对象 将字符串数字按照指定模式解析为数字
NumberFormat是一个数字格式化抽象类
该类提供了格式化和解析数值的方法
常用方法
String format(double d)将数字格式化为字符串 Number parse(String s)将字符串解析为数字 void setMaximumFractionDigits(int newValue)设置最大小数 位 void setMinimumFractionDigits(int newValue) 设置最小小数 位
构造方法
DecimalFormat() DecimalFormat(String pattern)按照指定模式构建对象
java.text.DecimalFormat类
数字模式字符
java.text.DecimalFormat类
常用方法
String format(double d);格式化数字为字符串 Number parse(String str);解析字符串数字为Number对 象
在格式化和解析日期时间过程中,其子类 SimpleDateFormat更为常用
java.text.SimpleDateFormat类
SimpleDateFormat类
是一个以与语言环境有关的方式来格式化和解析日期 的具体类 它提供了格式化日期时间(日期时间字符串)和解析日 期时间(字符串日期时间)的方法
DateFormat以及子类SimpleDateFormat NumberFormat以及子类DecimalFormat
java.text.DateFormat
DateFormat是一个抽象的时间格式化类
DateFormat 是日期/时间格式化的抽象类,它以与语言 无关的方式格式化并解析日期或时间。 DateFormat 可帮助进行格式化并解析任何语言环境的 日期。对于月、星期,甚至日历格式(阴历和阳历), 其代码可完全与语言环境的约定无关。
通常情况下会使用其子类DecimalFormat格式化或者解析 数字
java.text.DecimalFormat类
DecimalFormat类
DecimalFormat 是 NumberFormat 的一个具体子类,用 于格式化十进制数字。该类设计有各种功能,使其能 够解析和格式化任意语言环境中的数,包括对西方语 言、阿拉伯语和印度语数字的支持。
提供了世界上大多数国家/地区使用的标准日历系统, 即中国所谓的阳历或者公历
常用方法
boolean isLeapYear(int year) 判断指定年份是不是闰年 void add(int field ,int x)为指定的日历字段增加值
java.text包
提供以与自然语言无关的方式来处理文本、日期、 数字和消息的类和接口 java.text包常用类或者接口
本章总结
java.util包下类的使用
Date Calendar以及子类 Scanner java.text包的使用 DateFormat以及子类SimpleDateFormat NumberFormat以及子类DecimalFormat
作业
作业一:
为了以后开发方便,提供一个日期时间工具类,该类 提供如下方法
java.util包
java.util包中放置了Java开发过程中常用的工具类, 如日期时间类,日历类等等 java.util包常用类
Date Calendar及其子类 集合接口以及实现类 集合工具类 数组工具类等等
java.util.Date类
Date类表示特定的时间,可以精确到毫秒。 Date类的构造方法
Java语言基础 第九章 常用类库
上章内容
ng包
Object String StringBuffer和StringBuilder 包装类 Math
本章内容
java.util包
Date类 Calendar类及其子类
java.text包
SimpleDateFormat/DecimalFormat