9.1 包装类
java是一种面向对象语言,但在Java中不能定义基础数据类型的对象,为了能将数据类型视为对象进行处理,Java提出了包装类的概念,它主要是将数据基础类型封装在包装类中,如int型数据类型数值包装类Integer,boolean型的包装类boolean等,这样便可以把这些数据类型转换为对象进行处理。
9.1.1 Integer类
java.lang包装的integer类、Byte类、Short类和Long类,分别将数据类型int、byte、short和long封装成一个类,由于这些类都是number的子类,区别就是封装不同的数据类型,其包含的基本方法相同。
1.构造方法
Integer类有以下两种构造方法。
(1)Integer(int number)
Integer number = new Integer(7);
(2) Integer(String str)
Integer number = new Integer("45");
2.常用方法
代码
结果
代码
结果
9.1.2 Double类
double类和float类都是对double、float基本类型的封装,它们都是number类的子类,都是对小数进行操作,所以常用方法基本相同。
1、构造方法
(1)Double(double value)
Double number = new Double(3.14);
(2)Double(String str)
Double number = new Double ("3.14");
2、常用方法
3.常量
MAX_VALUE:值为 1.8E308 的常量,它表示 double 类型的最大正有限值的常量。
MIN_VALUE:值为 4.9E-324 的常量,它表示 double 类型数据能够保持的最小正非零值的常量。
NaN:保存 double 类型的非数字值的常量。
NEGATIVE_INFINITY:保持 double 类型的负无穷大的常量。
POSITIVE_INFINITY:保持 double 类型的正无穷大的常量。
SIZE:用秦以二进制补码形式表示 double 值的比特位数。
TYPE:表示基本类型 double 的 Class 实例。
代码
结果
9.1.3 Boolean类
Boolean类将基本类型为boolean的值包装在一个对象中。
1、构造方法
(1)Boolean(boolean value)
Boolean b = new Boolean(true);
(2)Boolean(String str)
Boolean bool = new Boolean("ok");
2、常用方法
3.常量
- TRUE:对应基值 true 的 Boolean 对象。
- FALSE:对应基值 false 的 Boolean 对象。
- TYPE:表示基本类型 boolean 的 Class 对象。
代码
结果
9.1.4Character 类
Character类在对象中包装一个基本类型为char的值。
1.构造方法
Character(char value)
Character mychar = new Character("s");
2.常量
Character.CONNECTOR返回byte型数据表示Unicode规范中的常规类别“Pc"
Character.UNASSIGNED Unicode规范中的常规类别"Cn"
Character.TITLECASE_LETTER Unicode中的规范常规类别"Lt"
代码
结果
9.1.5 Number类
Number 是一个抽象类,也是一个超类(即父类)。Number 类属于 java.lang 包,所有的包装类(如 Double、Float、Byte、Short、Integer 以及 Long)都是抽象类 Number 的子类。
9.2 Math 类
在 Java 中 Math 类封装了常用的数学运算,提供了基本的数学操作,如指数、对数、平方根和三角函数等。Math 类位于 java.lang 包,它的构造方法是 private 的,因此无法创建 Math 类的对象,并且 Math 类中的所有方法都是类方法,可以直接通过类名来调用它们。
Math.数学方法
在Math类中除了函数方法外还存在一些常用的数学常量
Math.PI
Math.E
System.out.println("圆周率的值为"+Math.PI)
System.out.println("自然对数底数e的值为"+Math.E)
9.2.2常用数学运算方法
1.三角函数方法
代码
结果
2.指数方法
代码
结果
3.取整函数方法
4.取最大值、最小值、绝对值函数方法
9.3 随机数
9.3.1 Math.rand()方法
Random 类提供了丰富的随机数生成方法,可以产生 boolean、int、long、float、byte 数组以及 double 类型的随机数,这是它与 random() 方法最大的不同之处。random() 方法只能产生 double 类型的 0~1 的随机数。
代码
import java.util.Scanner;
public final class ll {
public static void main(String[] args) {
System.out.println("-------猜数字游戏--------\n");//打印标题
int iNum;//创建属性
int iGuess;//创建属性
Scanner in = new Scanner(System.in);//获取键盘值
iNum = (int) (Math.random()*100);//随机生成值
System.out.println("亲输入你猜的数字");//打印标题
iGuess = in.nextInt();//赋值
while ((iGuess != -1) && (iGuess != iNum))//判断
{
if (iGuess < iNum)//判断
{
System.out.println("太小,请重新输入:");//打印结果
iGuess = in.nextInt();//赋值
}else //判断
{
System.out.println("太大,请重新输入:");//打印结果
iGuess = in.nextInt();//赋值
}
}
if (iGuess == -1)//判断
{
System.out.println("退出游戏!");//打印结果
}else//判断
{
System.out.println("恭喜你,你赢了,猜中的数字是:" + iNum);//打印结果
}
System.out.println("\n-------游戏结束----------");//打印结果
}
}
结果
9.3.2Random 类
代码
import java.util.Random;
import java.util.Scanner;
public final class ll {
public static void main(String[] args) {
System.out.println("-------模拟微信抢红包---------\n");
Scanner sc = new Scanner(System.in);
System.out.println("请输入要装入红包的总金额:");
double total = sc.nextDouble();
System.out.println("请输入红包个数:");
int bagsnum = sc.nextInt();
double min = 0.01;
Random random = new Random();
for (int i = 1; i < bagsnum; i++)
{
/**
* 通过公式模拟数字中的离散模型计算一个红包可以放的最大金额
* 本次可用最大金额 = 可分配金额 - (红包总数*已发出红包数)*红包的最小金额
*/
double max = total - (bagsnum - i) * min;
double bound = max - min;
double safe = (double) random.nextInt();
double money = safe + min;
total = total - money;
System.out.println("第" + i + "个红包" + String.format("%.2f", money) + "元");
System.out.println("第" + bagsnum + "个红包" + String.format("%.2f", total) + "元");
sc.close();
}
}
}
结果
9.4日期与时间
9.4.1Date类
方法
long timeMillis = System.currentTimeMillis();
Date date = new Date(timeMillis);
代码
结果
SimpleDateFormat 类
如果使用 DateFormat 类格式化日期/时间并不能满足要求,那么就需要使用 DateFormat 类的子类——SimpleDateFormat。
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类,它允许进行格式化(日期→文本)、解析(文本→日期)和规范化。SimpleDateFormat 使得可以选择任何用户定义的日期/时间格式的模式。
代码
结果
9.4.2Calendar 类
代码
结果