简单介绍
Java类库(包)
Java 的应用程序接口 (API) 以包的形式来组织,每个包提供了大量的相关类、接口和异常处理类,这些包的集合就是 Java 的类库。
- 包名以 Java 开始的包是 Java 核心包 (Java Core Package) ;
- 包名以 Javax 开始的包是 Java 扩展包 (Java Extension Package) ,例如 javax.swing 包;
常用核心包介绍
- java.lang Java 编程语言的基本类库
- java.applet 创建 applet 需要的所有类
- java.awt 创建用户界面以及绘制和管理图形、图像的类
- java.io 通过数据流、对象序列以及文件系统实现的系统输入、输出
- java.net 用于实现网络通讯应用的所有类
- java.util 集合类、时间处理模式、日期时间工具等各类常用工具包
- java.sql 访问和处理来自于 Java 标准数据源数据的类
- java.test 以一种独立于自然语言的方式处理文本、日期、数字和消息的类和接口
- java.security 设计网络安全方案需要的一些类
- java.beans 开发 Java Beans 需要的所有类
- java.math简明的整数算术以及十进制算术的基本函数
- java.rmi 与远程方法调用相关的所有类
常用的Java扩展包
- javax.accessibility 定义了用户界面组件之间相互访问的一种机制
- javax.naming.* 为命名服务提供了一系列类和接口
- javax.swing.* 提供了一系列轻量级的用户界面组件,是目前 Java 用户界面常用的包
Java类
Java类也大部分都是继承超类object的子类 有着不同的用法。jdk中提供了字符串、时间、数字、文件、网络、异常等相关处理的类。
字符串处理类
String、StringBuilder、StringBuffer
String
String声明为final的,不可被继承,代表不可变的字符序列;底层使用final char[]存储;实现了Serializable接口:表示字符串是支持序列化的。
使用注意:String的每次改变都会生成一个新的对象,需要用String对象去接收。
常用方法:见String类的API文档
StringBuilder
StringBuffer
StringBuffer 与 StringBuilder 的扩容问题
包装类
Java中的基本数据类型没有方法和属性,而包装类就是为了让这些拥有方法和属性,实现对象化交互。
包装类与对应基本数据类型关系如下图:
包装类和基本数据类型之间的转换
装箱:基本数据类型转换为包装类;
拆箱:包装类转换为基本数据类型。
每一个包装类转换的方法和下述中的基本一致:
- 通过包装类Integer.toString()将整型转换为字符串;
- 通过Integer.parseInt()将字符串转换为int类型;
- 通过valueOf()方法把字符串转换为包装类然后通过自动拆箱。
数学计算类
和数学计算相关的除了基本数据类型除外,还有Math、BigDecimal、BigInteger等类。
Math
BigInteger
BigDecimal
用于商业计算中,要求数字精度比较高,用java.math.BigDecimal类, 它支持不可变的、任意精度的有符号十进制定点数。
常用方法:见BigDecimal类的API文档
时间相关的类
jdk中提供了很多时间操作的类,可以获取时间、对时间进行增减、格式化等操作。时间操作类分为jdk8之前和jdk8及之后的版本的时间类。
jdk8之前时间操作类
Date
SimpleDateFormat
java.text.SimpleDateFormat类 :一个不与语言环境有关的方式来格式化和解析日期的具体类。可以实现Date和String类型的相互转化(查看API文档)
Calendar
java.util.Calendar(日历)类:Calendar是一个抽象基类,主用用于完成日期字段之间相互操作(例如时间加减操作、获取指定年、月、日的信息)的功能。(查看API文档)
- 获取月份时: 一月是0,二月是1,以此类推, 12月是11
- 获取星期时: 周日是1,周二是2 , 。 。。。周六是7
jdk8时间操作类
LocalDate
LocalDate代表IOS格式(yyyy-MM-dd) 的日期,可以存储生日、纪念日等日期。(查看API文档)
LocalTime
LocalTime表示一个时间, 而不是日期。(查看API文档)
LocalDateTime
LocalDateTime是用来表示日期和时间的,这是一个最常用的类之一。(查看API文档)
DateTimeFormatter
查看DateTimeFormatter的API文档
比较器
ava实现对象排序的方式有两种:自然排序: java.lang.Comparable 和 定制排序: java.util.Comparator
Comparable
查看ComparableAPI文档
- java.lang.Comparable接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序。默认从小到大
- 实现 Comparable 的类必须实现 compareTo(Object obj) 方法,两个对象即通过 compareTo(Object obj) 方法的返回值来比较大小。
- 如果当前对象this大于形参对象obj,则返回正整数,如果当前对象this小于形参对象obj, 则返回负整数,如果当前对象this等于形参对象obj, 则返回零。
- 实现Comparable接口的对象列表(和数组)可以通过 Collections.sort 或Arrays.sort进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。
- 对于类 C 的每一个 e1 和 e2 来说,当且仅当 e1.compareTo(e2) == 0 与1.equals(e2) 具有相同的 boolean 值时,类 C 的自然排序才叫做与 equals一致。 建议(虽然不是必需的) 最好使自然排序与 equals 一致。
Comparable 的典型实现: (默认都是从小到大排列的)
6. String:按照字符串中字符的Unicode值进行比较
7. Character:按照字符的Unicode值来进行比较
8. 数值类型对应的包装类以及BigInteger、 BigDecimal:按照它们对应的数值大小进行比较
9. Boolean: true 对应的包装类实例大于 false java基础包有哪些 对应的包装类实例
10. Date、 Time等:后面的日期时间比前面的日期时间大
Comparator
当元素的类型没有实现java.lang.Comparable接口而又不方便修改代码,或者实现了java.lang.Comparable接口的排序规则不适合当前的操作,那么可以考虑使用 Comparator 的对象来排序, 强行对多个对象进行整体排序的比较。查看API文档
重写compare(Object o1,Object o2)方法,比较o1和o2的大小:
- 如果方法返回正整数,则表示o1大于o2;如果返回0,表示相等;返回负整数,表示o1小于o2。
- 可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制。
- 还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序。
对集合中的对象排序代码案例如下:
总结
- Comparable是一个内部比较接口,通常对象需要内部排序时直接实现
- Comparator是一个外部比较接口,通常在对象中没有实现排序接口而有需要进行排序时实现
- Comparable接口的方式一旦一定,保证Comparable接口实现类的对象在任何位置都可以比较大小
- Comparator接口属于临时性的比较。
System
系统级的很多属性(例如:系统名称、jvm版本、)和控制方法都放置在该类的内部。该类位于java.lang包。查看API文档
构造器是私有的,无法实例化该类。其内部的成员变量和成员方法都是static的
成员变量
System类内部包含in、 out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。
Random
Random类是一个专门用来生成一个伪随机数的类,这个类提供了两个构造函数,一个使用默认的种子,另一个需要程序员显示传入一个long型整数的种子。与Math类中的random方法生成的伪随机数不同的是,Math的random方法生成的伪随机数取值范围是[0,1.0),Random类不仅可以生成浮点数的伪随机数,还可以生成整数类型的伪随机数,还可以指定伪随机数的范围非常好用。查看API文档
常用方法
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/25667.html