一、Java API简介
Java常用的包:
- java.lang包:这是Java语言的核心类库,包含了最常用的类,如基本数据类型包装类、数学运算类、字符串类、线程、异常处理类等。 使用java.lang包下的类不需要通过import导入,程序运行时,系统会自动加载该包。
-
java.io包:主要包含与输入/输出有关的类,这些类提供了对不同的输入和输出设备读/写数据的支持,这些输入和输出设备包括键盘、显示器、磁盘文件等。
-
java.util包:提供一些常用的工具类,如处理时间的Date类,非常重要的集合类库也在这个包下。
-
javax.swing/java.awt包:提供了创建图形用户界面程序的类。包中包含了窗口、对话框、菜单等类。
-
java.net包:包含了与网络编程相关的类库,包括Socket通信支持、Internet访问支持等。
-
java.sql包:包含数据库编程的类库,利用它可以使Java程序具有访问不同类型数据库的功能。
二、Object类
1.Object类常用方法
Java.lang.Object类是所有类的直接或间接父类,处在类的最高层次。
一个类在声明时若不包含关键字extends,系统就会认为该类直接继承Object类。
类中包含了所有Java类的 公共属性和方法,这些属性和方法在任何类中均可以直接使用。
(1)public final class getClass( )
- 获取当前对象所属类的信息,返回class对象。
- 任何方法所属的类都是确定的,所以该方法不能被子类重写(final方法不能被子类改写)。
- 通过class类,程序可以在运行时动态访问类的信息。
(2)public int hashCode( )
- 得到用以标志对象的哈希码。
- 默认情况下,该方法将对象在内存中的地址转换为一个int型整数作为返回值。
- 未重写该方法时,任何对象的哈希码都是唯一的。
(3)public boolean equals(Object obj)
- 比较两个对象是否“同一”,即比较两个引用是都指向同一个对象,与==含义相同。
- 该方法经常被重写,以真正实现比较两个对象是否相等。
- 通常情况下,若子类重写equals()方法,也必须重写hashCode()方法,主要是为了和集合类集合在一起时可以正常工作。
- 官方文档中对hashCode方法有如下约定:如果两个对象根据equals方法是相等的,那么hashCode方法也应该返回相同的值;如果两个对象根据equals方法是不等的,并不要求hashCode方法的结果不一样。
- 判断两个字符串内容是否相等,要用equals( )方法,不能用==
(4)protected Object clone( )
- 返回当前对象的一个拷贝,该方法通常需要在子类中重新改写才能使用。
(5)public String toString( )
-
以字符串形式返回对象的相关信息。
(6)protected void finalize( )
-
定义垃圾回收器回收当前对象时 所需完成的清理工作。
2.实例
public class Test{
public static void main(String[] args) {
Test test1=new Test();
System.out.println("test1对象所属于的类为:"+test1.getClass());//class Test
System.out.println("test1对象的哈希码值为:"+test1.hashCode());
System.out.println("test1对象的toString()方法返回值为:"+test1.toString());
Test test2=new Test();
System.out.println("利用equals方法判断两个对象是否相等的结果:"+test1.equals(test2));//false
System.out.println("利用==判断两个对象是否相等的结果:"+test1.equals(test2));//false
String s1=new String("abc");
String s2=new String("abc");
String s3="123";
String s4="123";
System.out.println("s1==s2结果为"+(s1==s2));//false
System.out.println("s1.equals(s2)结果为:"+(s1.equals(s2)));//true,String类中改写了equals方法
System.out.println("s3==s4结果为"+(s3==s4));//true,字符串常量生成的变量,其所存放的地址是相同的
System.out.println("s3.equals(s4)结果为:"+(s3.equals(s4)));//true
}
}
三、基本数据类型包装类
1.基本数据类型包装类
(1)Java中提供了基本类型的封装类,包含更多的属性和方法,如下表:
(2)基本数据类型封装类有如下共同特点:
- 类中定义了对应基本类型的常数;
- 提供基本数据类型和字符串的相互转换方法;
- 对象中封装的值是不可改变的,改变对象值的唯一的方法是创建一个新的对象;
- 对equals(),hashCode(),toString()方法做了改写。
2.Integer类的主要属性和方法
(1)属性
- public static final int MAX_VALUE //返回int数据的最大值
- public static final int MIN_VALUE //返回int数据的最小值
(2)构造方法
- public Integer(int value); //利用整数生成对象
- public Integer(String s); //利用字符串生成对象
(3)成员方法
- public int intValue(); //返回对象的整数值
- public double doubleValue(); //返回对象的浮点数值
- public String toString(); //将对象对应整数值转换为字符串
- public static String toString(int i); //将指定整数转换为10进制字符串
- public static String toString(int i,int radix); //表示将10进制的 i 转换为radix进制的整数
- public static int parseInt(String s); //将字符串转化为整数,s必须是数字
- public static int parseInt(String s,int radix); //用于表示radix进制的s转换为10进制是什么,基数radix可以是10, 2, 8, 或 16 等进制数,表示的是前边的s是什么进制数。
- public static Integer valueOf(String s); //将字符串转换为对象
- 常用操作:基本类型常量转字符串类型,连接一个空串即可:String s1=123+" ";
public class Train {
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
Integer i1 = new Integer(123);
Integer i2 = new Integer("123");
System.out.println(i1 == i2);
System.out.println(i1.equals(i2));//判断两个值是否相等
System.out.println(i1.intValue());
System.out.println(i1.doubleValue());
int i3 = Integer.parseInt("12");//字符串转基本类型
int i4 = Integer.parseInt("34");
System.out.println(i3 + i4);
int i5=Integer.parseInt("12",8);//其它进制转十进制
String s1=Integer.toString(16,16);//十进制转其它进制
System.out.println(i5+","+s1);
Integer a = 10;//基本类型和包装类型自动转换,自动装箱(Auto Boxing)
int i = a;//自动拆箱(Auto Unboxing)
System.out.println(i);
String s2=123+"";//基本类型转字符串的简单方法
System.out.println(s2);
}
}
//结果
2147483647
-2147483648
false
true
123
123.0
46
10,1010
10
123
四、字符串类
1.String 和StringBuffer
- String用来表示字符串常量,字符串被创建后内容不能修改。
- StringBuffer用来表示字符串变量,字符串内容创建后可以修改。
2.StringBuffer类的常用方法
(1)构造方法
- public StringBuffer( ); //创建一个空的StringBuffer对象
- public StringBuffer(int length); //设置初始容量
- public StringBuffer(String s); //利用已知字符串初始化StringBuffer对象
(2)成员方法
- public StringBuffer append (String s); //在字符串的尾部追加指定字符串,重载方法有多个
- public StringBuffer insert(int index,String s); //在指定位置插入指定字符串
- public void setCharAt(int index,char c); //将index处的字符设为c
- public StringBuffer reverse(); //将字符串翻转
- public StringBuffer replace(int start,int end,String s); //用指定字符串替换指定位置字符串
3.StringBuffer实例
public class Train {
public static void main(String[] args) {
StringBuffer s=new StringBuffer("abcd");
s.append("efg");//append是方法,不能放在println语句中,下同
System.out.println(s);//abcdefg
s.insert(0, "happy");//插入
System.out.println(s);//happyabcdefg
s.setCharAt(1,'x');//将某处的字符设置为另一个字符
System.out.println(s);//hxppyabcdefg
s.reverse();//翻转
System.out.println(s);//gfedcbayppxh
s.replace(0, 3, "str");//替换
System.out.println(s);//strdcbayppxh
}
}
五、System类和Runtime类
1.System类
Java.lang.System类是一个很特殊的类,该类不能被实例化,是一个非常典型的静态方法类,主要提供与系统相关的静态方法和一些静态对象。
(1)属性
- public static final InputStream in //标准输入流
- public static final PrintStream out //标准输出流
- public static final PrintStream err //标准错误输出流
- 通常标准输入是指控制台下的键盘输入,标准输出和标准错误输出是指控制台下的屏幕输出,流已经打开并准备输入和输出数据。
(2)方法
-
public static void exit(int status)
//终止当前正在运行的Java虚拟机,参数用作状态码,按照惯例,非0的状态码表示异常终止。
-
public static long currentTimeMillis()
//返回以毫秒为单位的当前时间,这个毫秒就是自1970年1月1日0时起的毫秒数。可以利用该方法计算一段代码的运行时间。
-
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
//复制数组,源数组中srcPos 到 srcPos+length-1 之间的数据被复制到目标数组中 destPos 到 destPos+length-1 位置。
(3)实例
public class Test {
public static void main(String[] args) {
long timeStart = System.currentTimeMillis();
String[] s1 = { "aaa", "bbb", "ccc", "ddd", "eee", "fff" };
String[] s2 = new String[6];
System.arraycopy(s1, 0, s2, 0, s1.length);// 将s1内容全部赋给s2
long timeEnd = System.currentTimeMillis();
System.out.println("数组复制操作运行时间为" + (timeEnd - timeStart));
for (String s : s2) {
System.out.println(s);
}
}
}
2.Runtime类
Runtime类封装了运行时的环境。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用。
Java虚拟机本身就是Windows上的一个进程,这个进程可以启动其他的Windows程序,通过这种方式启动的Windows程序实例就称为子进程。Java虚拟机调用Runtime的exec方法就可以启动这个子进程,其返回值是代表子进程的Process对象。
例题:在Java程序中启动一个Windows记事本程序,并打开一个文本文件,启动的记事本程序在8秒后被关闭。
public class Test {
public static void main(String[] args) {
Process p = null;
try {
p = Runtime.getRuntime().exec("notepad.exe c:\\a.txt");
Thread.sleep(8000);
p.destroy();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
六、数学运算类
1.Math类
(1)属性
- public static final double E; //数学常量e
- public static final double PI; //数学常量圆周率
(2)方法
- public static int abs(int i); //求绝对值
- public static double sin(double a); //求正弦
- public static double log(double a); //求自然对数(以e为底)
- public static double max(double a,double b); //求最大值
- public static double pow(double a,double b); //求乘幂
- public static double random(); //产生0-1之间的伪随机数
- public static double exp(double a); //求e的a次幂
- public static int round(float a); //四舍五入
- public static double sqrt(double a); //求平方根
(3)实例
public class Train {
public static void main(String[] args) {
System.out.println(Math.E);
System.out.println(Math.PI);
System.out.println(Math.random());//random是方法,要加括号,其实也可以自动补全
System.out.println(Math.abs(-12));
System.out.println(Math.sin(Math.PI));
System.out.println(Math.log(Math.E*Math.E));
System.out.println(Math.max(12, 15));
System.out.println(Math.pow(2, 3));
System.out.println(Math.exp(2));
System.out.println(Math.round(5.4));
System.out.println(Math.sqrt(9));
}
}
2.BigInteger/BigDecimal类
由于编程语言所提供的基本数值数据类型表示的数值范围有限,不能满足较大规模的高精度数值计算,Java中提供了Java.math.BigInteger和Java.math.BigDecimal实现大整数和大实数运算。
下面介绍BigInteger的常用属性和方法,BigDecimal使用方式类似。
(1)属性
- public static final BigInteger ONE; //表示BigInteger的1
- public static final BigInteger ZERO; //表示BigInteger的0
- public static final BigInteger TEN; //表示BigInteger的10
(2)构造方法
-
public BigInteger(String val); //利用十进制整数字符串创建BigInteger对象
-
BigInteger x=new BigInteger("98765432112345");!!!字符串形式
(3)成员方法
-
public BigInteger add(BigInteger val); 加法
-
public BigInteger subtract(BigInteger val); 减法
-
public BigInteger multiply(BigInteger val); 乘法
-
public BigInteger divide(BigInteger val); 除法
-
public int Compare To(BigInteger val); 比较大小,相等返回0,大于返回1,小于返回-1
import java.math.BigInteger;//导入模块
public class Train {
public static void main(String[] args) {
BigInteger x=new BigInteger("98765432112345");//字符串形式
BigInteger y=new BigInteger("7896543261782");
BigInteger z1=x.add(y);
BigInteger z2=x.subtract(y);
BigInteger z3=x.multiply(y);
BigInteger z4=x.divide(y);
int z5=x.compareTo(y);
}
}
3.数字格式化
Java提供了Java.text.DecimalFormat类,用于满足各种数字格式化的要求。
import java.text.DecimalFormat;
public class Train {
public static void main(String[] args) {
double pi=3322.1415926;
long a=1234567890;
DecimalFormat df1=new DecimalFormat("0");//取一位整数,会四舍五入
DecimalFormat df2=new DecimalFormat("0.00");//取一位整数和两位小数
DecimalFormat df3=new DecimalFormat("00.000");//取两位整数和三位小数,整数不足部分以0填补
DecimalFormat df4=new DecimalFormat("#");//取所有整数部分
DecimalFormat df5=new DecimalFormat("#.##%");//以百分比方式计数,并保留两位小数
DecimalFormat df6=new DecimalFormat("#.#####E0");//科学计数法,并保留5位小数
DecimalFormat df7=new DecimalFormat("00.####E0");//两位(三位3个0)整数的科学计数法,并保留4位小数
DecimalFormat df8=new DecimalFormat(",###");//每3位以逗号分隔,从个位开始
System.out.println(df8.format(a));
System.out.println(new DecimalFormat("。。。###米").format(a));//将格式嵌入文本
}
}