一、包装类
1 什么是包装类
包装类就是就是能够直接将简单类型的变量表示为一个类,在执行变量类型的相互转换时,我们会大量使用这些包装类。是我们在实际使用中将基本数据类型转换为对象,方便操作
2 包装类与基本数据类型的关系
3 基本使用
基本类型转换为引用类型
二、Integer
1 基本使用
// 获取最大值和最小值
System.out.println("int最大值 : " + Integer.MAX_VALUE);
System.out.println("int最小值 : " + Integer.MIN_VALUE);
System.out.println(Byte.MAX_VALUE);
System.out.println(Long.MAX_VALUE);
// 创建Integer对象 int类型转换为Integer类型
Integer i1 = new Integer(10);
// 可以直接把纯数字的字符串转换为Integer类型
Integer i2 = new Integer("10");
System.out.println(i1);
System.out.println(i2);
// false
System.out.println(i1 == i2);
// 覆写了equals true
System.out.println(i1.equals(i2));
2 常用方法
// 1 对象 int-->Integer
Integer i1 = new Integer(10);
// 2 Interger-->int
int i2 = i1.intValue();
System.out.println(i2);
//3 static int parseInt(String s); : 把纯数字字符串转换为int类型
//String-->int 必须是纯数字字符串,有小数点也不行
int i3=Integer.parseInt("123");
System.out.println(i3);
//小数只允许有一个小数点
double d=Double.parseDouble("3.2");
System.out.println(d);
//将int类型的值转换为二进制的字符串表示形式
//static String toBinaryString(int value);
String s1=Integer.toBinaryString(12);//1100
System.out.println(s1);
//转换为八进制
System.out.println(Integer.toOctalString(10));//12
//转换为十六进制
System.out.println(Integer.toHexString(10));//a
//int-->Integer
Integer i4=Integer.valueOf(10);
//String-->Integer
Integer i5=Integer.valueOf(10);
System.out.println(i4==i5); //true
3 类型转换
//1 int-->Integer
Integer i1=Integer.valueOf(11);
//2 Integer-->int
int i2=i1.intValue();
//3 String-->Integer
Integer i3=Integer.valueOf("22");
//4 Integer-->String
String s1=i3.toString();
//5 String-->int
int i4=Integer.parseInt("123");
//6 int-->String
String s2=2+"";
4 自动装箱和自动拆箱
4.1 概念
自动装箱: 把基本类型自动转换为对应的包装类类型
* 自动拆箱: 把对应的包装类类型自动转换为基本类型
* 并且 自动装箱与自动拆箱都是在编译阶段完成的
public static void main(String[] args) {
//装箱与拆箱
Integer i1=Integer.valueOf(11);
int i2=i1.intValue();
//自动装箱与拆箱
Integer i3=2;
int i4=i3;
//此时的10是int类型的,没有办法转换为Object类型
//所以,需要把int自动装箱为Integer类型,然后发生多态,再转换为Object类型
m1(10);
}
public static void m1(Object obj){
System.out.println(obj);
}
下面是编译后的class文件
5 整形常量池
//自动装箱=Integer.valueOf(123);
//整型常量池的范围:-128~127之间
Integer i1=123;
Integer i2=123;
//true
System.out.println(i1==i2);
i1=new Integer(123);
i2=new Integer(123);
//false
System.out.println(i1==i2);
//这种写法就等于new Integer(128);
i1=128;
i2=128;
//false
System.out.println(i1==i2);
String s1="abc";
String s2="abc";
System.out.println(s1==s2);
s1=new String("abc");
s2=new String("abc");
System.out.println(s1==s2);
三、System
1是什么
System代表系统,系统很多属性和控制方法都在这个类中,位于java.lang包下
2 怎么用
// 计算时间差
long startTime = System.currentTimeMillis();
String[] strs = { "a", "b", "c", "d", "e", "f", "a", "b", "c", "d" };
String temp = "";
// for (int i = 0; i < strs.length; i++) {
// temp+=strs[i]+",";
// }
StringBuilder sb=new StringBuilder();
for (int i = 0; i < strs.length; i++) {
sb.append(strs[i]+",");
}
temp=sb.toString();
System.out.println(temp);
long endTime=System.currentTimeMillis();
//关闭JVM,0表示正常退出,非0表示异常退出,一般用于关闭图形界面
System.exit(0);
System.out.println("耗时 : " + (endTime - startTime) + "毫秒");
四、Date
1 是什么
表示特定的瞬间,精确到毫秒
2 构造方法
Date():使用无参构造器创建的对象可以获取本地当前时间。
Date(long date)
//获取当前系统时间
Date d1 =new Date();
//获取时间原点指定时间的毫秒数
d1=new Date(1000);
System.out.println(d1);
3 时间格式化
Date类的API不易于国际化,大部分被废弃了,java.text.SimpleDateFormat
类是一个不与语言环境有关的方式来格式化和解析日期的具体类。
它允许进行格式化:日期à文本、解析:文本à日期
// 年y, 月M, 日d, 小时H, 分m, 秒s, 毫秒S
//创建格式化对象并指定格式
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss:SSS");
//对时间进行格式化,返回字符串类型
String strDate=sdf.format(d1);
//1970年01月01日 08:00:00 000
System.out.println(strDate);
//解析 字符串格式必须和解析格式一致
Date d2=sdf.parse(strDate);
System.out.println(d2);
五、Calendar
1 是什么
Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能
2 方法
获取Calendar实例的方法
使用Calendar.getInstance()方法
调用它的子类GregorianCalendar的构造器。
一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想 要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、 MINUTE、SECOND
public void set(int field,int value)
public void add(int field,int amount)
public final Date getTime()
public final void setTime(Date date)
3 注意
获取月份时:一月是0,二月是1,以此类推,12月是11
获取星期时:周日是1,周一是2 , 。。。。周六是7
六、 Math
1 是什么
Math提供科学计算和基本的数字操作,常用方法都是静态的,使用类名直接调用即可
* 在java.lang下面,使用时不需要导包
2 常用方法
//绝对值 abs
System.out.println(Math.abs(-1.2));
//向上取整 ceil
System.out.println(Math.ceil(1.0001));
//向下取整 floor
System.out.println(Math.floor(2.999));
//比较谁大 max
System.out.println(Math.max(2.3, 2.2));
//比较谁小 min
System.out.println(Math.max(2.3, 2.2));
//平方根开平方 sqrt
System.out.println(Math.sqrt(16));
//立方根开立方 cbrt
System.out.println(Math.cbrt(8));
//随机数:获取一个大于等于0并且小于1的数 random
System.out.println(Math.random());
//向下取整(随机数*(最大值-最小值+1)+最小值)
System.out.println(Math.random()*10+10);
//四舍五入:四舍六入五留双, 小数大于0.5就进位,小于0.5就舍弃,等于0.5就取偶数
//比如:2.50001:3 , 3.5000:4 , 2.5000:2
System.out.println(Math.rint(2.50001));
//2的3次方
System.out.println(Math.pow(2, 3));
七、BigInteger
1 是什么
1、Integer类作为int的包装类,能存储的最大整型值为231-1,Long类也是有限的, 最大为263- 1、如果要表示再大的整数,不管是基本数据类型还是他们的包装类 都无能为力,更不用说进行
2、java.math包的BigInteger可以表示不可变的任意精度的整数。BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。 另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、 位操作以及一些其他操作。
2 常用方法
BigInteger add(BigInteger val) :返回其值为 (this + val) 的 BigInteger
BigInteger subtract(BigInteger val) :返回其值为 (this - val) 的 BigInteger
BigInteger multiply(BigInteger val) :返回其值为 (this * val) 的 BigInteger
BigInteger divide(BigInteger val) :返回其值为 (this / val) 的 BigInteger。整数 相除只保留整数部分。
BigInteger rpublic BigInteger abs():返回此 BigInteger 的绝对值的 BigInteger。
emainder(BigInteger val) :返回其值为 (this % val) 的 BigInteger。
BigInteger[] divideAndRemainder(BigInteger val):返回包含 (this / val) 后跟(this % val) 的两个 BigInteger 的数组。
BigInteger pow(int exponent) :返回其值为 (thisexponent) 的 BigInteger。
3 使用
//参数是字符串
BigInteger v0=new BigInteger("11");
//参数是数值
BigDecimal v1=new BigDecimal(20);
BigDecimal v2=new BigDecimal(10);
// + add
BigDecimal v3=v1.add(v2);
// - substract
v3=v1.subtract(v2);
// * multiply
v3=v1.multiply(v2);
// / divide
v3=v1.divide(v2);
System.out.println(v3);
// % remainder
v3=v1.remainder(v2);
System.out.println(v3);
System.out.println(Long.MAX_VALUE);
BigDecimal sum=new BigDecimal(1);
for (int i = 0; i <=100; i++) {
sum=sum.multiply(new BigDecimal(i));
}
System.out.println(sum);
八、Random
//创建随机数生成器
Random r=new Random();
//大于等于0且小于10的整数
int result=r.nextInt(10);
System.out.println(result);
//生成10~20
//nextInt(最大值-最小值+1)+最小值
result =r.nextInt(11)+10;
System.out.println(result);
//生成a~z
result =r.nextInt(26);
char c=(char)(result+97);
System.out.println(c);