Java基础类库简介

文章目录

  • Java基础类库简介
    • 一、Java基础类库介绍
    • 二、语言包(java.lang)
      • (1)数据类型包裹类
        • 1.生成数据类型包裹类对象的方法
        • 2.得到基本数据类型数据的方法
        • 3.装箱与拆箱
      • (2)常量字符串类String
      • (3)变量字符串类StringBuffer
      • (4)数学类(Math)
      • (5)系统和运行时类(System、Runtime)
      • (6)类操作类(Class、ClassLoader)
    • 三、实用包(java.util)
      • (1)Date类
      • (2)Calendar类
      • (3)GregorianCalendar类
      • (4)StringTokenizer类
    • 四、文本包(java.text)

一、Java基础类库介绍

  • Java提供了用于语言开发的类库,称为Java基础类库(JFC,Java Foundational Class) ,也称应用程序编程接口(API,Application Programming Interface),分别放在不同的包中。
  • Java提供的包主要有:java.lang,java.io,java.math,java.util,java.applet,java.awt,java.awt.datatransfer,java.awt.event,java.awt.image,java.beans,java.net,java.rmi,java.security,java.sql等

二、语言包(java.lang)

语言包java.lang提供了Java语言最基础的类,包括

  • Object类
  • 数据类型包裹类(the Data Type Wrapper)
  • 字符串类(String、StringBuffer)
  • 数学类(Math)
  • 系统和运行时类(System、Runtime)
  • 类操作类(Class,ClassLoader)

(1)数据类型包裹类

对应Java的每一个基本数据类型(primitive data type)都有一个数据包裹类。每个包裹类都只有一个类型为对应的基本数据类型的属性域

基本数据类型 数据包裹类
boolean Boolean
byte Byte
char Character
short Short
int Integer
long Long
float Float
double Double

1.生成数据类型包裹类对象的方法

  • 从基本数据类型的变量或常量生成包裹类对象

    double x = 1.2;
    Double a = new Double(x);
    Double b = new Double(-5.25);
    
  • 从字符串生成包裹类对象

     Double c = new Double("-2.34");Integer i = new Integer("1234");
    
  • 已知字符串,可使用valueOf方法将其转换成包裹类对象:

    Integer.valueOf("125"); Double.valueOf("5.15");
    
  • 自动装箱

    Integer i =3;
    Double d = -5.25
    

2.得到基本数据类型数据的方法

  • 每一个包裹类都提供相应的方法将包裹类对象转换回基本数据类型的数据

    anIntegerObject.intValue()   // 返回 int类
    aCharacterObject.charValue() // 返回 char类型的数据
    
  • Integer、Float、Double、Long、Byte 及Short 类提供了特殊的方法能够将字符串类型的对象直接转换成对应的int、float、double、long、byte或short类型的数据

    Integer.parseInt(“234”)        // 返回int类型的数据
    Float.parseFloat(“234.78”)     // 返回float类型的数据
    
  • 自动拆箱

    Integer a = new Integer(3);
    int i = a;
    

3.装箱与拆箱

装箱(boxing):把基本类型数据包装成对象,如:

Integer obj = new Integer(8);

拆箱(unboxing):把对象内部基本数据提取出来。要先装后拆,如:

Boolean objb = new Boolean(false);      //装箱
boolean b = objb.booleanValue();          //拆箱

装箱的两种做法:

  • (1)调用数据封装类构造方法,如:

    Integer obj = new Integer(i)//设int i = 8
    
  • (2)(应优先采用)调用封装类数据转对象的静态方法,如:

    Integer obj = Integer.valueOf(i)
    

数据封装类还提供一些静态常量字段,如:

  • Integer.MAX_VALUE:int型最大值2147483647。
  • Integer.MIN_VALUE:int型最小值-2147483648。

数据封装类还提供与String类型转换的方法。如 Integer类方法:

toString(int i);
parseInt(String s);

基本数据和对应封装类对象之间的自动转换。如:

Integer obj = 8;     //自动装箱,

相当于

Integer obj = new Integer(8);

自动拆箱例:

int i = obj;                             //自动拆箱,拆箱后再赋值
int sum = obj + obj;             //自动拆箱,拆箱后再进行加法运算
Integer obj2 = obj + obj;    //自动拆箱后相加,再自动装箱为对象

相当于下面拆箱、装箱语句:

int i = obj.intValue();
int sum = obj.intValue() + obj.intValue();
Integer obj2 = Integer.valueOf(obj.intValue() + obj.intValue());

