Java 常用类库之lang包

Posted 洛阳泰山

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 常用类库之lang包相关的知识,希望对你有一定的参考价值。

本章主要内容

java.lang包介绍以及包下类的使用
重点的类:
 Object/String/StringBuffer/StringBuilder/包装类
了解的类
System/Math
 java.util包介绍以及包下类的使用
 重点的类
Date/Calendar/GregorianCalendar
 了解的类
Scanner/Random
 java.text包介绍以及包下类的使用
SimpleDateFormat/NumberFormat
 

java.lang包

java.lang包下放置了Java开发中常用的类和接口,所以为简化该包下类的使用,java.lang包下的类在使用时不需要导入这些类
 java.lang包下常用类有:

  • Object
  • String
  • StringBuffer和StringBuilder
  • 八种基本数据类型的包装类
  • Thread等等

Object类

 java.lang.Object类是类层次结构中最顶层父类(基类,超类)。所有的类(包括数组)直接或者间接的继承自Object类,同时也继承了该类中的方法

代码示例

public class ClassA 
    public void test()
        System.out.println("ClassA method_test");
    
public class ClassB extends ClassA
    public static void main(String[] args) 
        Object objectA=new ClassA();
        Object objectB=new ClassB();
        //所有对象的父类,所有对象的引用都可以赋值给Object类型的引用变量,包括数组
        Object objectC=new int[2];
    


Object的构造方法
Object类只有一个无参的构造方法 
Object()
Object中常用的方法

  • boolean equals(Object o) 比较两个对象是否相同
  • int hashCode() 返回一个对象的哈希码
  • String toString() 将一个对象转换为字符串
     
public class TestObject 
    public static void main(String[] args) 
        //通过无参构造器创建一个Object类型的对象
        Object o1=new Object();
        System.out.println("o1.hashCode()="+o1.hashCode());
        System.out.println("o1.toString()="+o1.toString());
    

boolean equals(Object o)详解

  • Object类的equals方法用于判断两个对象是否相等
  • Object类的equals方法的返回值为boolean的true和false
  • Object类的equals方法只有一种情况返回true:两个非空的引用变量o1和o2指向的是同一个对象时
  • 代码示例
public class TestEquals 

    public static void main(String[] args) 
        Object O1=new Object();
        Object O2=new Object();
        Object O3=O2;
        System.out.println("O1.equals(O2)="+O1.equals(O2));
        System.out.println("O1.equals(O3)="+O1.equals(O3));
        System.out.println("O2.equals(O3)="+O2.equals(O3));
    

 equals方法和==的区别

  • ==可以用于比较基本数据类型的值
  • ==可以用于比较两个对象是否相等
  • equals只能比较两个对象是否相等
     

String类 

String类代表字符串,提供了开发中常用的字符串处理的方法,如:求字符串的长度、截取字符串、替换字符串等方法
字符串是常量,它的值创建之后就不可以再修改了。
String类常用构造方法

  • String() 无参构造方法 
  • String(String str) 有一个字符串参数的构造方法
  • String(char[]ch) 有一个char类型数组参数的构造方法
  • String(byte[] b) 有一个byte数组参数的构造方法


 声明和创建字符串对象的方式

代码示例

public class TestString 
    public static void main(String[] args) 
        String s1="hello,我是洛阳泰山";
        String s2=new String();
        String s3="";
        char[] ch=new char[]'h','e','l','l','0';
        String s4=new String(ch);
        byte[] bts=new byte[]12,-120;
        String s5=new String(bts);
    

String类常用方法

  •  int length() 求字符串值的字符个数
  •  boolean equals(Object o) 比较两个字符串是否相同
  •  String replace(char old,char n) 字符串替换
  •  char charAt(int index) 返回指定字符串指定位置的字符
  •  int compareTo(String s) 按字典顺序比较字符串大小
  •  boolean endsWith(String s) 比较字符串是否以指定的参数结尾
  •  boolean startsWith(String s)比较字符串是否以指定的参数开头
  • String valueOf(int i)将基本数据类型转换为字符串
     

String类常用方法

  • boolean isEmpty() 判别一个字符串值的长度是不是为0
  • int indexOf(int ch) 返回指定字符ch在字符串中的索引
  • int lastIndexOf(int ch)返回指定字符ch在字符串中最后出现的索引
  • String substring(int begin)从指定索引位置截取字符串

