本章主要内容
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中基本数据类型以及对应的包装类
基本类型 | 包装类 |
byte | Byte |
short | Short |
int | Interger |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
包装类提供了字符串、基本数据类型和包装类相互转化的方法
编辑
数字基本数据类型的包装类都继承了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虚拟机的方法