第6章 Java常用实用类

本章教学内容:

6.1 Java API简介

    API 就是应用程序编程接口,是一些已写好、可供直接调用的类库。

    Java API包含的内容很多,本章主要讨论其中两个最基本的包中的主要类:

    (1)语言包(java.lang)。是Java的核心类库,包含了运行Java程序必不可少的系统类,是Java语言编程使用最频繁的包。为了简化编程,系统默认导入了java.lang包,所以使用java.lang包中的类时可以不用import语句导入。

     (2)实用程序包(java.util)。在这个包中,Java提供了一些实用的方法和数据结构。

6.2 Object类

    Object类是所有类的父类。

    在Java体系中,所有类都是直接或间接的继承了Object类。如果一个类没有使用extends 关键字明确标识继承另外一个类,那么这个类就默认继承Object类。因此,Object类是Java 类层中的最高层类,是所有类的超类。换句话说,Java中任何一个类都是它的子类。

1.toString()方法

    Object类中定义了public String toString()方法,其返回值是String类型,描述当前对象的有关信息。在进行String与其他类型数据(引用类型)的连接操作时或打印对象时,将自动调用该对象的toString()方法。

    默认情况下toString()方法返回的字符串格式是“类名@哈希码”,一般情况下需要重写toString()方法。

2.equals(Object obj)方法

    equals(Object obj)方法与Java运算符"=="的含义相同,但用法不同。当两个值比较、对象或变量与值比较、两个变量比较时,使用运算符"==";当比较两个对象时,使用equals()方法。该方法调用返回true时表示两个对象相等(或称相同),返回false时表示两个对象不相等。

3. getClass()方法

    getClass()方法返回调用该方法的对象所属的类。

6.3 字符串处理类

6.3.1 String类

    java.lang包中String 类代表字符串。Java程序中的所有字符串字面值(”abc”)都作为此类的实例来实现。字符串是常量,它们的值在创建之后不能改变,因此String对象是不可改变的。

    String 类主要用于比较两个字符串、查找和抽取串中的字符或子串、字符串与其它类型之间的相互转换等操作,操作的结果通常得到一个新字符串,但不会改变源串的内容。

1.String 类常用构造方法

常用构造方法

2.String 类常用方法

6.3.2StringBuffer类

    StringBuffer类用于内容可以改变的字符串,可以将其它各种类型的数据增加、插入到字符串中,也可以转置字符串中原来的内容。

    Java 为字符串提供了特别的连接操作符(+),可以把其它各种类型的数据转换成字符串,并前后连接成新的字符串。实际上连接操作符(+)的功能是通过 StringBuffer类和它的 append 方法实现的。

1.StringBuffer类的常用方法

6.3.3 StringTokenizer类 

    在实际应用中,有时需要分析字符串并将字符串分解成可被独立使用的单词,这些单词叫做语言符号。例如:对于字符串“We are Students ”,如果把空格作为分隔符,那么该字符串有三个单词(语言符号)。而对于字符串"We,are,Students",如果把逗号作为分隔符,那么该字符串也有三个单词。

    当分析一个字符串并将该字符串分解成可被独立使用的单词时,可以使用java.util包中的StringTokenizer类。

1.StringTokenizer类常用的构造方法

 (1)StringTokenizer( String s):为字符串s构造一个分析器.使用默认的分隔符集合,即空格符(若干个空格被看成一个空格)、换行符、回车符、Tab符等。

 (2)StringTokenizer(String s,String delim):为字符串s构造一个分析器,参数dilim中的字符被作为分隔符。

2.StringTokenizer类常用的方法

nextToken()方法:逐个获取字符串中的单词,每当调用此方法时,都将在字符串中获得下一个单词,每当获取到一个单词,字符串分析器中的负责计数的变量的值就自动减一(初始值等于该字符串的单词总数目)。

hasMoreTokens() 方法:通常用循环来获取字符串中的单词,为了控制循环,可以使用此方法,只要字符串中还有单词,就返回true,否则返回false。

