2021-2-28数学函数数值类型转换运算符复习

在Math类中,包含了各种各样的数学函数,在编写不同的程序时,会需要不同的函数,比如说当我们需要求一个数值的平方根时,可以用sqrt方法(静态方法,处理的不是对象)。
由于Java中没有幂运算,因此需要借助Math类中的pow方法。
代码片段

		double x = 4;
		double y = Math.sqrt(x);
		//将y的值设置为x的2次幂
		double z = Math.pow(x, 2);
		System.out.println(y+"和"+z);

pow方法有两个double类型的参数,其结果返回也为double。
floorMod方法解决有关整数余数问题。通常情况下,当n%2时,如若n为偶数,则表达式为0,如果n为奇数,则表达式为1,当n为负数时,就很难处理。如果我们采用floorMod就会避免大多数问题。
当我们需要计算时钟位置,需要将时间定在0-11之间的数,那么floorMod就会很好的解决这个问题。
代码片段

		int position = -12;
		int adjustment = -1;
		int a = Math.floorMod(position+adjustment, 12);
		System.out.println(a);//输出为11

当我们需要大量的数学运算我们就不必将Math添加在每一个数学方法名,或者常量名前,我们只需要在源文件的顶部加上下面这行代码即可。

import static java.lang.Math.*;

数值类型之间的转换
我们经常需要将一种数值类型转换为另一种数值类型,如下表所示(无信息丢失):

byte
short
int
char
long
double
float

转换可能有精度损失如下所示:

int
float
long
double

当我们想要int类型强制转换为float类型时:

	int a = 123456789;
	float b = a;
	System.out.println(b);//输出为1.23456792E8

如果两个操作数有一个是double类型时,另一个操作数就会转换为double;否则如果其中一个操作数是float类型,另一个操作数就会转换为float;
否则如果其中一个操作数是long类型,另一个操作数就会转换为long;
否则两个操作数都会被转换为int类型。

强制类型转换
在必要的时候,int类型的值会强制转换为double类型,但有时我们会需要将double类型转换为int,此时我们就需要强制类型转换。

	double a = 3.1415926;
	int b = (int)a;
	System.out.println(b);//输出为3

如果想要对结果进行舍入计算,那么就可以使用Math.round方法

	double a = 3.5415926;
	int b = (int)round(a);//因为在源文件顶部添加了import static java.lang.Math.*;所以不需再次书写Math类
	System.out.println(b);//输出结果为4

需要注意的是在将一个数值从一个类型强制转换为另一个类型时,需要注意转换后的类型的范围是否在范围内,否则会出现完全不同的结果。如:(byte)300=44。以及布尔类型不要与任何数值进行强制类型转换。

运算符
自加和自减:前缀在计算时会先+1,后缀在计算时会先使用原来量。最好不要在表达式中使用++,否则可能会带来未知bug。
&&好||运算符的求值方式为:如果第一个操作数已经能够确定表达式的值,第二个操作数就不比计算了。
如果用&&合并两个表达式,如:a&&b,如果a=false那么 a&&b注定为false,
如果用||合并两个表达式,如:a||b如果a=true那么a||b则为true,就不必进行下面的计算。
最后Java支持三元操作符?和:
当条件为true时,a<b?a:b 就会返回a和b中比较小的一个。
枚举类型
有时变量的取值在一个有限集合内。比如服装的尺码:S,M,L,XL。这几种尺寸,如果将这些尺寸编码为1,2,3,4,那么变量中很可能保存一个错误的值,比如0或者m。为了避免这种问题的出现,我们可以自定义枚举类型。
enum Size{SMALL,MEDIUM,LARGE}
此时我们就可以声明这种类型的变量:

Size s = Size.MEDIUM

Size类型的变量只能存储这个类型声明中给定的枚举值,或者null值。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值