爱收集资源网

java基础知识:java运算类(记忆)(一)

网络整理 2022-04-13 11:00

核心概述:本文将继续学习常用API,包括一些基本数学运算的工具类Math、任意精度整数BigInteger类、大浮点数据BigDecimal;另外,在程序开发的过程中,我们经常会出现各种异常现象,所以在本文中我们也将学习java中异常的识别和处理。

第 1 章:数学课

1.1-概述(明白)

java.lang.Math 类包含用于执行基本数学运算(例如基本绝对值、舍入等)的方法。像这样的一个工具类,它的所有方法都是静态方法,并且不创建对象,调用起来很简单。

1.2-常用方法(内存)

方法

代码

公共静态无效主要(字符串[]参数){

System.out.println(Math.abs(-100)); // 100

System.out.println(Math.ceil(10.1)); // 11.0

System.out.println(Math.floor(10.1)); // 10.0

}

第 2 章:BigInteger 类

2.1-概述(明白)

java.math.BigInteger 类,不可变的任意精度整数。如果操作中数据的范围超过了long类型,可以使用BigInteger类来实现。该类的计算整数不限长。

2.2-构造方法(内存)

BigInteger(String value) 将 BigInteger 的十进制字符串表示形式转换为 BigInteger。超出了long类型的范围,就不能再叫数字了,所以构造方法用字符串的形式来表示超大整数,把超大整数封装成BigInteger对象。

2.3-常用方法(内存)

方法

代码

公共静态无效主要(字符串[]参数){

BigInteger big1 = new BigInteger("987654321123456789000");

BigInteger big2 = new BigInteger("123456789987654321");

//加法运算

BigInteger add = big1.add(big2);

System.out.println("求和:"+add);

//减法运算

BigInteger sub = big1.subtract(big2);

System.out.println("区别:"+sub);

//乘法运算

BigInteger mul = big1.multiply(big2);

System.out.println("产品:"+mul);

// 除法运算

BigInteger div = big1.divide(big2);

System.out.println("分区:"+div);

}

第 3 章:BigDecimal 类

3.1-概述(明白)

java.math.BigDecimal 类,一个不可变的、任意精度的有符号十进制数。这个类可以实现对非常大的浮点数据的精确操作。

3.2-构造方法(内存)

BigDecimal(String value) 将 BigDecimal 的十进制字符串表示形式转换为 BigDecimal。

3.3-常用方法(内存)

方法

分法

BigDecimal 除数(BigDecimal divisor,int scale,int roundingMode)

潜水员:这个 BigDecimal 要除以的值。

scale:要保留的位数

roundingMode:舍入模式

取整方法:BigDecimal 类提供静态成员变量来表示取整方法

BigDecimal.ROUND_UP 以 1 递增。

BigDecimal.ROUND_DOWN 直接四舍五入。

BigDecimal.ROUND_HALF_UP 向上取整。

代码

公共静态无效主要(字符串[]参数){

BigDecimal big1 = new BigDecimal("5.25");

BigDecimal big2 = new BigDecimal("3.25");

//加法计算

BigDecimal add = big1.add(big2);

System.out.println("求和:"+add);

//减法计算

BigDecimal sub = big1.subtract(big2);

System.out.println("区别:"+sub);

//乘法计算

BigDecimal mul = big1.multiply(big2);

System.out.println("乘法:"+mul);

// 除法计算

BigDecimal div = big1.divide(big2,2,BigDecimal.ROUND_HALF_UP);

System.out.println(div);

}

第 4 章:基本类型包装类

4.1-概述(明白)

Java 提供了两种类型系统,基本类型和引用类型。使用基本类型是为了提高效率。但是,在很多情况下,对象会被创建和使用,因为对象可以做更多的功能。如果我们想让我们的基本类型像对象一样操作,可以使用基本类型对应的包装类,如下:

4.2-整数类(明白)

概述

在对象中包装原始类型 int 的值。其构造函数和静态方法如下:

代码

