目录
包装类的概念
JAVA为了可以使基本数据类型当作对象处理,提出了包装类的概念,把JAVA中的8个基本数据类型包装成相应的类,就可以通过对象调用各自包装类中许多常用的方法。
基本数据类型 | 对应的包装类 |
int | Byte |
byte | Interger |
float | Float |
char | Character |
short | Short |
long | Long |
double | Double |
boolean | Boolean |
Interger类:
java.lang包中的Byte、Interger、Short、Long类,分别是对应基本数据类型的包装类,且其均是Number类的子类,故只解释一种。
1.构造方法
Interger(int number)
例:Interger id=new Interger(7); //int id=7;
Interger(String str)
例:Interger id=new Interger("45");
2.常用方法
方法 | 返回值类型 | 功能描述 |
valueOf(String str) | Interger | 返回String型参数值的interger对象 |
parseInt(String str) | int | 将String转换为int |
toString() | String | 返回一个表示interger值的String对象 |
toBinaryString(int i) | String | 返回String型的二进制 |
toHexString(int i) | String | 返回String型的十六进制 |
toOctalString(int i) | String | 返回String型的八进制 |
equals(Object intobj) | boolean | 判断是否相等 |
intValue() | int | int型返回此对象 |
shortValue() | short | short型返回此对象 |
byteValue() | byte | byte型返回此对象 |
例:常用方法展示:
package unit2;
public class Demo {
public static void main(String args[]) {
int num=Integer.parseInt("456");
Integer inum=Integer.valueOf("456");
System.out.println("int型数据与integer对象的比较:"+inum.equals(num));
String str=Integer.toBinaryString(num);
String str1=Integer.toHexString(num);
String str2=Integer.toOctalString(num);
String str3=Integer.toString(num, 15);
System.out.println("456的二进制表示:"+str);
System.out.println("456的十六进制表示:"+str1);
System.out.println("456的八进制表示:"+str2);
System.out.println("456的15进制表示:"+str3);
}
}
执行结果如下:
3.常量
Integer类提供了以下四个常量:
MAX_VALUE
MIN_VALUE
SIZE
TYPE
Number类
Number类是一个抽象类,它是Byte,Integer,Short,Long,Float,Double类的父类,要把Number类的子类对象转换为对应的基本数据类型,需要使用它的方法:
例:byteValue()可将参数转换为byte类型
Math类
Math类在java.lang中,表示数学类,可以提供给我们很多的数学计算方式,同时也提供了一些常量的值,比如圆周率等。,调用语法格式如下:
Math.数学方法
Math.常量名
1.常用函数方法
方法 | 返回值 | 功能描述 |
exp(double a) | double | 用于获取e的a次方 |
double log(double a) | double | 取自然对数,即lna |
double log10(double a) | double | 取对数,即log10a |
sqrt(double a) | double | 取a的平方根 |
cbrt(double a) | double | 取a的立方根 |
pow(double a,double b) | double | 用于取a的b次方 |
2.取整函数方法
方法 | 返回值 | 功能描述 |
ceil(double a) | double | 返回大于或等于参数的最小整数 |
floor(double a) | double | 返回小于或等于参数的最大整数 |
rint(double a) | double | 返回与参数最接近的整数,两数一样取偶数 |
round(float a) | int | 参数加上0.5后返回最接近,转换int |
round(double a) | long | 参数加上0.5后返回最接近,转换long |
3.取最大值、最小值、绝对值函数方法
方法 | 返回值 | 功能描述 |
max(double a,double b) | double | 取两者之间最大者 |
min(double 两者之间最小者a,double b) | double | 取 |
abs(int a) | int | 返回整型参数的绝对值 |
Random类
Random类在java.util包中包含,通过实例化一个Random类对象可以创建一个随机数生成器
Random r=new Random();
方法 | 返回值 | 功能描述 |
nextInt() | int | 返回一个随机int型值 |
nextInt(int n) | int | 返回一个大于等于0且小于n的随机int值 |
nextLong() | long | 返回一个随机long型值 |
nextBoolean() | boolean | 返回一个随机bool型值 |
nextFloat() | float | 返回一个随机float值 |
nextDouble() | double | 返回一个随机double型值 |
nextGaussian() | double | 返回一个概率密度为高斯分布的double值 |
例:模拟抢红包小程序获得随机金额
package unit2;
import java.util.Random;
import java.util.Scanner;public class RedBags {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("_____________模拟抢红包软件____________");
Scanner sc=new Scanner(System.in);
System.out.println("请输入您要发的红包大小数目:");
double total=sc.nextDouble();
System.out.println("请输入选择的红包个数:");
int piece=sc.nextInt();
double min=0.01;
Random random=new Random();
if(total/piece==0.01) {
for(int i=1;i<piece;i++) {
double money=min;
total-=0.01;
System.out.println("第"+i+"个红包的金额为"+money+"元");
}
}
else if(total/piece<0.01) {
System.out.println("要保证每个人最少分得0.01元哦!");
}
else {
for(int i=1;i<piece;i++) {
double Max=total-(piece-i)*min;
double bound=Max-min;
double safe=(double)random.nextInt((int)(bound*100))/100;
double money=safe+min;
total-=money;
if(money<0.1) {
System.out.println("运气太差了!");
System.out.println("第"+i+"个红包的金额为"+money+"元");
}
else {
System.out.println("第"+i+"个红包的金额为"+money+"元");
}
}
}
System.out.println("第"+piece+"个红包的金额为"+total+"元");
sc.close();
}
}
Date类
Java中的java.util包中提供了Date类来操作日期和时间,首先应该先实例化一个Date类的对象
用法有两种:
1.Date date=new Date();
2.long time=system.currentTimeMillis(); //获取系统当前时间据基准时间的毫秒数
Date date=new Date(timeMillis);
常用方法:
方法 | 返回值 | 功能描述 |
after(Date when) | bool | 测试当前日期是否在指定日期之后 |
before(Date when) | bool | 测试当前日期是否在指定日期之前 |
getTime() | long | 获得自基准时间到现在的毫秒数 |
setTime(long time) | void | 设置当前对象所表示的日期时间值 |
同时我们还可以使用
DateFormat df=DateFormat.getDateInstance();
类中提供了四种默认风格: SHORT、MEDIUM、LONG、FULL
枚举类型
枚举类型常被用于设置常量,语法格式如下:
enum Constants{
Constants_A,Constants_B
}
由于使用普通常量声明,会导致编译器不会对语意进行报错,只会对语法进行报错。
例:
public static int monday=1;
public static int Tuesday=2;
public static int Wednesday=3;
public static int Thursday=4;
public static int Friday=5;
public static int Saturday=6;
public static int Sunday=7;public int Day;
我只想让Day在周一至周日取值,可是当我输入让Day取值为55,语法上也成立,故我们应该使用枚举来完成这件事
例:
package unit2;
public enum Today {
monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday;
}Today td; //实例化一个枚举类型
td=Today.monday; //让该枚举类型取值
EnumMap<Today, String> map=new EnumMap<>(Today.class);
map.put(cl, "MONDAY");
map.put(cl2, "SUNDAY");
map.put(cl3, "FRIDAY");