当前位置:网站首页 > Java基础 > 正文

java基础包有哪些



简单介绍

Java类库(包)

Java 的应用程序接口 (API) 以包的形式来组织,每个包提供了大量的相关类、接口和异常处理类,这些包的集合就是 Java 的类库。

  • 包名以 Java 开始的包是 Java 核心包 (Java Core Package) ;
  • 包名以 Javax 开始的包是 Java 扩展包 (Java Extension Package) ,例如 javax.swing 包;
常用核心包介绍
  1. java.lang Java 编程语言的基本类库
  2. java.applet 创建 applet 需要的所有类
  3. java.awt 创建用户界面以及绘制和管理图形、图像的类
  4. java.io 通过数据流、对象序列以及文件系统实现的系统输入、输出
  5. java.net 用于实现网络通讯应用的所有类
  6. java.util 集合类、时间处理模式、日期时间工具等各类常用工具包
  7. java.sql 访问和处理来自于 Java 标准数据源数据的类
  8. java.test 以一种独立于自然语言的方式处理文本、日期、数字和消息的类和接口
  9. java.security 设计网络安全方案需要的一些类
  10. java.beans 开发 Java Beans 需要的所有类
  11. java.math简明的整数算术以及十进制算术的基本函数
  12. java.rmi 与远程方法调用相关的所有类
常用的Java扩展包
  1. javax.accessibility 定义了用户界面组件之间相互访问的一种机制
  2. javax.naming.* 为命名服务提供了一系列类和接口
  3. 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文档

  1. java.lang.Comparable接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序。默认从小到大
  2. 实现 Comparable 的类必须实现 compareTo(Object obj) 方法,两个对象即通过 compareTo(Object obj) 方法的返回值来比较大小。
  3. 如果当前对象this大于形参对象obj,则返回正整数,如果当前对象this小于形参对象obj, 则返回负整数,如果当前对象this等于形参对象obj, 则返回零。
  4. 实现Comparable接口的对象列表(和数组)可以通过 Collections.sort 或Arrays.sort进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。
  5. 对于类 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的大小:

  1. 如果方法返回正整数,则表示o1大于o2;如果返回0,表示相等;返回负整数,表示o1小于o2。
  2. 可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制。
  3. 还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序。

对集合中的对象排序代码案例如下:

 
总结
  1. Comparable是一个内部比较接口,通常对象需要内部排序时直接实现
  2. Comparator是一个外部比较接口,通常在对象中没有实现排序接口而有需要进行排序时实现
  3. Comparable接口的方式一旦一定,保证Comparable接口实现类的对象在任何位置都可以比较大小
  4. Comparator接口属于临时性的比较。

System

系统级的很多属性(例如:系统名称、jvm版本、)和控制方法都放置在该类的内部。该类位于java.lang包。查看API文档
构造器是私有的,无法实例化该类。其内部的成员变量和成员方法都是static的
成员变量
System类内部包含in、 out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。

Random

Random类是一个专门用来生成一个伪随机数的类,这个类提供了两个构造函数,一个使用默认的种子,另一个需要程序员显示传入一个long型整数的种子。与Math类中的random方法生成的伪随机数不同的是,Math的random方法生成的伪随机数取值范围是[0,1.0),Random类不仅可以生成浮点数的伪随机数,还可以生成整数类型的伪随机数,还可以指定伪随机数的范围非常好用。查看API文档

常用方法

版权声明


相关文章:

  • java基础之方法重载2024-10-20 12:26:02
  • javaee先学html还是java基础2024-10-20 12:26:02
  • java小白基础题2024-10-20 12:26:02
  • java基础入门编辑器2024-10-20 12:26:02
  • java基础用途2024-10-20 12:26:02
  • java零基础在线图书2024-10-20 12:26:02
  • java面试的基础问题2024-10-20 12:26:02
  • java实验二面向对象基础2024-10-20 12:26:02
  • 如何使用java实现最基础的UI2024-10-20 12:26:02
  • java基础3162024-10-20 12:26:02