StringBuffer和StringBuilder类 

StringBuffer和StringBuilder都是带有缓冲区的可变字符串
为什么要使用StringBuffer或者StringBuilder
一个String对象的长度是固定的,不能改变它的内容,也不能附加新的字符至String对象中。可以使用加号“+”运算符来连接字符串以达到附加新字符或字符串的目的,但使用加号“+”运算符会产生一个新的String实例,即需要另外分配空间。如果既想节省开销,又能改变字符串的内容,则可以使用StringBuilder类。

StringBuffer类的构造方法
StringBuffer()
StringBuffer(String s)
StringBuffer的常用方法
StringBuffer append(int i)在可变字符串末尾追加I
StringBuffer insert(int offset,String s)在可变字符串指定位置插入另外一个字符串s
 int length() 返回可变字符串中字符的个数
 String toString() 将可变字符串转化为字符串对象

字符串总结

String类、StringBuffer和StringBuilder之间的区别

  • String字符串是常量,一旦创建无法修改
  • StringBuffer和StringBuilder是可变字符串,创建之后仍可以修改
  • StringBuffer是线程安全的、StringBuilder线程不安全

包装类

java.lang包下为8种基本数据类型提供对应的包装类
 8中基本数据类型以及对应的包装类

基本类型包装类
byteByte
shortShort
intInterger
longLong
floatFloat
doubleDouble
booleanBoolean
charCharacter

 
 

包装类提供了字符串、基本数据类型和包装类相互转化的方法

数字基本数据类型的包装类都继承了Number类,它们的使用方式相似,下面以常用的基本数据类型int对应的包装类Integer为例说明数字类型包装类的使用。
基本数据类型 int值转化为Integer类型对象

 int i = 20;
 Integer integer1 = new Integer(i);//方法一
 Integer integer2 = Integer.valueOf(i);//方法二

Integer对象转化为基本数据类型int值

 Integer integer = new Integer(20);
 int i1 = integer.intValue();


String类型的数字转化为Integer对象

String s = “120”;
Integer integer1 = new Integer(s);//方法一
Integer integer2 = Integer.valueOf(s);//方法二


Integer类型转化为String类型

Integer integer = new Integer(20);
String s1 = integer.toString();


 String类型的数字转化为基本数据类型的int值

 String s = “120”;
 int i1 = Integer.parseInt(s);//方法一
 Integer integer = new Integer(s);
 int i2 = integer.intValue();//方法二


基本数据类型int转化为字符串

 int i1 = 20;
 String str = String.valueOf(i1);//方法一
 str = Integer.toString(i2);//方法二


Integer的equals方法
Integer的equals方法继承自Object,并且进行了重写
Integer的equals方法只有一种情况返回true:两个Integer类型的对象 i1 和 i2包含的值相等时;其他情况返回false
如:

Integer i1 = new Integer(20);
Integer i2 = new Integer(30);
Integer i3 = new Integer(20);
boolean  b = i1.equals(i2);//false
b = i1.equals(i3);//true

数字类型包装类总结

根据基本数据类型int和对应包装类Integer的知识,总结如下内容

  •  byte/short/long/float/double类型和包装类之间转换的方法
  •  byte/short/long/float/double的包装类和字符串之间的转换方法
  •  byte/short/long/float/double类型和字符串之间的转换方法

boolean类型的包装类Boolean
Boolean用于将一个基本数据类型boolean值包装为对象
将boolean值转换为Boolean对象

Boolean b1 = new Boolean(true);//方法一
Boolean b2 = Boolean.valueOf(true);//方法二


将Boolean对象转换为boolean值

 Boolean b =  new Boolean(true);
 boolean b1 = b.booleanValue();//方法一 

String类型对象转换为Boolean对象

String s=“true”;
Boolean b1 = new Boolean(s);//方法一
Boolean b2 = Boolean.valueOf(s);//方法二


将Boolean对象转换为String类型

Boolean b = new Boolean(true);
String s1 = b.toString();//方法一
String s2 = Boolean.toString(b);//方法二
String s3 = String.valueOf(b);//方法三

boolean值转换为String对象

 boolean b = true;
 String s1 = String.valueOf(b);