正是有了自动装箱操作,才能使默认元素类型为 Object 的 ArrayList 集可以直接添加char、int和double等基本类型数据。
注:自动装箱和拆箱会降低程序运行效率,要慎用。

(2)常量字符串类String

该类字符串对象的值和长度都不变化,称为常量字符串

  • 生成String类对象的方法

    String aString;
    
    aString = “This is a string”
    
  • 调用构造方法生成字符串对象

    new String();
    
    new String(String value);
    
    new String(char[] value);
    
    new String(char[] value, int offset, int count);
    
    new String(StringBuffer buffer);
    

String类的常用方法:

(3)变量字符串类StringBuffer

其对象是可以修改的字符串

  • 字符的个数称为对象的长度(length)
  • 分配的存储空间称为对象的容量(capacity)

与String类的对象相比,执行效率要低一些

该类的方法不能被用于String类的对象

生成StringBuffer类的对象:

  • 生成容量为16的空字符串对象

    new StringBuffer();
    
  • 生成容量为size的空字符串对象

    new StringBuffer(int size);
    
  • 生成aString的一个备份,容量为其长度 +16

    new StringBuffer(String aString);
    

StringBuffer类的常用方法:

例:已知一个字符串,返回将字符串中的非字母字符都删除后的字符串

class StringEditor { public static String removeNonLetters(String original) {    StringBuffer aBuffer = new StringBuffer(original.length()); char aCharacter;        for (int i=0; i<original.length(); i++) { aCharacter = original.charAt(i); if (Character.isLetter(aCharacter)) aBuffer.append(new Character(aCharacter)); } return new String(aBuffer); } }
public class StringEditorTester { public static void main(String args[]) { String original = "Hello123, My Name is Mark,       234I think you are my classmate?!!";            System.out.println(StringEditor.removeNonLetters(original)); } }

运行结果

HelloMyNameisMarkIthinkyouaremyclassmate

(4)数学类(Math)

(Java中三种计算随机数)

提供一组常量和数学函数,例如

  • E和PI常数
  • 求绝对值的abs方法
  • 计算三角函数的sin方法和cos方法
  • 求最小值、最大值的min方法和max方法
  • 求随机数的random方法等

