第 6章 基础类
6.1 Object类
6.2 包装类
6.3 Math类
6.4 System类
6.5 String类
6.6 StringBuffer和 StringBuilder类
6.7 习题
6.1 Object类
java.lang.Object类是 Java语言的根类,
– equals方法
– toString方法
– clone方法
6.1.1 equals方法
用于比较两个对象是否相等。
调用 equals方法的语法如下:
object1.equals( object2)
默认 equals方法的定义如下:
public boolean equals(Object obj)
{
return(this==obj);
}
6.1.2 toString方法
toString方法返回一个代表有关当前对象本身信息的字符串。
默认情况下,返回的字符串由该对象所属的类名,at符号,@”和代表该对象的无符号十六进制数组成。
例 6-1 使用 toString方法源代码 运 行
6.1.3 clone方法
调用 clone方法,可以复制一个对象:
newObject = oldObject.
clone();
注意,Object类中,clone方法被声明为 protected,
这意味着不能在其他包的类中访问不属于同一类的对象的 clone方法。因此,如果打算让其他类也能复制某个类的对象,就需要在该类中覆盖 clone方法,并将其声明为 public。
6.1.3 clone方法(续)
为了使一个类的对象能够成功克隆,该类应实现 java.lang.Cloneable接口。
Cloneable接口的定义如下:
interface Cloneable{}
这个接口是空的,体为空的接口称为标记接口 (market interface)。
例 6-2 对象复制源代码 运 行
6.2 包装类
Number
Obje c t
B oolea n
B y te S hort
C ha ra c ter
I nteg e r L ong F loat Double
6.2.1包装类的构造方法
Character类只有一个构造方法:
public Character(char value)
其他包装类都有两个构造方法,比如,Integer类的构造方法如下:
public Integer(int value)
public Integer(String s)
例:
Integer integer0bject1 = new Integer(1);
Integer integer0bject2 = new Integer("1");
注意,Boolean类规定:只有字符串为 "true"
(忽略大小写)时,创建的 Boolean类对象的值才为 true,否则,为 false。
6.2.2 静态方法
valueOf()
例:
Integer integerObject=Integer.valueOf(1);
Double doubleObject=Double.valueOf("1.2");
Boolean booleanObject=Boolean.valueOf("yes")
注意,Character类中的方法 ValueOf()不能以字符串为参数。
toString(value)
例:
String s=Integer.toString(2);
6.2.2 静态方法(续)
除 Character类外,其他包装类中都定义有将字符串转换成相应的基本数据类型值的方法。
例:
int i=Integer.parseInt("2");
double d=Double.parseDouble("2.4");
boolean b=Boolean.parseBoolean("yes");
short s=Short.parseShort("2");
6.2.3 数据类型转换方法
每个包装类中都定义了将当前对象的值转换成相应基本数据类 型值的方法。
例:
boolean b=booleanObject.booleanValue();
char c=characterObject.charValue();
数值包装类的抽象父类 Number中,定义了下列通用方法:
abstract public double doubleValue()
abstract public float floatValue()
abstract public int intValue()
abstract public long longValue()
public byte byteValue()
public short shortValue()
所有包装类中,Object类中的 toString()方法被覆盖以返回代表相应对象内容的字符串。
6.2.4 其他常用方法
所有包装类中,Object类中的 equals()方法被覆盖以比较两个对象内容是否相等。
Character类中,定义有下列方法:
public static char toLowerCase
(char ch)
public static char toUpperCase
(char ch)
6.2.5 常量 MAX VALUE和 MIN VALUE
MAX VALUE:
– 对应基本数据类型所能取的最大值。
MIN VALUE:
–char,byte,short,int和 long类型所能取的最小值。
–float和 double类型所能取的最小正值。
6.3 Math类
常量:
– public static double E //自然对数的底 e
– public static double PI //圆周率
常用方法:
– 三角函数方法
– 指数函数方法
– 对数函数方法
– 其他常用方法
6.3 Math类(续)
三角函数方法:
– public static double sin(double a)
– public static double cos(double a)
– public static double tan(double a)
– public static double asin(double a)
– public static double acos(double a)
– public static double atan(double a)
其中,参数 a表示以弧度计量的角度。
6.3 Math类(续)
指数函数方法:
– public static double exp(double a)
//求 e的 a次方
– public static double pow(double a,
double b)
//求 a的 b次方
– public static double sqrt(double a)
//求 a的平方根
– public static double cbrt(double a)
//求 a的立方根
6.3 Math类(续)
对数函数方法:
– public static double log(double a)
//求 a的自然对数 lna
– public static double log10(double a)
//求 a的以 10为底的对数
6.3 Math类(续)
其他常用方法:
–abs()
–min(),max()
–round()
–random()
例 6-3 使用 Math类源代码 运 行
6.4 System类
成员变量:
– public static final InputStream in
– public static final PrintStream out
– public static final PrintStream err
成员方法:
– public static void arraycopy(Object src,int
srcPos,Object dest,int
destPos,int length)
– public static long currentTimeMillis()
– public static void exit(int status)
6.5 String类
6.5.1 创建 String对象
6.5.2 字符串操作
– 求字符串长度
– 字符串比较
– 字符串连接
– 查找单个字符
– 查找字符串
– 大、小写转换
– 子串
– 其他常用方法
6.5.1 创建 String对象
String s=new String(
"This is a character strings");
String s="This is a character strings";
注意,String对象是一个常量,一旦创建,其值不可改变。
6.5.2 字符串操作
求字符串长度:
String s="Hello,Java World";
int i=s.length(); //i=16
6.5.2 字符串操作(续)
字符串比较:
– public boolean equals(Object anObject)
– public boolean equalsIgnoreCase(String
anotherString)
– public int compareTo(String anotherString)
– public int compareToIgnoreCase(String str)
例:
boolean b1="Java".equals("java"); //b1=false
boolean b2="Java".equalsIgnoreCase("java"); //b2=true
int i1="Java".compareTo("java"); //i1=-32
int i2="Java".compareToIgnoreCase("java"); //i2=0
6.5.2 字符串操作(续)
字符串连接:
String s1="Hello!";
String s2=s1.concat("World");
//s2="Hello!World"
String s="Hello!"+"World";
6.5.2 字符串操作(续)
查找单个字符:
– public int indexOf(int ch)
– public int indexOf(int ch,int fromIndex)
– public int lastIndexOf(int ch)
– public int lastIndexOf(int ch,int fromIndex)
例:
String s="She is a student";
int i1=s.indexOf('s'); //i1=5
int i2=s.indexOf('s',7); //i2=9
int i3=s.lastIndexOf('s'); //i3=9
int i4=s.lastIndexOf('s',7); //i4=5
6.5.2 字符串操作(续)
查找字符串:
– public int indexOf(String str)
– public int indexOf(String str,int fromIndex)
– public int lastIndexOf(String str)
– public int lastIndexOf(String str,int fromIndex)
例:
String s="I love Java,I use Java!";
int i1=s.indexOf("Java"); //i1=7
int i2=s.indexOf("Java",9); //i2=18
int i3=s.lastIndexOf("Java"); //i3=18
int i4=s.lastIndexOf("Java",9); //i4=7
6.5.2 字符串操作(续)
大、小写转换:
–public String toLowerCase()
–public String toUpperCase()
例:
String s1="Java".toLowerCase(); //s1="java"
String s2="Java".toUpperCase(); //s2="JAVA"
6.5.2 字符串操作(续)
子串:
– public String substring(int
beginIndex)
– public String substring(int
beginIndex,int endIndex)
例:
"unhappy".substring(2) //返回字符串 "happy"
"Harbison".substring(3) //返回字符串 "bison"
"emptiness".substring(9) //返回字符串 ""
"hamburger".substring(4,8)//返回字符串 "urge"
"smiles".substring(1,5) //返回字符串 "mile"
6.5.2 字符串操作(续)
其他常用方法:
– public char charAt(int index)
// 返回字符串中位置 index处的字符,index的取值范围为
//0~length()-1
– public static String valueOf()
//该方法被重载,以将参数中的基本数据类型数据、字符
//数组或对象转换成相应的字符串,并返回
6.6 StringBuffer和 StringBuilder类
6.6.1 创建可变字符串对象
6.6.2 在可变字符串中追加和插入新内容
6.6.3 其他常用操作
6.6.4 字符串相加
6.6.1 创建可变字符串对象
StringBuilder类:
– public StringBuilder()
– public StringBuilder(int capacity)
– public StringBuilder(String str)
StringBuffer类:
– public StringBuffer()
– public StringBuffer(int capacity)
– public StringBuffer(String str)
注意,StringBuilder类的作用是在单线程编程时替代 StringBuffer类。
6.6.2 在可变字符串中追加和插入新内容
append()
例:
StringBuilder s=new StringBuilder("Hello!");
s.append("Java World"); //s="Hello!Java World"
insert()
例:
StringBuilder s=new StringBuilder("Hello!World");
s.insert(6,"Java "); //s="Hello!Java World"
6.6.3 其他常用操作
public char charAt(int index)
public int length()
public int capacity()
public StringBuilder reverse()
public void setCharAt(int
index,char ch)
public void setLength(int
newLength)
public String toString()
6.6.4 字符串相加
String s="Hello!"+"Java"+" "+"World";
等价于:
String s=new StringBuilder("Hello!").
append("Java").append(
" World").toString();
例 6-4 使用 StringBuilder类源代码 运 行
6.7 习 题