[JDK核心API教程]java.lang 包

来源:互联网 发布:ps软件课程设计报告 编辑:程序博客网 时间:2024/05/20 08:26

此博文转自实验楼,为个人记录笔记,非原创。。。

一、Java API 简介

Java 的核心 API 是非常庞大的,这给开发者来说带来了很大的方便。所谓的 API 就是一些已经写好、可直接调用的类库。Java 里有非常庞大的 API,其中有一些类库是我们必须得掌握的,只有熟练掌握了 Java 一些核心的 API,我们才能更好的使用 Java。


&emsp 在程序中,java.lang 包并不需要像其他包一样需要import关键字进行引入。系统会自动加载,所以我们可以直接取用其中的所有类。

二、java.lang 包装类

我们都知道 java 是一门面向对象的语言,类将方法和属性封装起来,这样就可以创建和处理相同方法和属性的对象了。但是 java 中不能定义基本类型的对象。那如果我们想像处理对象的方式处理基本类型的数据,调用一些方法怎么办呢?

其实 java 为每个基本类型都提供了包装类:
| 原始数据类型 包装类

byte(字节) Bytechar(字符)Characterint(整型)Integerlong (长整型)Longfloat(浮点型)Floatdouble (双精度)Doubleboolean (布尔)Booleanshort(短整型)Short

java.lang 包中的 Integer 类、Long 类和 Short 类都是 Number 的子类,他们的区别在于不同子类里面封装着不同的数据类型,比如 Integer 类包装了一个基本类型 int。其包含的方法基本相同。

我们以 Integer 类为例。 Integer 构造方法有两种:

  1. 以 Int 型变量作为参数创建 Integer 对象。例如Integer a = new Integer(10);

  2. 以 String 型变量作为参数创建 Integer 对象,例如Integer a = new Integer("10");

下面列举一下 Integer 的常用方法


方法 返回值功能描述byteValue()byte以 byte 类型返回该 Integer 的值CompareTo(Integer anotherInteger)int在数字上比较 Integer 对象。如果这两个值相等,则返回0;如果调用对象的数值小于 anotherInteger 的数值,则返回负值;如果调用对象的数值大于 anotherInteger 的数值,则返回正值equals(Object IntegerObj)boolean比较此对象与指定对象是否相等intValue()int以 int 型返回此 Integer 对象shortValue()short以 int 型返回此 Integer 对象longValue()long以 long 型返回此 Integer 对象floatValue()float以 float 型返回此 Integer 对象doubleValue()double以 double 型返回此 Integer 对象toString()String返回一个表示该 Integer 值的 String 对象valueOf(String str)Integer返回保存指定的 String 值的 Integer 对象parseInt(String str)int返回包含在由 str 指定的字符串中的数字的等价数值

e.g.