String对象转换为boolean值

String s = “true”;
boolean b1 = Boolean.parseBoolean(s);//方法一
Boolean b = new Boolean(s);
boolean b2 = b.booleanValue();//方法二


字符包装类Character用于将char类型值包装为对象
将char值转换为Character对象

 Character c1= new Character(‘A’);//方法一
 Character c2 = Character.valueOf(‘A’);//方法二


将Character对象转换为String

Character c1= new Character(‘A’);
String str1= c1.toString();


将char转换为String

String str2= Character.toString(‘A’);

Character包装类除了提供以上char和Character相互转换的方法外也提供了以下有用的方法

方法描述
boolean isLetter(char ch)判断字符是否是字母
boolean isDigit(char ch)判断字符是否是数字
boolean isWhiteSpace(char ch)判断字符是否是空格
boolean isUpperCase(char ch)判断字符是否是大写
boolean isLowerCase(char ch)判断字符是否是小写
char toUpperCase(char ch)返回字符的大写
char toLowerCase(char ch)返回字符的小写
String toString(char ch)返回字符转字符串


 

包装类总结

包装类是将基本数据类型的值包装为Java中的对象,Java语言为8种基本数据类型分别提供了包装类
包装类提供了基本数据类型、包装类、字符串之间的相互转换的方法,这些转换的的方法在今后的开发中十分有用。
Math类

方法描述

double abs(double d)

float abs(float f)

int abs(int i)

long abs(long lng)

返回参数的绝对值
double ceil(double d)返回一个大于等于参数的最小整数
double floor(double d)返回一个小于等于参数的最大整数
double rint(double d)返回一个最接近参数的整数(类型为double)

long round(double d)

int round(double d)

返回一个最接近参数的整数(类型为int或long)

double min(double arg1,double arg2)

float min(float arg1,float arg2)

int min(int arg1,int arg2)

long min(long arg1,long arg2)

返回两个参数的最小值

double max(double arg1,double arg2)

float max(float arg1,float arg2)

int max(int arg1,int arg2)

long max(long arg1,long arg2)

返回两个数的最大值

代码示例

public class TestMath 
    public static void main(String[] args) 
        Double d=-12.94;
        System.out.println(Math.abs(d));
        System.out.println(Math.rint(d));
        System.out.println(Math.round(d));
    

System类 

System类代表运行时系统,提供了一些获取设置和获取当前系统运行环境的方法
System有三个成员变量

  •  in 标准输入流
  •  out 标准输出流
  •  err 错误输出流

System中的方法

  • System.arrayCope()//快速复制数组的方法
  • System.exit();//退出Java虚拟机的方法

作业

作业一:
创建一个Student类,该有String类型的学号stuNo,String类型的姓名,要求将该类所有的成员变量进行封装,并且提供公共的getter和setter方法,重写equals方法,只要学生的学号相同即返回true,重写toString()方法,toString方法返回值类似”姓名:张三  学号:201301 ”
String 类 String str = “abcd”; 求字符串的字符个数
将str字符串截取为”cd”

作业二:
编写敏感词过滤程序
 在网络程序中,如聊天室、聊天软件等,经常需要对一些用户所提交的聊天内容中的敏感性词语进行过滤。如“色情”、“爆炸”、“恐怖”、“枪”等,这些都不可以在网上进行传播,需要过滤掉或者用其他词语替换掉。
思路:将用户的聊天内容保存到一个字符串对象或一个StringBuilder对象中,然后与敏感词语进行比对。如果属于敏感词语,就过滤掉或替换掉。 
作业三:
在注册时通常要验证用户名和密码是否合法,运用学习过的知识完成如下操作:
用户名长度大于等于6-12位,必须包含数字和英文字母
密码长度大于等于8-20位,必须包含特殊符合_或者$,英文字母以及数字
以上两个条件同时成立注册才能成功。
 

以上是关于Java 常用类库之lang包的主要内容,如果未能解决你的问题,请参考以下文章

Java 常用类库之 Math

Java 常用类库之util包和text包

Java 常用类库之util包和text包

Java SE基础部分——常用类库之NumberFormat

Java SE基础部分——常用类库之SimpleDateFormat(日期格式化)

Java 常用类库之 Objects