公共静态无效主要(字符串[]参数){

//public Integer(int value):根据int值创建一个Integer对象(已废弃)

整数 i1 = 新整数(100);

System.out.println(i1);

//public Integer(String s):根据String值创建一个Integer对象(已废弃)

整数 i2 = 新整数(“100”);

//整数 i2 = new Integer("abc"); //NumberFormatException

System.out.println(i2);

System.out.println("-------");

//public static Integer valueOf(int i):返回一个表示指定int值的Integer实例

整数 i3 = Integer.valueOf(100);

System.out.println(i3);

//public static Integer valueOf(String s):返回一个保存指定值的Integer对象String

整数 i4 = Integer.valueOf("100");

System.out.println(i4);

}

4.3-装箱和拆箱(理解)

在基本类型和对应的包装类对象之间来回转换的过程称为“装箱”和“拆箱”:

装箱:从原始类型转换为相应的包装类对象。

拆箱:从包装类对象转换为相应的原始类型。

以Integer和int为例:(看懂代码就好)

基本值---->包装对象

Integer i = new Integer(4);//使用构造函数

Integer iii = Integer.valueOf(4);//使用包装类中的valueOf方法

包装对象---->基本价值

int num = i.intValue();

4.4-自动装箱和拆箱(理解)

由于我们经常做基本类型和包装类之间的转换,从Java 5(JDK 1.5)开始声明异常的关键字是,基本类型和包装类的装箱和拆箱动作都可以自动完成。例如:

Integer i = 4;//自动装箱。等价于整数 i = Integer.valueOf(4);

i = i + 5;//等号右边:​​将i对象转换为基本值(自动拆箱) i.intValue() + 5;

//加法操作完成后,再次装箱,将基础值转化为对象。

4.5-基本类型和字符串转换(内存)

基本类型转字符串

转换方法:

方法一:在数字后面直接加一个空字符串

方法二:通过String类静态方法valueOf()

示例代码:

公共静态无效主要(字符串[]参数){

//int --- 字符串

整数 = 100;

//方式1

字符串 s1 = 数字 + "";

System.out.println(s1);

//方式2

//public static String valueOf(int i)

字符串 s2 = String.valueOf(number);

System.out.println(s2);

}

字符串转基本类型

除 Character 类外,所有其他包装类都有 parseXxx 静态方法,可将字符串参数转换为相应的原始类型:

public static byte parseByte(String s):将字符串参数转换为对应的字节基本类型。

public static short parseShort(String s):将字符串参数转换为对应的short基本类型。

public static int parseInt(String s):将字符串参数转换为对应的int基元类型。

public static long parseLong(String s):将字符串参数转换为对应的long基本类型。

public static float parseFloat(String s):将字符串参数转换为对应的float基元类型。

public static double parseDouble(String s):将字符串参数转换为对应的double基本类型。

public static boolean parseBoolean(String s):将字符串参数转换为对应的布尔基元类型。

代码:(以Integer为例)

公共类 Demo18WrapperParse {

公共静态无效主要(字符串[]参数){

int num = Integer.parseInt("100");

}

}

第 5 章:识别异常

5.1- 什么是异常(了解)

异常意味着异常。生活中:医生说你身体的某个部位出现了异常,这个部位和正常的有点不一样,这个部位的功能就会受到影响。在程序中声明异常的关键字是,它的意思是:

Exception:指程序执行过程中出现的异常情况,最终会导致JVM异常停止。(由于程序问题导致程序执行中断的现象。)

在Java等面向对象的编程语言中,异常本身就是一个类,产生异常就是创建异常对象并抛出异常对象。Java 处理异常的方式是中断处理。

需要注意的是,异常并不是指语法错误。如果语法错误,编译失败,不会生成字节码文件,根本无法运行。

5.2-系统异常(了解)

在Java中,为了维持程序的正常执行,Java提供了一种异常机制(异常类)来处理异常。

在Java提供的异常机制中,java.lang.Throwable是根类,根类的派生类有两个子类java.lang.Error和java.lang.Excepiton。

错误,错误(绝症,如:“癌症”),这类异常在程序中是无法处理的,只能尽量避免。