public class IntegerTest {    public static void main(String[] args){        //初始化一个 Integer 类实例        Integer a = new Integer("10");        //初始化一个 Integer 类实例        Integer b = new Integer(11);        //判断两个数的大小        System.out.println(a.compareTo(b));        //将 a 转换成 float 型数        float c = a.floatValue();        System.out.println(c);        String d = "10101110";        //将字符串转换为数值        //parseInt(String str) 和 parseInt(String str,int radix) 都是类方法,由类来调用。后一个方法则实现将字符串按照参数 radix 指定的进制转换为 int,        int e = Integer.parseInt(d, 2);        System.out.println(e);    }}

Character 包装类的方法:

方法 返回值说明isDigit()boolean确定字符是否为0到9之间( Integer 也有这个方法)isLetter()boolean确定字符是否为字母isLowerCase()boolean确定字符是否为小写形式isUpperCase()boolean确定字符是否为大写形式isSpace()boolean确定字符是否为空格或换行符isUnicodeIdentifierStart()boolean确定是否允许将指定字符作为 Unicode 标识符中的首字符

public class CharacterTest {    public static void main(String[] args){        int count;        //定义了一个字符数组        char[] values = {'*', '_', '%', '8', 'L', 'l'};        //遍历字符数组        for (count = 0; count < values.length; count++){            if(Character.isDigit(values[count])){                System.out.println(values[count]+"是一个数字");            }            if(Character.isLetter(values[count])){                System.out.println(values[count]+ "是一个字母");            }            if(Character.isUpperCase(values[count])){                System.out.println(values[count]+"是大写形式");            }            if(Character.isLowerCase(values[count])){                System.out.println(values[count]+"是小写形式");            }            if(Character.isUnicodeIdentifierStart(values[count])){                System.out.println(values[count]+"是Unicode标志符的第一个有效字符");            }        }    }}

Boolean 类的构造方法也有两个:

1.创建一个表示 value 参数的 boolean 对象,如Boolean b = new Boolean(true)
2.以 String 变量作为参数,创建 boolean 对象,如Boolean b = new Boolean("ok")


方法 返回值说明booleanValue()boolean将 Boolean 对象的值以对应的 boolean 值返回equals(Object obj)boolean判断调用该方法的对象与 obj 是否相等。当且仅当参数不是 null,而且与调用该方法的对象一样都表示同一个 boolean 值的 Boolean 对象时,才返回 trueparseBoolean(Strint s)boolean将字符串参数解析为 boolean 值toString()String返回表示该 boolean 值的 String 对象valueOf(String s)boolean返回一个用指定得字符串表示值的 boolean 值

其他的都差不多,大家可以自行去验证和参考 Java 类库的手册吧。

三、java.lang 类 String

我们经常使用 String 类来定义一个字符串,String 对象的初始化格式有如下两种:

String s0 = "abc";String s1 = new String("abd");

String 类具有丰富的方法,比如计算字符串的长度、连接字符串、比较字符串、提取字符串等等。

1、计算字符串长度

length()方法

//方法原型public int length(){}

调用方法:字符串标识符.length(); 返回一个int类型的整数(字符串中字符数)

2、字符串比较

equals() 方法比较是通过第一字符开始,一个字符一个字符依次比较。


那如果我想忽略掉大小写关系,比如:java 和 Java 是一样的,我们怎么办呢?我们可以调用equalsIgnoreCase()方法,其用法与 equals 一致,不过它会忽视大小写。

比如:

public class StringTest {    public static void main(String[] args){        String s = new String("Java");        String m = "java";        System.out.println("用equals()比较,java和Java结果为"+s.equals(m));        System.out.println("用equalsIgnoreCase()比较,java和Java结果为"+s.equalsIgnoreCase(m));    }}

3、字符串连接

字符串连接有两种方法:

1.使用+,比如String s = “Hello ” + “World!”
2.使用 String 类的 concat() 方法


代码示例:

String s0 = new String("Hello ");String s1 = "World" + "!";   //+号连接String s2 = s0.concat(name); //concat()方法连接System.out.println(s2);

4、字符串常用提取方法

方法 返回值功能描述indexOf(int ch)int搜索字符 ch 第一次出现的位置indexOf(String value)int搜索字符串 value 第一次出现的位置lastIndexOf(int ch)int搜索字符ch最后一次出现的位置lastIndexOf(String value)int搜索字符串 value 最后一次出现的位置substring(int index)String提取从位置索引开始到结束的字符串substring(int beginindex, int endindex)String提取beginindex和endindex之间的字符串部分trim()String返回一个前后不含任何空格的调用字符串的副本

说明:在字符串中,第一个字符的索引为0
e.g.

String s = "Hello ";s.concat("World!");   //字符串连接System.out.println(s); //输出s,还是"Hello "s = s.concat("World!");  //把字符串对象连接的结果赋给了s引用System.out.println(s);  //输出s,变成了"Hello World!"/*上述三条语句其实产生了3个String对象,"Hello ","World!","Hello World!"。第2条语句确实产生了"Hello World"字符串,但是没有指定把该字符串的引用赋给谁,因此没有改变s引用。第3条语句根据不变性,并没有改变"Hello ",JVM创建了一个新的对象,把"Hello ","World!"的连接赋给了s引用,因此引用变了,但是原对象没变。*/

String 的不变性的机制显然会在 String 常量内有大量的冗余。比如我创建一个循环,使字符’1’依次连接到’n’,那么系统就得创建 n+(n+1) 个 String 对象。那有没有可变的 String 类呢?

StringBuffer 类是可变的。它是 String 的对等类,它可以增加和编写字符的可变序列,并且能够将字符插入到字符串中间或附加到字符串末尾(当然是不用创建其他对象的,这里建议大家去看一看 String 类与 StringBuffer 类的区别,理解一下他们在内存中的存储情况)

先上 StringBuffer 的构造方法:


构造方法 说明StringBuffer()保留16个字符的空间StringBuffer(int length)设置缓冲器大小StringBuffer(Stringvalue)接收字符串参数,用来设置初始内容,并在不重新分配的情况下保留16个字符的空间

StringBuffer类的常用方法:

方法 返回值功能描述insert(int offsetm,Object s)StringBuffer在 offetm 的位置插入字符串sappend(Object s)StringBuffer在字符串末尾追加字符串slength()int确定 StringBuffer 对象的长度setCharAt(int pos,char ch)void使用 ch 指定的新值设置 pos 指定的位置上的字符toString()String转换为字符串形式reverse()StringBuffer反转字符串delete(int start, int end)StringBuffer删除调用对象中从 start 位置开始直到 end 指定的索引(end-1)位置的字符序列replace(int start, int end, String s)StringBuffer使用一组字符替换另一组字符。将用替换字符串从 start 指定的位置开始替换,直到 end 指定的位置结束

public class StringTest {    public static void main(String[] args){        //定义和初始化一个StringBuffer类的字串s        StringBuffer s = new StringBuffer("I");        //在s后面添加字串" java"        s.append(" java");        //在s[1]的位置插入字串        s.insert(1, " love");        String t = s.toString(); //转为字符串        System.out.println(t);    }}

四、java.lang 类 Math

我们在编程的过程中,经常对一些数字进行数学操作,比如我们想要求绝对值或余弦什么的。那这些方法是否需要我们自己实现吗?其实在 java.lang 里的 Math 类已经帮我实现大部分的函数功能。我们就来学习一下吧!

先认识一些方法

方法 返回值功能描述sin(double numvalue)double计算角 numvalue 的正弦值cos(double numvalue)double计算角 numvalue 的余弦值acos(double numvalue)double计算 numvalue 的反余弦asin(double numvalue)double计算 numvalue 的反正弦atan(double numvalue)double计算 numvalue 的反正切pow(double a, double b)double计算 a 的 b 次方sqrt(double numvalue)double计算给定值的平方根abs(int numvalue)int计算 int 类型值 numvalue 的绝对值,也接收 long、float 和 double 类型的参数ceil(double numvalue)double返回大于等于 numvalue 的最小整数值floor(double numvalue)double返回小于等于 numvalue 的最大整数值max(int a, int b)int返回 int 型 a 和 b 中的较答值,也接收 long、float 和 double 类型的参数max(int a, int b)int返回 a 和 b 中的较小值,也可接受 long、float 和 double 类型的参数rint(double numvalue)double返回最接近 numvalue 的整数值round(arg)arg 为 double 时返回 long,为 float 时返回 int返回最接近arg的整数值random()double返回一个介于0与1之间的伪随机数

五、java.lang 类 Class

class类的实例表示 Java 应用运行时的类或接口。在 Java 中,每个 class 都有一个相应的 Class 对象,即每一个类,在生成的.class文件中,就会产生一个 Class 对象,用于表示这个类的类型信息。我们获取 Class 实例有三种方法:

1.利用对象调用 getClass()方法获取该对象的 Class 实例
2.使用 Class 类的静态方法 forName(String className),用类的名字获取一个 Class 实例
3.运用.class的方式来获取 Class 实例,对于基本数据类型的封装类,还可以采用.TYPE来获取相对应的基本数据类型的 Class 实例


六、java.lang 类 Object

Object 类是所有类的父类,所以在默认的情况下,我们定义的类扩展自 Object 类,那我们当然可以调用和重写 Object 类里的所有方法了。

我们看一下 Object 类里都定义了哪些方法。


方法 返回值功能描述equals(Objectobj)boolean将当前对象实例与给定的对象进行比较,检查它们是否相等finalize() throws Throwablevoid当垃圾回收器确定不存在对象的更多引用时,由对象的垃圾回收器调用此方法。通常被子类重写getClass()Class返回当前对象的 Class 对象toString()String返回此对象的字符串表示wait() throws InterruptedExceptionvoid使当前线程进入等待状态


0 0