一、基本类型包装类
(一)包装类概述分类
1.为什么java对基本类型数据提供包装类?
因为java是一门面向对象的语言,而基本类型数据不具备面向对象的特性(比如:不能调用方法,没有属性),因此为了让基本类型数据也有面向对象的特性,所以java针对每一种基本数据类型设计它对应的包装类型,这些包装类型就是java类了,这些类就有属性和方法,间接的把基本类型数据转为面向对象方式了。
2.基本数据类型的包装类
(二)Integer重点说明,其他的与其相似
1.包装类型虽然有8个,但是我们之详细学习Integer,因为发现所有包装类中拥有的属性和方法都差不多,学习一个即可触类旁通。
2.Integer类型:Integer类在对象中包装了一个基本类型int的值,该类提供了很多方法,能在int类型和String类型之间相互转换,还提供了处理int类型时非常有用的其他一些常量和方法。
3.可以完成int Integer String 三个数据类型的相互转换
Integer类常用的构造方法
案例:
public class Demo01 {
public static void main(String[] args) {
//public Integer(int value) 根据一个int基本类型数据创建一个Integer对象
Integer i1 = new Integer(100);
System.out.println(i1);
//public Integer(String value) 根据一个String基本类型数据创建一个Integer对象
Integer i2 = new Integer("123");
System.out.println(i2);
}
}
Integer类常用方法
案例:
public class Demo01 {
public static void main(String[] args) {
int a = Integer.parseInt("1234");
System.out.println(a);
String s1 = Integer.toBinaryString(7);
System.out.println(s1);
String s2 = Integer.toHexString(15);
System.out.println(s2);
String s3 = Integer.toOctalString(9);
System.out.println(s3);
System.out.println("======================");
int r1 = Integer.parseInt("10",2);
System.out.println(r1);
int r2 = Integer.parseInt("10",8);
System.out.println(r2);
int r3 = Integer.parseInt("1f",16);
System.out.println(r3);
String s4 = Integer.toString(15,16);
System.out.println(s4);
Integer i4 = Integer.valueOf("123");
System.out.println(i4);
}
}
Integer类的常量属性
public class Demo02 {
public static void main(String[] args) {
int maxValue = Integer.MAX_VALUE;
System.out.println(maxValue);
int minValue = Integer.MIN_VALUE;
System.out.println(minValue);
int size = Integer.SIZE;
System.out.println(size);
Class c = Integer.TYPE;
System.out.println(c);
}
}
(三)自动拆箱和自动装箱
1.自动拆箱和自动装箱
手动装箱
把基本数据类型的数据存放到对应的包装类类型的对象的过程就叫做装箱 int ---->Integer
int a = 10;
Integer i1 = new Integer(a);
System.out.println(i1);
手动拆箱
把包装类对象中的值存放到对应的基本数据类型变量中的过程就叫做拆箱
Integer i2 = new Integer("123");
int b = i2.intValue();
System.out.println(b);
自动装箱
书写代码的时候,可以把基本数据类型的数据直接赋值给对应包装类类型的变量中
Integer i1 = 100;
System.out.println(i1);
Double d = 22.11;
System.out.println(d);
自动拆箱
书写代码时,可以把包装类对象直接赋值对应的基本数据类型的变量
Integer i1 = 100;
Double d = 22.11;
int a = i1;
double b = d;
System.out.println(a);
System.out.println(b);
总结:包装类型对象和对应基本类型变量可以直接互转
二、Math类及其常用方法
(一)Math类及其常用方法
1.Math类的概述
Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数
2.Math的构造方法是私有的。
3.通过查看Math类源码,发现唯一一个构造方法也私有化了,注释:不想让任何人使用该类创建对象
4.Math对外没有提供构造方法,意味着不能创建Math对象,这个类中提供的方法,全部都是静态的方法,提供属性也都是静态的属性,都可以通过类名访问,以后管这种类成为工具类。
5.Math类及其常用方法
代码实例:
public class Demo01 {
public static void main(String[] args) {
//绝对值
int a = Math.abs(-100);
System.out.println(a);
System.out.println(Math.abs(-3.14));
//开立方根
double b = Math.cbrt(8);
System.out.println(b);
System.out.println(Math.cbrt(-8));
//开平方根,正数
System.out.println(Math.sqrt(9));
//向上取整
System.out.println(Math.ceil(3.1));
//向下取整
System.out.println(Math.floor(3.9));
//求两个数的最大最小值
System.out.println(Math.max(3,5));
System.out.println(Math.min(3,5));
//a的b次方
System.out.println(Math.pow(2,3));
//随机产生一个0.0到0.1之间的数
double d = Math.random();
System.out.println(d);
//四舍五入
System.out.println(Math.round(3.9));
}
}
Math的属性
E:自然对数的底数
PI:圆周率
//Math的常用属性E和PI
System.out.println(Math.E);
System.out.println(Math.PI);
三、System类及其常用方法
1.System类的概述
System类包含一些有用的属性和方法。它不能被实例化。
在System类提供的属性中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速赋值数组的一部分的实用方法。
2.System类的常用属性
3.System类的常用方法
代码示例
public class Demo02 {
public static void main(String[] args) {
//获取标准输入流,默认关联到键盘
Scanner sc = new Scanner(System.in);
//获取标准输出流,默认输出位置:控制台
System.out.println(sc.nextLine());
//获取标准错误流
System.err.println("fdsafdfafadfg");
}
}
public class Demo03 {
public static void main(String[] args) {
//退出jvm方法
for (int i = 0; i < 10000; i++) {
if(i==100){
//退出jvm
System.exit(0);
}else {
System.out.println(i);
}
}
}
}
public class Demo04 {
public static void main(String[] args) {
//可以获取一个功能执行的时间
//开始的时候获取一个时间
long begin = System.currentTimeMillis();
for (int i = 0; i <1000 ; i++) {
System.out.println("我爱学习");
}
//结束的时候获取一个时间
long end = System.currentTimeMillis();
//后者减去前者,得到功能执行的时间
System.out.println(end - begin);
}
}
public class Demo05 {
public static void main(String[] args) {
int[] arr1 = {10,20,30,40,50};
//另外建一个新数组
int[] arr2 = new int[arr1.length];
//复制数组arr1表示要复制的数组,0表示从0索引处开始复制,arr2表示数组复制之后的去向
//0表示从arr2的0索引处开始存储,arr1.length表示要赋值的数组长度
System.arraycopy(arr1,0,arr2,0, arr1.length);
//遍历数组arr2
for (int i = 0; i < arr2.length; i++) {
System.out.println(arr2[i]);
}
}
}
四、Scanner(扫描器)
1.Scanner类的概述:
一个可以录入文本信息,吧文本信息解析为基本类型和字符串的扫描器
2.Scanner的功能
nextXxx():录入基本数据类型数据到内存,除了char之外,所有的基本数据类型都可以接受
Xxx就是对应基本数据类型的名称,比如:录入int整数----nextInt()
next():录入不含空格的字符串(读取的时候遇到空格结束 )
nextLine():录入一整行字符串(以回车符号为标准,遇到回车键符号不读取)
五、大型数据类型
(一)BigInteger类及其常用方法
1.BigInteger概述:
用来处理大于最大值整数类型(long)范围的数据,在java.math包下,使用时要导包
2.BigInteger类及其常用方法
案例:
public class Demo01 {
public static void main(String[] args) {
//99999999999999999999999999999999已经超过了long的取值范围
BigInteger bi1 = new BigInteger("99999999999999999999999999999999");
System.out.println(bi1);
//根据指定的进制,将数据转换
BigInteger bi2 = new BigInteger("111",2);
System.out.println(bi2);
}
}
3.BigInteger类常用方法
案例:
public class Demo02 {
public static void main(String[] args) {
BigInteger b1 = new BigInteger("100");
BigInteger b2 = new BigInteger("-200");
//取绝对值
BigInteger b3 = b1.abs();
BigInteger b4 = b2.abs();
System.out.println(b3);
System.out.println(b4);
//反数
BigInteger b5 = b1.negate();
System.out.println(b5);
}
}
(二)BigDecimal类及其常用方法
1.BigDecimal概述
用来处理大于最大值小数类型double范围的数据,在java.math包下,使用时要导包
2.BigDecimal类及其常用方法
案例:
public class Demo03 {
public static void main(String[] args) {
BigDecimal b1 = new BigDecimal("1.99999999999999999999999999990000");
System.out.println(b1);
}
}
3.BigDecimal的常用方法
案例:
六、时间类
(一)日期Date类型及其常用方法Date
1.Date概述
类Date表示特定的事件瞬间,精确到毫秒。在java.util包下,使用时要导包
2.日期Date类型及其常用方法:
案例:
public class Demo01 {
public static void main(String[] args) {
//当前时间创建一个时间对象
Date d1 = new Date();
System.out.println(d1);
Date d2 = new Date(1000);
//中国在东八区,会自动加8个小时
System.out.println(d2);
System.out.println(d1.getTime());
d1.setTime(1000);
System.out.println(d1);
}
}
3.Date类常用方法