countTokens()方法:可以返回字符串中的单词数目

6.4 基本数据类型包装类

    在Java中,基本数据类型不作为对象使用。这样做的原因是效率问题,因为处理对象需要额外的系统开销。然而许多Java的方法需要对象作参数,这时Java在java.lang包中提供了一个方便的办法:将基本数据类型包装成对应的包装类。Java 中的基本数据类型共有八种,那么与之相对应的包装类也同样是有八种。

基本数据类型-》数据类型包装类

boolean-》Boolean,long-》Long

char-》Character   ,int-》Integer

double-》Double    ,short-》Short

float-》Float           ,byte-》Byte

下面介绍包装类的一些常用方法。

1.包装类的构造方法

    可以从基本的数据类型或从表示数值的字符串来构造数值包装对象。

    以Integer类为例。Integer类的构造方法如下:

    public Integer(int value) //传值

    public Integer(String s) //传字符

2.数值类的常量

    每个数值包装类都有常量MAX_VALUE和MIN_VALUE。MAX_VALUE表示对应基本类型的最大值;MIN_VALUE表示对应基本类型的最小值。

3.类型转换方法

    每个包装类均提供有相应的方法用来从包装对象中抽取相应的数据。Boolean类的对象,可以调用booleanValue()方法从包装对象中抽取相应的数据。 Integer类的对象,可以调用intValue()方法从包装对象中抽取相应的数据。Character的对象,可以用charValue()方法从包装对象中抽取相应的数据。

4.包装类提供的各种static方法

    Character类提供有isDigit(charch)方法可判断一个字符是否为数字。 除Character类外的所有包装类均提供有valueOf(String s)的静态方法,它将得到一个相应类型的对象 。还有一组非常有用的静态包装方法是parseXXX()方法,可以将“数字”格式的字符串转化为相应的基本数据类型。

5.使用Long类的下述方法可以得到整数的各种进制的字符串表示

    public static  String toBinaryString(long n)

    public static  String toOctalString(long n)

    public static  String toHexString(long n)

    public static  String toString(long n,intp)

6.使用String类的valueOf()方法可以将数值转化为相应的字符串

    public static  String valueOf(byte n)

    public static  String valueOf(int n)

    public static  String valueOf(long n)

    public static  String valueOf(float n)

    public static  String valueOf(double n)

6.5 Math类和Random类

6.5.1 Math类

    Java.lang包中的Math类也称数学类,是一个工具类,它在解决与数学计算有关的一些问题时有着很重要的作用。Math类包含了一组基本的数学运算的方法和常数。如求绝对值的abs()方法,计算三角函数的sin()方法和cos()方法,求两个数中的较小值和较大值的min()方法和max()方法,求随机数的random()方法等。

    Math类是最终类(final),不能从Math类中派生其他的新类。因此只能使用Math类的方法而不能对其作任何修改。

6.5.2 Random类

    Java.util包中的Random 类是一个随机数产生器,此类的实例用于生成伪随机数流。随机数是按照某种算法产生的,一旦用一个初值创建 Random 对象,就可以得到一系列的随机数,但如果用相同的初值创建Random对象,得到的随机数序列是相同的,也就是说,在程序中看到的“随机数”是固定的那些数,起不到“随机”的作用,针对这个问题,Java 设计者们在 Random 类的 Random()构造方法中使用当前的时间来初始化 Random 对象,因为没有任何时刻的时间是相同的,所以就可以减少随机数序列相同的可能性。

1.Random 类构造方法

    Random类提供了两个构造方法:带参数(即带种子)和不带参数(即不带种子)。如果没有提供参数,Random实例的参数将是当前时间的毫秒数。

2.Random 类的常用方法

(1)int nextInt():返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。

(2)int nextInt(int n):返回一个伪随机数,它是从此随机数生成器的序列中取出的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。