其中所有的变量和方法都是静态的(static)
是终结类(final),不能从中派生其他的新类

  • Java Math.random()函数

    • 调用这个Math.random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。
  • java.util.Random类

    • Random类的两种构造方法:
      Random():创建一个新的随机数生成器。
      Random(long seed):使用单个 long 种子创建一个新的随机数生成器。

    • 可以在构造Random对象的时候指定种子,如:

      Random r1 = new Random(20);
      
    • 或者默认当前系统时间的毫秒数作为种子数:

      Random r1 = new Random();
      
    • 需要说明的是:在创建一个Random对象的时候可以给定任意一个合法的种子数,种子数只是随机算法的起源数字,和生成的随机数的区间没有任何关系。

    函数 作用
    protected int next(int bits) 生成下一个伪随机数。
    boolean nextBoolean() 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的boolean值。
    void nextBytes(byte[] bytes) 生成随机字节并将其置于用户提供的 byte 数组中。
    double nextDouble() 返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布的 double值。
    float nextFloat() 返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布float值。
    double nextGaussian() 返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的double值,其平均值是0.0标准差是1.0。
    int nextInt() 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。
    int nextInt(int n) 返回一个伪随机数,它是取自此随机数生成器序列的、在(包括和指定值(不包括)之间均匀分布的int值。
    long nextLong() 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。
    void setSeed(long seed) 使用单个 long 种子设置此随机数生成器的种子。
  • 获取系统时间System.currentTimeMillis()

(5)系统和运行时类(System、Runtime)

  • System类

    • 访问系统资源
      arraycopy() 复制一个数组
      exit() 结束当前运行的程序
      currentTimeMillis() 获得系统当前日期和时间等
    • 访问标准输入输出流
      System.in 标准输入,表示键盘
      System.out 标准输出,表示显示器
  • Runtime类
    • 可直接访问运行时资源
      totalMemory() 返回系统内存总量
      freeMemory() 返回内存的剩余空间

(6)类操作类(Class、ClassLoader)

  • Class类

    • 提供运行时信息,如名字、类型以及父类
    • Object类中的getClass方法返回当前对象所在的类,返回类型是Class
    • 它的getName方法返回一个类的名称,返回值是String
    • 它的getSuperclass方法可以获得当前对象的父类
  • ClassLoader类
    • 提供把类装入运行时环境的方法

Class类应用举例

public class ClassTest { public static void main(String args[]) {   BankAccount anAccount = new BankAccount(); Class aClass = anAccount.getClass();       System.out.println(aClass); System.out.println(aClass.getName()); }
}

运行结果

class BankAccount
BankAccount

三、实用包(java.util)

实用包(java.util)——实现各种不同实用功能

  • 日期类:描述日期和时间

    • Date
    • Calendar
    • GregorianCalendar
  • 集合类
    • Collection(无序集合)、Set(不重复集合)、List(有序不重复集合)、Enumeration(枚举)、LinkedList(链表)、Vector(向量)、Stack(栈)、Hashtable(散列表)、TreeSet(树)
  • StringTokenizer类
    • 允许以某种分隔标准将字符串分隔成单独的子字符串

(1)Date类

  • 构造方法

    Date() ;// 获得系统当前日期和时间值。
    Date(long date);//  以date创建日期对象,date表示从GMT(格林威治)时间1970-1-1 00:00:00开始至某时刻的毫秒数
    
  • 常用方法

    getTime()
    

    返回一个长整型表示时间,单位为毫秒(millisecond)

    after(Date d)
    

    返回接收者表示的日期是否在给定的日期之后

    before(Date d)
    

    返回接收者表示的日期是否在给定的日期之前

(2)Calendar类

  • 一个抽象的基础类,支持将Date对象转换成一系列单个的日期整型数据集,如YEAR、MONTH、DAY、HOUR等常量

  • 它派生的GregorianCalendar类实现标准的Gregorian日历

  • 由于Calendar是抽象类,不能用new方法生成Calendar的实例对象,可以使用getInstance()方法创建一个GregorianCalendar类的对象

  • Calendar类中声明的常量:

    • Calendar.SUNDAY
    • Calendar.MONDAY
    • Calendar.TUESDAY
    • Calendar.SATURDAY
    • Calendar.JANUARY
    • Calendar.FEBRUARY
    • Calendar.AM
  • Calendar类中的方法

    • isLeapYear(int year) 返回给定的年份是否是润年
    • get(int field) 取得特定Calendar对象的信息
      aCalendar.get(java.util.Calendar.YEAR);
      aCalendar.get(java.util.Calendar.MONTH);
      aCalendar.get(java.util.Calendar.DAY_OF_WEEK);
      aCalendar.get(java.util.Calendar.MINUTE);
      ...
      
    • set(int field, int value) 给日期域设定特定的值
      aCalendar.set(Calendar.MONTH, Calendar.JANUARY);
      aCalendar.set(1999, Calendar.AUGUST, 15);
      

(3)GregorianCalendar类

用于查询及操作日期

  • 构造方法

    new GregorianCalendar();                     // 当前日期
    new GregorianCalendar(1999, 11, 31)  ;  // 特定日期
    new GregorianCalendar(1968, 0, 8, 11, 55) ;// 日期和时间
    
  • getTime()方法 返回Date对象,显示日历

    System.out.println(new GregorianCalendar().getTime());
    System.out.println(new GregorianCalendar(1999, 11, 31).getTime());
    System.out.println(new GregorianCalendar(1968, 0, 8, 11, 55).getTime());
    

(4)StringTokenizer类

  • 允许以某种分隔标准将字符串分隔成单独的子字符串,如可以将单词从语句中分离出来

  • 术语分隔符(delimeter)是指用于分隔单词(也称为标记,tokens)的字符

  • 常用方法

    int countTokens();  //返回单词的个数
    String nextToken();   //返回下一个单词
    boolean hasMoreTokens(); //是否还有单词
    
  • 生成StringTokenizer类的对象的方法

    new StringTokenizer(String aString);
    

    指定了将被处理的字符串,没有指定分隔符(delimeter),这种情况下默认的分隔符,java 默认的分隔符是空格("")、制表符(\t)、换行符(\n)、回车符(\r)。

    new StringTokenizer(String aString, String delimiters);
    

    除了指定将被处理的字符串,还指定了分隔符字符串,如分隔符字符串可以为“,:;|_()”

    new StringTokenizer(String  aString, String  delimiters, boolean  returnDelimiters);
    

    第三个参数如果为true,则分隔符本身也作为标记返回

四、文本包(java.text)

文本包(java.text)提供各种文本或日期格式,包含

  • Format类(抽象类)

  • DateFormat类(抽象类)

    DateFormat df = DateFormat.getDatelnstance();//得到SimpleDateFormat对象
    
  • SimpleDateFormat类(是DateFormat的子类)

    • 使用已定义的格式对日期对象进行格式化

    • 构造方法 以一指定格式的字符串作为参数

      new java.text.SimpleDateFormat(formatString);
      
    • format(Date d) 将此种格式应用于给定的日期

      aSimpleDateFormat.format(aDate);
      

【Java程序设计】Java基础类库简介相关推荐

  1. Java程序设计语言基础01:绪论

    目录 1. 初探HelloWorld程序 1.1 类(Class)语法元素 1.2 main方法(main method)语法元素 1.3 System.out.println 1.4 字符串 2. ...

  2. java程序设计专业介绍_简介Java编程中的Object类

    这篇文章主要介绍了简介Java编程中的Object类,是Java入门学习中的基础知识,需要的朋友可以参考下 Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每 ...

  3. JAVA程序设计----数组基础

    一些小思考题: 1.什么时候为数组分配内存? 数组在初始化时分配内存 2.数组一旦被创建,大小能不能改变? 数组一旦被创建,它的大小就不能改变,可以使用array.length的得到数组的大小. in ...

  4. Java程序设计语言基础04:数组

    目录 1. 数组基础 1.1 创建数组 1.2 使用数组 2. 数组的"名"与"实" 2.1 数组的"名" 2.2 数组的"实&q ...

  5. Java程序设计语言基础02:Java中的基本数据类型和运算符

    目录 1. Java中的基本数据类型 1.1 概述 1.2 基本数据类型的值域 1.2.1 byte类型 1.2.2 short类型 1.2.3 int类型 1.2.4 long类型 1.2.5 fl ...

  6. JAVA异常和基础类库

    #知识点总结第四篇   1.Java中导致程序中断运行的错误称为异常   2.Exception异常分为可查异常和不可查异常两种,且不可察异常一般为RuntimeException和它的子类异常,其他 ...

  7. java程序设计_JAVA基础程序设计之方法

    1 基本概念 Java 方法是语句的集合,它们在一起执行一个功能. l 方法是解决一类问题的步骤的有序组合 l 方法包含于类或对象中 l 方法在程序中被创建,在其他地方被引用 1.1 方法的定义 一般 ...

  8. JAVA程序设计----集合基础之Collection

    思考题: 1.Set和List有哪些区别? List是有序的可重复的Collection,使用此接口能够精确的控制每个元素插入的位置.能够使用索引高效地访问List中的元素,这类似于Java的数组.S ...

  9. JAVA程序设计----集合基础之Map

    Map接口不是继承Collection接口,它与Collection接口是并列存在的,用于储存键-值对(key-value)形式的元素,描述了有不重复的键到值的映射. Map中的key(键)和valu ...

最新文章

  1. SpringBoot实战(十四)之整合KafKa
  2. Pytorch交叉熵损失函数torch.nn.functional as F
  3. MIT对话马斯克:关于自动驾驶、爱和未来世界|厚势汽车
  4. redis常用命令getex_Redis常用命令详细介绍(摘抄)
  5. poj 1860 拓扑。。
  6. qt 4.8.4 linux,Tslib和Qt 4.8.4与在开发板上的移植
  7. 猴子选王c语言链表程序代码,C语言程序设计-猴子选大王[链表应用]
  8. 北方股份无人驾驶矿卡_踏歌智行完成B轮2亿元融资,无人驾驶矿山赛道爆发在即...
  9. 2021年微信视频号生态趋势调查报告
  10. 使用jQuery创建模态窗口登陆效果
  11. opencv 学习第二课 摄像头、外部视频读取、处理、显示、写入 代码注释版 保证你每一行都能读懂
  12. vs如何包含库文件以及头文件
  13. Python3,1行代码,去除图片的背景图,确实香。
  14. 解决双屏显示不一致的问题
  15. 怎样快速用计算机做字处理,怎样快速处理Word表格的技巧 -电脑资料
  16. 辛弃疾最有代表性的十首词
  17. 使用列表推导式生成一个[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50]的列表
  18. 【科研杂记_3】测高卫星
  19. Linux sed实战
  20. php实现手机归属地的查询、,PHP实现查询手机归属地的方法详解

热门文章

  1. tensorflow之安装opencv
  2. resiprocate之message
  3. educoder第六章 关联挖掘 实验二:FP-growth
  4. MegaRAID Storage Manager RAID管理工具实用教程
  5. RAID0、1、5、6、10介绍
  6. 巩固——React中如何使用判断?
  7. 基于stm32的蓝牙遥控智能小车_基于51用蓝牙控制小车(提高篇)
  8. matlab 子函数句柄,matlab-函数句柄程序.ppt
  9. vivado unc paths are not supported
  10. Java 序列化Serializable详解