肖sir__Java API 基础012
Java API
1.1 Object类
Object类是所有类的父类,所有对象(包括数组)都实现这个类的方法。
也就是说,Java 允许把任何类型的对象赋给 Object 类型的变量。
当一个类被定义后,如果没有指定继承的父类,那么默认父类就是 Object 类。
Java中所有对象都可以调用 Object 类的方法
例如:
Object array = new int[]{1, 2}; // 把数组对象赋值给Object类型的变量
if (array instanceof int[]) { // 判断array变量是否是一个数组类型对象
int[] ints = (int[]) array; // 把Object对象强转成数组
System.out.println(ints[0]); // 获取数组中的元素并输出
}
1.2 Object类
Object类中常用方法
1.3 Object类
Object类中常用方法:
1,哈希码(hashCode),每个 Java 对象都有哈希码属性,哈希码可以用来标识对象,提高对象在集合操作中的执行效率。
2,toString() 方法返回该对象的字符串,当程序输出一个对象或者把某个对象和字符串进行连接运算时,系统会自动调用该对象的 toString() 方法返回该对象的字符串表示。
Object 类的 toString() 方法返回“运行时类名@十六进制哈希码”格式的字符串,
可以重写Object 类的 toString() 方法,用于返回可以表述该对象信息的字符串。
3,equals() 方法是比较两个对象的内容是否相等,通常字符串的比较只是关心内容是否相等
1.4 Object类
Object类练习题:
1,编写一个 Java 程序,实现用户登录的验证功能。要求用户从键盘输入登录用户名和密码,当用户输入的用户名等于 admin 并且密码也等于 admin 时,则表示该用户为合法用户,提示登录成功,否则提示用户名或者密码错误信息
2.1 System类
System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于
java.lang包。由于该类的构造方法是private的,所以无法创建该类的对象,也就是
无法实例化该类。其内部的成员方法和成员变量都是static(静态)的,所以可以通
过类名调用
常用方法
Arraycopy 数组复制
currentTimeMillis 获取当前时间的毫秒数
getProperty 获取系统属性
gc java垃圾回收器
exit 退出虚拟机
identityHashCode 返回给定对象的哈希码
2.2 System类
System类中getProperty() 方法
该方法的作用是获得系统中属性名为 key 的属性对应的值,具体的定义如下:
java.version Java 运行时环境版本
java.home Java 安装目录
os.name
操作系统的名称
os.version 操作系统的版本
user.name 用户的账户名称
user.home 用户的主目录
user.dir
用户的当前工作目录
例如:
String jversion = System.getProperty("java.version");
String oName = System.getProperty("os.name");
String user = System.getProperty("user.name");
2.3 System类
System类练习题:
1,写程序比较for循环,while循环,do...while循环,各循环1000次所花费得时间(秒),以及所花费时间得升序排名。
2,使用控制台输入10个数字存入到数组中,然后使用arraycopy() 方法把数组中最小的3个元素复制到另外一个数组中,并输出到控制台。
3.1 Math类
Math 类封装了常用的数学运算,提供了基本的数学操作,如指数、对数、平方根和
三角函数等。Math 类位于 java.lang 包,它的构造方法是 private 的,因此无法创
建 Math 类的对象,Math 类中的所有方法都是类方法,可以直接通过类名来调用。
Math中的常用方法:
abs 求绝对值
max 求最大值
min 求最小值
pow(double a,double b) 求a的b次方
random 获取一个大于0小于1的随机数
Math中的静态常量:
E 自然对数
PI 圆周率
3.2 Math类
Math 类练习题:
1,随机生成10个1-10之间的整数,10个数字不允许重复,根据生成数字的次序,求该数字次序的次方,并把结果存入到另外一个数组中,然后对数组进行升序和降序排序
4.1 Date类和Calendar类
Java 中获取当前时间,可以使用 java.util.Date 类和 java.util.Calendar 类完成。其中,Date 类主要封装了系统的日期和时间的信息,Calendar 类则会根据系统的日历来解释 Date 对象。
Date 类表示系统特定的时间戳,可以精确到毫秒。Date 对象表示时间的默认顺序
是星期、月、日、小时、分、秒、年。
Date 类有如下两个构造方法。
Date():此种形式表示分配 Date 对象并初始化此对象,以表示分配它的时间(精确
到毫秒),使用该构造方法创建的对象可以获取本地的当前时间。
Date(long date):此种形式表示从 GMT 时间(格林尼治时间)1970 年 1 月 1 日
0 时 0 分 0 秒开始经过参数 date 指定的毫秒数
4.2 Date类和Calendar类
Date 类中的常用方法
4.3 Date类和Calendar类
Date日期格式化SimpleDateFormat类:
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类,它允许进行格式化(日期→文本)、解析(文本→日期)和规范化。SimpleDateFormat 使得可以选择任何用户定义的日期/时间格式的模式。
SimpleDateFormat 类3种构造方法。
SimpleDateFormat():用默认的格式和默认的语言环境构造 SimpleDateFormat。
SimpleDateFormat(String pattern):用指定的格式和默认的语言环境构造 Simple
DateF ormat。
SimpleDateFormat(String pattern,Locale locale):用指定的格式和指定的语言环
境构造 Simp
4.4 Date类和Calendar类
SimpleDateFormat 自定义格式中常用的字母及含义:
4.4 Date类和Calendar类
Date日期格式化练习题:
1,编写 Java 程序,使用 SimpleDateFormat 类格式化当前日期并打印,日期格式为“xxxx 年 xx 月 xx 日星期 xxx 点 xx 分 xx 秒”。
2,通过控制台输入一个员工年龄,求该员工的出生日期,并求到当前日期该员工所经过的天数。
4.5 Date类和Calendar类
Calendar类:
Calendar 类是一个抽象类,它为特定瞬间与 YEAR、MONTH、DAY_OF—MONTH、
HOUR 等日历字段之间的转换提供了一些方法。
Calendar 类中常量的意义:
Calendar.YEAR:年份。
Calendar.MONTH:月份。
Calendar.DATE:日期。
Calendar.DAY_OF_MONTH:日期,和上面的字段意义完全相同。
Calendar.HOUR:12小时制的小时。
Calendar.HOUR_OF_DAY:24 小时制的小时。
Calendar.MINUTE:分钟。
Calendar.SECOND:秒。
Calendar.DAY_OF_WEEK:星期几。
Calendar对象的使用实例:
Calendar c = Calendar.getInstance(); //默认是当前日期
Calendar c1 = Calendar.getInstance(); c1.set(2009, 6 - 1, 12); // 指定日期
Calendar类对象信息的获得
Calendar c1 = Calendar.getInstance();
int year = c1.get(Calendar.YEAR); // 获得年份
int month = c1.get(Calendar.MONTH) + 1; // 获得月份
int date = c1.get(Calendar.DATE); // 获得日期
int hour = c1.get(Calendar.HOUR_OF_DAY); // 获得小时
int minute = c1.get(Calendar.MINUTE); // 获得分钟
int second = c1.get(Calendar.SECOND); // 获得秒
// 获得星期几(
1代表星期日、2代表星期1、3代表星期二,以此类推)
int day = c1.get(Calendar.DAY_OF_WEEK);
Calendar 练习题:
1,在控制台输出当前月份的日历格式,格式如下:
例如:
------------------2016 年 6 月--------------------
日 一 二 三 四 五 六
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 3
5.1 BigInteger类和BigDecimal类
Java 中提供了用于大数字运算的类,即 java.math.BigInteger 类和java.math.BigDecimal 类。这两个类用于高精度计算,其中 BigInteger 类是针对整型大数字的处理类,而 BigDecimal 类是针对大小数的处理类。
5.2 BigInteger类和BigDecimal类
BigInteger 类:
如果要存储比 Integer 更大的数字,Integer 数据类型就无能为力了。因此,Java 中提供 BigInteger 类来处理更大的数字。
BigInteger 类型的数字范围较 Integer 类型的数字范围要大得多。BigInteger 支持任意精度的整数,也就是说在运算中 BigInteger 类型可以准确地表示任何大小的整数值。
创建一个BigInteger 对象实例:
BigInteger bi = new BigInteger("5");
5.3 BigInteger类和BigDecimal类
BigInteger 类中的常用方法:
5.4 BigInteger类和BigDecimal类
BigDecimal 类:
BigInteger 和 BigDecimal 都能实现大数字的运算,不同的是 BigDecimal 加入了小数的概念。一般的 float 和 double 类型数据只能用来做科学计算或工程计算,但由于在商业计算中要求数字精度比较高,所以要用到 BigDecimal 类。BigDecimal 类支持任何精度的浮点数,可以用来精确计算货币值。
BigDecimal 常用的构造方法如下。
BigDecimal(double val):实例化时将双精度型转换为 BigDecimal 类型。
BigDecimal(String val):实例化时将字符串形式转换为 BigDecimal 类型。
BigDecimal 类的方法可以用来做超大浮点数的运算,像加、减、乘和除等。在所有
运算中,除法运算是最复杂的,因为在除不尽的情况下,末位小数的处理方式是需要考虑的。
5.5 BigInteger类和BigDecimal类
BigDecimal 类中常用方法:
BigDecimal add(BigDecimal augend) // 加法
BigDecimal subtract(BigDecimal subtrahend) // 减法
BigDecimal multiply(BigDecimal multiplieand) // 乘法
BigDecimal divide(BigDecimal divisor,int scale,int roundingMode ) // 除法
说明:divide() 方法的 3 个参数分别表示除数、商的小数点后的位数和近似值处理模式
5.6 BigInteger类和BigDecimal类
BigDecimal 类中常用方法:
BigDecimal.setScale()方法用于格式化小数点
setScale(1)表示保留一位小数,默认用四舍五入方式
setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3
setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4
setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4
setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5
则向下舍
setScaler(1,BigDecimal.ROUND_CEILING)接近正无穷大的舍入
setScaler(1,BigDecimal.ROUND_FLOOR)接近负无穷大的舍入,数字>0和
ROUND_UP作用一样,数字<0和ROUND_DOWN作用一样
setScaler(1,BigDecimal.ROUND_HALF_EVEN)向最接近的数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
5.7 BigInteger类和BigDecimal类
BigDecimal 类中常用方法:
四舍五入实例:
double num = 111231.5585;
BigDecimal b = new BigDecimal(num);
//保留2位小数
double result = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(result); //111231.56