Excepiton,编译时异常(写源码时)(小bug,如:类似感冒),这类异常可以在程序中处理。Excepiton 类型还有一个 RunTimeException 的子类,它表示运行时异常(程序运行期间),这种类型的异常也可以在程序中进行处理。

为了更好地区分上述异常分类,我们查看以下过程。

// [错误异常]

// 线程“main”中的异常 java.lang.OutOfMemoryError: Java heap space

// 内存不足。已超出分配给 JVM 的内存量。

// 这个程序只能修改源代码来解决问题。

int[]nums = 新的 int[1024*1024*1024];

// [例外]

SimpleDateFormat 格式 = new SimpleDateFormat("yyyy-MM-dd");

// 未处理的异常:java.text.ParseException

// 这里写源码的时候出现异常,后面可以通过相关的处理机制来处理和避免异常

日期日期 = format.parse("2083-10-10");

// [运行时间异常]

int[] 数字 = {1,2,3};

// 线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException

// 程序运行时出现异常,数组下标超出。异常可由相关异常机制处理

System.out.println(nums[4]);

5.3-异常产生的过程(理解)

在编程中,为了更好地处理异常,首先要了解异常的产生过程。下面是一个异常代码的分析。

要求和代码

// 要求:定义方法获取指定数组指定位置的元素

公共静态无效主要(字符串[]参数){

int[]nums = {1,2,3};

System.out.println(getElement(nums,4));

}

公共静态 int getElement(int[]arr,int index){

返回 arr[索引];

}

分析

在执行getElement方法的过程中,JVM检测到数组索引越界异常。这个时候,JVM会做两件事:

创建包含异常信息(内容、原因、位置)的 ArrayIndexOutOfBoundsException 异常对象

因为getElment方法中没有异常处理,JVM会将异常对象抛给调用getElment方法的main方法。

main方法接收到ArrayIndexOutOfBoundsException异常对象,不处理异常,将异常对象抛给JVM

JVM接收到main方法后,做了两件事:

将异常信息(内容、原因、位置)打印到控制台

终止程序的执行

图表

第 6 章:处理异常

6.1-异常关键字(内存)

尝试

抓住

最后

投掷

6.2 - 抛出异常抛出(明白)

概述

在编写程序时,我们必须考虑程序出错的情况。例如,在定义一个方法时,该方法需要接受参数。那么,调用方法在使用接收到的参数时,首先需要对参数数据进行合法的判断。如果数据不合法,它应该告诉调用者并将合法的数据传入。这种情况下,需要通过抛出异常来通知调用者。

在java中,提供了一个throw关键字,用于抛出一个指定的异常对象。那么,抛出异常究竟有什么作用呢?

创建一个异常对象。封装一些提示信息(信息可以自己写)。

需要将此异常对象通知给调用者。怎么讲?如何将此异常对象传递给调用者?这可以通过关键字 throw 来完成。

Throw 用于方法中抛出异常对象,将异常对象传递给调用者,结束当前方法的执行。

使用格式

抛出新的异常类名(参数);

代码演示

公共静态无效主要(字符串[]参数){

//创建一个数组

int[] arr = {2,4,52,2};

// 根据索引找到对应的元素

整数索引 = 4;

int element = getElement(arr, index);

System.out.println(元素);

System.out.println("over");

}

/*

* 根据索引查找数组中对应的元素

*/

公共静态 int getElement(int[] arr,int index){

//判断索引是否超出范围

if(indexarr.length-1){

/*

如果满足判断条件,则在执行后抛出异常对象后,该方法就不能再继续操作。

至此,当前方法的执行结束,并通知调用者异常。这时候就需要通过异常来解决。

*/

throw new ArrayIndexOutOfBoundsException("老兄,角标越界了~~~");

}

int 元素 = arr[索引];

返回元素;

}

注意:如果有问题,我们会抛出问题描述类,即异常,即将问题返回给方法的调用者。

那么调用者应该怎么做呢?一是抓捕处理,二是继续讲问题语句,使用throws语句处理。

6.3 - 声明异常抛出(了解)

string bigdecimal main函数