【Java程序设计】Java基础类库简介

本文详细介绍了Java基础类库中的核心内容,包括java.lang包中的数据类型包裹类(装箱与拆箱)、String类与StringBuffer类的使用,以及Math类的数学运算。此外,还提到了System类和Runtime类的功能,以及如何生成和操作Date对象。内容深入浅出,适合Java初学者和开发者参考。
摘要由CSDN通过智能技术生成

Java基础类库简介

在这里插入图片描述

一、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)都有一个数据包裹类。每个包裹类都只有一个类型为对应的基本数据类型的属性域

基本数据类型数据包裹类
booleanBoolean
byteByte
charCharacter
shortShort
intInteger
longLong
floatFloat
doubleDouble
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);
      

在这里插入图片描述

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BkbK-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值