java.lang包


本章关键词

单    词

说    明

language

语言

Integer

整数

character

字符

buffer

缓冲器

math

数学

parse

转换

equals

相等

compare

比较,相比

replace

替换,取代

 

 

java.lang包是java内置的一个基础包,其中包含了一系列程序中经常要用到的类;在默认情况下,每个java程序都会自动导入该包,因此无需在程序中显式地声明。

包装类:

原始数据类型和包装类对照

原始数据类型

包  装  类

boolean(布尔型)

Boolean

byte(字节型)

Byte

char(字符型)

Character

short(短整型)

Short

int(整型)

Integer

long(长整型)

Long

float(浮点型)

Float

double(双精度浮点型)

Double

 

包装类的构造方法

 

public class LangDemo

{

  public static voidmain(String[] args)

  {

    Boolean objBool = newBoolean(true);

    Character objChar = newCharacter('X');

    Integer objInt = newInteger(100);

    Long objLong = newLong(2568);

    Double objDou = newDouble(3.1415);

 

   System.out.println(objBool);

   System.out.println(objChar);

   System.out.println(objInt);

   System.out.println(objLong);

   System.out.println(objDou);

  }

}

每个包装类都有一个静态的valueOf方法,用于将字符串转换成相应包装类的对象。

Eg

public class LangDemo {

  public static voidmain(String[] args) {

    String str ="120";

    //如果转换失败,将会引发NumberFormatException异常

    Byte objByte =Byte.valueOf(str);

    Short objShort =Short.valueOf(str);

    Integer objInt =Integer.valueOf(str);

    Long objLong =Long.valueOf(str);

 

   System.out.println(objByte);

   System.out.println(objShort);

    System.out.println(objInt);

   System.out.println(objLong);

  }

}

除了Character类以外,其它的包装类都有静态的parseXxx方法(Xxx指代具体的数据类型),用于将字符串转换成相对应的原始数据类型值。

public class ParseTest {

  public static voidmain(String[] args) {

    String str ="116";

    //分别调用各个包装类的paseXxx方法对字符串进行转换,如果转换失败,将报异常

    int i =Integer.parseInt(str);

    short s =Short.parseShort(str);

    byte b =Byte.parseByte(str);

    long l =Long.parseLong(str);

    float f =Float.parseFloat(str);

    double d =Double.parseDouble(str);

    boolean b = Boolean.parssBoolean(“true”);

    System.out.println(i);

    System.out.println(s);

    System.out.println(b);

    System.out.println(l);

    System.out.println(f);

    System.out.println(d);

    System.out.println(b);

  }

}

Character类中常用的方法

方 法 原 型

说    明

boolean isLetter(char ch)

判断字符ch是否为英文字母

boolean isDigit(char ch)

判断字符ch是否为0~9之间的数字

boolean isUpperCase(char ch)

判断字符ch是否为大写形式

boolean isLowerCase(char ch)

判断字符ch是否为小写形式

boolean isWhitespace(char ch)

判断字符ch是否为空格或换行符或回车符或制表符

 

以上方法都是静态方法,可以直接通过类名调用,返回值均为boolean类型,如果是返回true,否则返回false。

实例:

