基本数据类型的包装类
基本数据类型如int、float、double、boolean、char等是不具备对象的特征,比如:不能调用方法,功能比较简单。为了让基本数据类型具有对象的特征,Java为每个基本数据类型都提供了一个包装类,这样就具备了对象的特征。
将字符串转为基本类型的方法
通用格式:包装类.parseXxxx(String str)
int a=Integer.parseInt("123456"); System.out.println(a+1);
将基本类型转换为字符串
1、String a=基本数据类型+"";
2、调用String的valueOf(基本数据类型)方法
3、调用包装类中的toString(基本数据类型)方法
int a = 2; String b = a+""; System.out.println(b + 1); String c = String.valueOf(a); System.out.println(c + 1); String d = Integer.toString(a); System.out.println(d + 1);
基本数据类型和对应的包装类对象之间的转换
基本数值------->包装类的方式 装箱操作
1、构造方法(基本数据类型)
2、包装类.valueOf(基本数据类型)方法
Integer i = new Integer(3); //装箱操作 手动的 System.out.println(i + 1); Integer ii = new Integer("3"); // 必须传入数字字符串,才能自动转为int类型的 装箱操作 手动的 System.out.println(ii + 1); Integer i2 = Integer.valueOf(3); //装箱操作 手动的 Integer ii2 = Integer.valueOf("3"); //装箱操作 手动的
包装类------>基本数据类型 拆箱操作
包装类对象.xxValue(); 返回一个基本数据类型
int a = i.intValue(); //拆箱操作 手动的 System.out.println(a); Integer i = 4; // 自动装箱 基本数据--->包装类 int a = i + 5; // 自动拆箱 包装类---->基本数据 System.out.println(a);
自动装箱与拆箱
基本类型可以使用运算符直接进行计算,但是引用类型不可以。而基本类型包装类作为引用类型的一种却可以计算,
原因在于,Java”偷偷地”自动地进行了对象向基本数据类型的转换。
相对应的,引用数据类型变量的值必须是new出来的内存空间地址值,而我们可以将一个基本类型的值赋值给一个基本类型包装类的引用。
原因同样在于Java又”偷偷地”自动地进行了基本数据类型向对象的转换。
自动拆箱:对象转成基本数值
自动装箱:基本数值转成对象
自动装箱(byte常量池)细节的演示
当数值在byte范围之内时,进行自动装箱,不会新创建对象空间而是使用原来已有的空间。
Integer i1 = new Integer(100); //手动装箱 Integer i2 = new Integer(100); System.out.println(i1 == i2); //false System.out.println(i1.equals(i2)); //true System.out.println("-------------------"); //再byte(-128-127)范围内,你创建新的引用的时候如果值相同会指向同一个地址。 Integer x = 124; //自动装箱 Integer y = 124; System.out.println(x == y); //true System.out.println(x.equals(y)); //true
System类
System类不能手动创建对象,因为构造方法被private修饰,阻止外界创建对象。System类中的都是static方法,类名访问即可
常用方法
Math类
Math类是一个工具类,使用的时候直接用类名.方法名就行
常用方法
Arrays类
Arrays类中包括操作数组的一些方法,例如排序、搜索
常用的方法
sort方法,用来对指定数组中的元素进行排序(元素值从小到大进行排序)
toString方法,用来返回指定数组元素内容的字符串形式
binarySearch方法,在指定数组中,查找给定元素值出现的位置。若没有查询到,返回位置为-1。要求该数组必须是个有序的数组。
定义一个方法,接收一个数组,数组中存储10个学生考试分数,该方法要求返回考试分数最低的后三名考试分数。 package com.oracle.demo1; import java.util.Arrays; public class demo7 { public static void main(String[] args) { int[] score = { 64, 76, 98, 12, 23, 43, 34, 56, 78, 90 }; int[] b = print(score); System.out.println(Arrays.toString(b)); } public static int[] print(int[] arr) { Arrays.sort(arr); // 从小到大进行排序 int[] a = new int[3]; System.arraycopy(arr,0,a,0,3);// 将分数最低的前三位复制到新数组a中 return a; } }
大数据运算
BigInteger
在Java中把超过long型的整数不称为整数,它们被封装为BigInteger对象。在BigInteger类中,实现四则运算都是靠方法去实现的,而不是采用运算符。
BigInteger的构造方法
四则运算代码
public static void main(String[] args) { //大数据封装为BigInteger对象 BigInteger big1 = new BigInteger("12345678909876543210"); BigInteger big2 = new BigInteger("98765432101234567890"); //add实现加法运算 BigInteger bigAdd = big1.add(big2); //subtract实现减法运算 BigInteger bigSub = big1.subtract(big2); //multiply实现乘法运算 BigInteger bigMul = big1.multiply(big2); //divide实现除法运算 BigInteger bigDiv = big2.divide(big1); }
BigDecimal类
float和double类型做运算时,很容易造成精度的损失。此时就用到BigDecimal类来计算提高计算精度
构造方法
public static void main(String[] args) { //大数据封装为BigDecimal对象 BigDecimal big1 = new BigDecimal("0.09"); BigDecimal big2 = new BigDecimal("0.01"); //add实现加法运算 BigDecimal bigAdd = big1.add(big2); BigDecimal big3 = new BigDecimal("1.0"); BigDecimal big4 = new BigDecimal("0.32"); //subtract实现减法运算 BigDecimal bigSub = big3.subtract(big4); BigDecimal big5 = new BigDecimal("1.105"); BigDecimal big6 = new BigDecimal("100"); //multiply实现乘法运算 BigDecimal bigMul = big5.multiply(big6);
对于浮点数据的除法运算,和整数不同,可能出现无限不循环小数,因此需要对所需要的位数进行保留和选择舍入模式