(3)long nextLong():返回下一个伪随机数,它是从此随机数生成器的序列中取出的、均匀分布的 long 值。

(4)double nextDouble():返回下一个伪随机数,它是从此随机数生成器的序列中取出的、在 0.0 和 1.0之间均匀分布的 double值。

(5)float nextFloat():返回下一个伪随机数,它是从此随机数生成器的序列中取出的、在 0.0 和 1.0 之间均匀分布的 float值。

(6)boolean nextBoolean():返回下一个伪随机数,它是从此随机数生成器的序列中取出的、均匀分布的 boolean 值。

(7)void nextBytes(byte[] bytes)::生成随机字节并将其置于用户提供的字节数组中。

6.6 日期处理类

6.6.1 Date类

    java.util包中的Date类表示特定的瞬间,精确到毫秒。使用Date类的无参构造方法Date()创建的Date对象可以获取本地当前时间。Date对象表示时间的默认顺序是:星期、月、日、小时、分、秒、年。

1.Date类的构造方法

(1)无参构造方法

例如:使用系统的当前日期和时间创建一个日期对象。语句如下:

Date date = new Date();

System.out.println("当前日期为:" + date); 

(2)有参构造方法

例如:通过有参构造方法获取当前系统时间。语句如下:

long ct = System.currentTimeMillis();  

Date d = new Date(ct);

2.日期的格式化

    在编写程序时,通常都希望按照某种习惯的格式来输出时间,比如时间的顺序:年 月 日 时:分:秒。我们如何才能以这种指定的格式来显示日期呢?这就需要利用java.text包中的DateFormat 类和SimpleDateFormat类来实现日期的格式化。 

(1)利用DateFormat类实现日期的格式化。

(2)利用SimpleDateFormat类实现日期的格式化。

3.获取当前日期的时间

    通过getTime()方法所得到的Date类型数据是以毫秒来计算的,并且是以1970年1月1日为开始时间。在声明数据类型时需要较大存储空间,可以使用long数据类型或者同等存储类型数据。

语句如下:

Date date=new Date();

long str_get = date.getTime();

System.out.println("当前毫秒值为:"+ str_get);

6.6.2 Calendar类

    Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

    特定瞬间可用毫秒值来表示,它是距离历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000)的偏移量。

1.Calendar对象的创建

    由于Calendar类是一个抽象类,不能用new运算符实例化,因此Calendar类提供了getInstance()静态方法返回一个 Calendar对象,其日历字段已由当前日期和时间初始化。

2.Calendar对象的常用方法

(1)设置日历字段值

(2)获取日历字段值:public int get(int field);//参数field的有效值由Calendar的静态常量指定。

(3)更改日历字段值:public void add(int field, int amount);//用于给指定的日历字段添加或减去指定的时间量。

(4)将日历对象转变为日期对象的方法:public final Date getTime();

(5)将时间转变为毫秒值的方法。

6.7 Arrays类

    Arrays类是Java API中提供的存在于java.util包中的数组工具类,该类中包含有数组操作的一些常用静态方法(如排序和查找),这可以大大简化程序设计人员的设计过程。

Arrays类的常用方法有:

(1)sort()方法:利用sort()实现数组排序

(2)binarySearch()方法:利用binarySearch()方法实现数组元素查找

(3)equals()方法:利用equals()方法实现数组的比较

(4)toString()方法:利用toString()方法可以便捷的显示数组的内容

(5)copyoOf()方法:利用copyOf()方法可以便捷的实现数组的复制

6.8 Class类

    Java程序在运行时,运行时系统会为每一个对象进行类型标识。这项信息记录了每个对象所属的类。虚拟机使用运行时类型信息定位正确方法去执行,用来保存这些类型信息的类是Class类。Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建。

有以下三种方法可以获取Class类的对象:

(1)调用Object类的getClass()方法。

(2)使用Class类的forName()方法。

(3)如果X是一个Java类型,那么X.class就代表了与该类型匹配的Class对象。例如,String.class代表字符串类型。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容