publicclass CharacterDemo {

  public static void main(String[] args) {

    char[] charArray = {'*', '7', 'b', ' ','A'};

    for (int i = 0; i < charArray.length;i++) {

      if (Character.isDigit(charArray[i])) {

        System.out.println(charArray[i] +"是一个数字。");

      }

      if (Character.isLetter(charArray[i])) {

        System.out.println(charArray[i] +"是一个字母。");

      }

      if (Character.isWhitespace(charArray[i])){

        System.out.println(charArray[i] +"是一个空格。");

      }

      if (Character.isLowerCase(charArray[i])){

        System.out.println(charArray[i] +"是小写形式。");

      }

      if (Character.isUpperCase(charArray[i])){

        System.out.println(charArray[i] +"是大写形式。");

      }

    }

  }

String 类

Java中,字符串是String类的对象;可以通过使用String类提供的方法来完成对字符串的操作;创建一个字符串对象之后,将不能更改构成字符串的字符;每当更改了字符串版本时,就创建了一个新的字符串对象,并在其内包含所做的修改,原始字符串保持不变。

String类的构造方法共有13种重载方式,以下是常用的几个:

构造方法

说    明

String()

将创建一个空字符串

String(String original)

将新建一个字符串作为指定字符串的副本

String(char[] value)

将根据字符数组构造一个新字符串

String(byte[] tytes)

将通过转换指定的字节数组新建一个字符串

 

 

示例

publicclass StringDemo

{

    public static void main(String[] args)

    {

        char[] aryChar = {‘I', 'C', ‘S', ‘S'};

        String str1 = “ETC";

        //利用一个字符串常量值创建新的字符串

        String str2 = newString(“ICSSETC");

        //利用一个字符型数组创建新的字符串

        String str3 = new String(aryChar);

   

        System.out.println(str1);

        System.out.println(str2);

        System.out.println(str3);

    }

}

字符串长度

String类中提供length成员方法 ,用来获得字符串的长度,方法原型:int  length()

该方法返回字符串中有效字符的个数。

 

publicclass StringDemo

{

  public static void main(String[] args)

  {

    String str1 = "John Smith";

    String str2 = new String("I LoveJava");

 

    System.out.println(str1.length());

    System.out.println(str2.length());

  }

}

== 和equls的比较

1.基础类型直接比较用==比较的是值,一个基础一个引用==比较的也是值

 2.引用类型不同的不能用==比较,编译报错,可以用equals进行比较(先比较数据类型,然后比较值)

 3.两个Byte/Short/Integer/Long类型的比较注意数据缓存。-128-127之间的比较相等

publicclass StringDemo {

publicstatic void main(String[] args) {

  String str1 = “ICSS", str2 =“ICSS";

  String str3 = new String(“ETC"), str4 =new String(“ETC");

    if (str1 == str2) {

             System.out.println("str1和str2指向同一字符串");}

    else {

      System.out.println("str1和str2分别指向不同字符串");}

 

    if (str1.equals(str2)) {

      System.out.println("str1和str2的内容完全相同");}

    else {

      System.out.println("str1和str2的内容不相同");}

 

    if (str3 == str4) {

      System.out.println("str3和str4指向同一字符串");}

    else {

      System.out.println("str3和str4分别指向不同字符串");}

 

    if (str3.equals(str4)) {

      System.out.println("str3和str4的内容完全相同");}

    else {

      System.out.println("str3和str4的内容不相同");}

  }

}

equals(Object anObject))方法则是比较两个字符串中的内容是否相同,如果相等返回true,否则返回false

 

方 法 原 型

说    明

boolean

equalsIgnoreCase(String anotherString)

判断字符串anotherString是否与当前字符串相等,忽略大小写形式

int compareTo(String anotherString)

根据ASCII码比较字符串anoterString和当前字符串的大小,比较方式类似于C语言中的strcmp函数

boolean startsWith(String prefix)

判断当前字符串是否以字符串prefix为开头

boolean endsWith(String suffix)

判断当前字符串是否以字符串suffix为后缀

 

如果需要搜索某个字符(或某个子串)在字符串中是否出现过,这就要使用到indexOf方法和lastIndexOf方法

方 法 原 型

说    明

int indexOf(int ch)

搜索字符ch在当前字符串中第一次出现的索引,没有出现则返回-1

int indexOf(String str)

搜索字符串str在当前字符串中第一次出现的索引,没有出现则返回-1

int lastIndexOf(int ch)

搜索字符ch在当前字符串中最后一次出现的索引,没有出现则返回-1

int lastIndexOf(String str)

搜索字符串str在当前字符串中最后一次出现的索引,没有出现则返回-1

字符串搜索实例

publicclass StringDemo

{

  public static void main(String[] args)

  {

    String strEmail = "java@sun.com";

    int index;

   

    System.out.println("E-mail地址:" +strEmail);

    index = strEmail.indexOf('@');

    System.out.println("@字符出现的索引:"+ index); //4

    index =strEmail.indexOf("sun");//5

    System.out.println("字符串\"sun\"出现的索引:"+ index);

    index = strEmail.lastIndexOf('a');//3

    System.out.println("a字符最后一次出现的索引:"+ index);

  }

}

提取字符串

方 法 原 型

说    明

char charAt(int index)

用于从指定位置提取单个字符,该位置由index指定,索引值必须为非负

String substring(int index)

用于提取从index指定的位置开始的字符串部分

String substring(int begin, int end)

用于提取 begin 和 end 位置之间的字符串部分,即begin---->end-1

String concat(String str)

用于连接两个字符串,并新建一个包含调用字符串的字符串对象

String replace(char oldChar, char newChar)

用于将调用字符串中出现oldChar指定的字符全部都替换为newChar指定的字符

replaceAll(String regex, String replacement)

用于将调用字符串中出现或者匹配regex的字符串全部都替换为replacement指定的字符

String trim()

用于返回一个前后不含任何空格的调用字符串的副本

 

提取字符串实例

publicclass StringDemo

{

  public static void main(String[] args)

  {

    String str1 = "  Java is OOP";

    String str2 = new String("ACCP");

   

    System.out.println(str1.charAt(2));

    System.out.println(str1.substring(5));  

 System.out.println(str1.substring(2,9));   

System.out.println(str1.concat(str2));

    System.out.println(str1 + str2);

    System.out.println(str1.replace('a', 'e'));

    System.out.println(str1.trim());

  }

}

对字符串中字符的大小写形式进行转换。

方 法 原 型

说    明

String toUpperCase()

返回当前字符串的全大写形式

String toLowerCase()

返回当前字符串的全小写形式

Eg

publicclass StringDemo

{

    public static void main(String[] args)

    {

        String str1 = "Java is OOP";

        String str2;

   

        str2 = str1.toLowerCase();

        System.out.println(str2);

   

        str2 = str1.toUpperCase();

        System.out.println(str2);

    }

}

数据格式转换

在某些特定的场合,我们可能需要将字符串转化成其它格式的数据进行操作;

方 法 原 型

说    明

byte[]    getBytes()

返回当前字符串转化成byte型数组的形式

char[]   toCharArray()

返回当前字符串的字符数组形式,类似于C语言中字符串的保存形式

Stringbuffer类

         String在操作的时候会产生新的字符串对象,导致大量的内存耗用构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符。

特点:

1:可以对字符串内容进行修改。

2:是一个容器。

3:是可变长度的。

4:缓冲区中可以存储任意类型的数据。

5:最终会通过toString方法变成字符串。

方 法 原 型

说    明

StringBuffer insert(int index, x x)

可以将数据插入到指定index位置,x可以为任何类型的数据

int length()

获得当前StringBuffer对象的长度

void setCharAt(int index, char ch)

使用 ch 指定的新值替换 index指定的位置上的字符

String toString()

转换为字符串形式

StringBuffer reverse()

将当前StringBuffer对象中的字符序列倒置

StringBuffer delete(int start, int end)

删除缓冲区中的数据,包含start,不包含end

StringBuffer deleteCharAt(int index)

将删除 index 指定的索引处的字符

StringBuffer replace(int start, int end, String str)

此方法使用一组字符替换另一组字符。将用替换字符串从 start指定的位置开始替换,直到 end 指定的位置结束

 

字符串的不变性

在Java中一旦创建了字符串就不能直接更改,这就是字符串的不变性;而StringBuffer类正是针对此问题而提供的字符可变序列;StringBuffer与String是同等的类,唯一区别是可以进行更改。

Math类

•      Math类中提供了一系列基本数学运算和几何运算的方法;

•      该类的构造方法被修饰为private,因此不能实例化;

•      该类中的所有方法都是静态的,可以通过类名直接调用;

该类被修饰为final,因此没有子类

方 法 原 型

说    明

static int abs(int a)

求a的绝对值,有4种重载,还有float,double和long

static double pow(double a, double b)

求a的b次方幂

static double sqrt(double a)

求a的平方根

static int round(float a)

a的四舍五入取整结果

static double ceil(double a)

返回不小于a的最小整数值

static double floor(double a)

返回不大于a的最大整数值

static double sin(double a)

返回a的正弦值

static double cos(double a)

返回a的余弦值

•      Math类中还包括两个常用的常量:

–     PI:圆周率π

–     E:自然常量

•      以上常量在Math类中都被声明成静态,可以直接通过类名进行访问。

Objet 类

ava中的类体系遵循单根结构,即任何一个类往上追溯都到达同一个父类;

Object类就是这个单根体系的根,也就是说它是其它所有类的共同父类;

如果用户定义的类没有扩展任何其它类,则默认扩展自Object类;

Object类中定义的一些方法,会被继承到所有类中   hashCode toString

方 法 原 型

说    明

boolean equals(Object obj)

判断当前对象是否与参数obj(内容)相等,如果有必要,应该在自定义的类中覆盖该方法

String toString()

返回当前对象的字符串表示,如果有必要,应该在自定义的类中覆盖该方法

Class getClass()

返回当前对象的类描述对象,此方法被继承到所有类中

protected void finalize()

throws Throwable

当前对象被垃圾回收时调用此方法(类似于C++的析构函数),但无法确定具体何时调用

public final void wait()

throws InterruptedException

使当前线程进入等待状态

classStudent {  //定义Student类,缺省继承于Object类

  private String mName;

  private int mAge;

 

  public Student(String name, int age) {  //构造方法

         mName = name;

    mAge = age;

  }

 

  public String toString() {  //覆盖Object类中的toString方法

    String str = "姓名:" +mName + ", 年龄:" + mAge + "岁";

    return str;

  }

}

 

publicclass ToStringDemo {  //容纳main方法

  public static void main(String[] args) {

    Student std = new Student("张三",18);

    System.out.println(std);  //默认调用toString方法

  }

}

Class类

•      Java应用程序实际上都是由一个个对象组成,这些对象分别属于什么类,是从哪个类继承而来,这一系列的信息都是由Class类的实例来记录的;

•      Class类的实例用于记录对象的类描述信息;

•      如果在程序运行时,需要检索某个对象的相关类信息,可以调用该对象的getClass方法来获得记录其描述信息的Class类实例;

Class类没有公共的构造方法,无法通过new运算符实例化,只能通过对象的getClass方法,或是通过Class的静态方法forName来获得实例

方 法 原 型

说    明

static Class

forName(String className)

throws ClassNotFoundException

使用参数className来指定具体的类,来获得相关的类描述对象,该方法有可能抛出类加载异常(ClassNotFoundException),必须捕捉

Class getSuperclass()

获得当前类描述对象的父类的描述对象

String getName()

返回当前类描述对象的类名称

 

类描述对象实例

publicclass ClassDemo {

  public static void main(String[] args) {

    try {

      /*使用forName方法获得任意一个类的类描述对象

          forName方法有可能抛异常,必须捕捉*/

      Class cls =Class.forName("java.lang.StringBuffer");

      //循环打印父类信息,直到没有父类

      while (cls != null) {

        System.out.println(cls);

        cls = cls.getSuperclass();

      }

    } catch (ClassNotFoundException e) {

      e.printStackTrace();

    }

  }

}

总结

java.lang包是Java中最基础的一个包,也是唯一一个无需显示声明就默认导入包;

包装类共有8个,它们可以以对象的形式封装原始类型的数据;

Java中的字符串以String类对象的形式存放,该类中提供一系列对字符串进行操作的方法;

StringBuffer类是另一种形式的字符串,与String类的区别是允许对自身的内容进行修改;

Math类提供一系列进行算术计算的方法,这些方法都是静态的;

Object类是其它所有类的父类;

Class类的实例记录了对象的类信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值