常用api --- BigDecimal 包装类 Integer Arrays
2.6 BigDecimal (应用)
-
作用
可以用来进行精确计算
-
构造方法
方法名 说明 BigDecimal(double val) 参数为double BigDecimal(String val) 参数为String -
import java.math.BigDecimal; public class MyBigDecimalDemo2 { public static void main(String[] args) { BigDecimal bd1 = new BigDecimal(10.0); BigDecimal bd2 = new BigDecimal("0.3"); System.out.println(bd1); System.out.println(bd2); } }
-
常用方法
方法名 说明 public BigDecimal add(另一个BigDecimal对象) 加法 减法 public BigDecimal multiply (另一个BigDecimal对象) 乘法 public BigDecimal divide (另一个BigDecimal对象) 除法 public BigDecimal divide (另一个BigDecimal对象,精确几位,舍入模式) 除法 -
import java.math.BigDecimal; public class MyBigDecimalDemo3 { //如果想要进行精确运算,那么请使用字符串的构造 public static void main(String[] args) { // BigDecimal bd1 = new BigDecimal(0.1); // BigDecimal bd2 = new BigDecimal(0.2); BigDecimal bd1 = new BigDecimal("0.1"); BigDecimal bd2 = new BigDecimal("0.2"); // public BigDecimal add(另一个BigDecimal对象) 加法 BigDecimal add = bd1.add(bd2); System.out.println("和为" + add); //System.out.println(0.1 + 0.2); // public BigDecimal subtract (另一个BigDecimal对象) 减法 BigDecimal subtract = bd1.subtract(bd2); System.out.println("差为" + subtract); // public BigDecimal multiply (另一个BigDecimal对象) 乘法 BigDecimal multiply = bd1.multiply(bd2); System.out.println("积为" + multiply); // public BigDecimal divide (另一个BigDecimal对象) 除法 BigDecimal divide = bd1.divide(bd2); System.out.println("商为"+divide); } }
-
总结
-
BigDecimal是用来进行精确计算的
-
创建BigDecimal的对象,构造方法使用参数类型为字符串的。
-
四则运算中的除法,如果除不尽请使用divide的三个参数的方法。
代码示例:
BigDecimal divide = bd1.divide(参与运算的对象,小数点后精确到多少位,舍入模式);
参数1 ,表示参与运算的BigDecimal 对象。
参数2 ,表示小数点后面精确到多少位
参数3 ,舍入模式
BigDecimal.ROUND_UP 进一法
BigDecimal.ROUND_FLOOR 去尾法
BigDecimal.ROUND_HALF_UP 四舍五入 -
import java.math.BigDecimal; public class MyBigDecimalDemo4 { public static void main(String[] args) { BigDecimal bd1 = new BigDecimal("0.3"); BigDecimal bd2 = new BigDecimal("4"); //0.075 /* BigDecimal divide = bd1.divide(bd2); System.out.println(divide);*/ //参数一:表示参数运算的另一个对象 //参数二:表示小数点后精确到多少位 //参数三:舍入模式 //进一法 BigDecimal.ROUND_UP //去尾法 BigDecimal.ROUND_FLOOR //四舍五入 BigDecimal.ROUND_HALF_UP BigDecimal divide = bd1.divide(bd2, 2, BigDecimal.ROUND_HALF_UP); System.out.println(divide); } }
3.包装类
3.1 基本类型包装类(记忆)
-
基本类型包装类的作用
将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据
常用的操作之一:用于基本数据类型与字符串之间的转换
-
基本类型对应的包装类
基本数据类型 包装类 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean
3.2 Integer类(应用)
-
Integer类概述
包装一个对象中的原始类型 int 的值
public class MyIntegerDemo1 { public static void main(String[] args) { //需求:我要判断一个整数是否在 int 范围内? //Integer System.out.println(Integer.MAX_VALUE); System.out.println(Integer.MIN_VALUE); } }
-
Integer类构造方法
方法名 说明 public Integer(int value) 根据 int 值创建 Integer 对象(过时) public Integer(String s) 根据 String 值创建 Integer 对象(过时) public static Integer valueOf(int i) 返回表示指定的 int 值的 Integer 实例 public static Integer valueOf(String s) 返回一个保存指定值的 Integer 对象 String -
示例代码
public class IntegerDemo {
public static void main(String[] args) {
//public Integer(int value):根据 int 值创建 Integer 对象(过时)
Integer i1 = new Integer(100);
System.out.println(i1);
//public Integer(String s):根据 String 值创建 Integer 对象(过时)
Integer i2 = new Integer("100");
// Integer i2 = new Integer("abc"); //NumberFormatException
System.out.println(i2);
System.out.println("--------");
//public static Integer valueOf(int i):返回表示指定的 int 值的 Integer 实例
Integer i3 = Integer.valueOf(100);
System.out.println(i3);
//public static Integer valueOf(String s):返回一个保存指定值的Integer对象 String
Integer i4 = Integer.valueOf("100");
System.out.println(i4);
}
}
3.3 自动拆箱和自动装箱(理解)
-
自动装箱
把基本数据类型转换为对应的包装类类型
-
自动拆箱
把包装类类型转换为对应的基本数据类型
-
示例代码
Integer i = 100; // 自动装箱
i += 200; // i = i + 200; i + 200 自动拆箱;i = i + 200; 是自动装箱
3.4 int和String类型的相互转换(记忆)
-
int转换为String
-
转换方式
-
方式一:直接在数字后加一个空字符串
-
方式二:通过String类静态方法valueOf()
-
-
示例代码
public class IntegerDemo {
public static void main(String[] args) {
//int --- String
int number = 100;
//方式1
String s1 = number + "";
System.out.println(s1);
//方式2
//public static String valueOf(int i)
String s2 = String.valueOf(number);
System.out.println(s2);
System.out.println("--------");
}
}
-
-
String转换为int
-
转换方式
-
方式一:先将字符串数字转成Integer,再调用valueOf()方法
-
方式二:通过Integer静态方法parseInt()进行转换
-
-
示例代码
public class IntegerDemo {
public static void main(String[] args) {
//String --- int
String s = "100";
//方式1:String --- Integer --- int
Integer i = Integer.valueOf(s);
//public int intValue()
int x = i.intValue();
System.out.println(x);
//方式2
//public static int parseInt(String s)
int y = Integer.parseInt(s);
System.out.println(y);
}
}
-
3.5 字符串数据排序案例(应用)
-
案例需求
有一个字符串:“91 27 46 38 50”,请写程序实现最终输出结果是:27 38 46 50 91
-
代码实现
public class IntegerTest {
public static void main(String[] args) {
//定义一个字符串
String s = "91 27 46 38 50";
//把字符串中的数字数据存储到一个int类型的数组中
String[] strArray = s.split(" ");
// for(int i=0; i<strArray.length; i++) {
// System.out.println(strArray[i]);
// }
//定义一个int数组,把 String[] 数组中的每一个元素存储到 int 数组中
int[] arr = new int[strArray.length];
for(int i=0; i<arr.length; i++) {
arr[i] = Integer.parseInt(strArray[i]);
}
//对 int 数组进行排序
Arrays.sort(arr);
for(int i=0; i<arr.length; i++){
System.out.print(arr[i] + " ");
}
}
5.4 Arrays (应用)
-
方法名 说明 public static String toString(int[] a) 返回指定数组的内容的字符串表示形式 public static void sort(int[] a) 按照数字顺序排列指定的数组 快排 public static int binarySearch(int[] a, int key) 利用二分查找返回指定元素的索引 -
示例代码
public class MyArraysDemo {
public static void main(String[] args) {
// public static String toString(int[] a) 返回指定数组的内容的字符串表示形式
// int [] arr = {3,2,4,6,7};
// System.out.println(Arrays.toString(arr));
// public static void sort(int[] a) 按照数字顺序排列指定的数组
// int [] arr = {3,2,4,6,7};
// Arrays.sort(arr);
// System.out.println(Arrays.toString(arr));
// public static int binarySearch(int[] a, int key) 利用二分查找返回指定元素的索引
int [] arr = {1,2,3,4,5,6,7,8,9,10};
int index = Arrays.binarySearch(arr, 0);
System.out.println(index);
//1,数组必须有序
//2.如果要查找的元素存在,那么返回的是这个元素实际的索引
//3.如果要查找的元素不存在,那么返回的是 (-插入点-1)
//插入点:如果这个元素在数组中,他应该在哪个索引上.
}
}