Java里面会用到很多运算符,例如:+、-、*、/等。
/运算符用于计算除法。整型直接相除会得到一个整型,余数直接舍去了:15/2 = 7;如果想要得到余数,用%运算符15%2=1;如果/两边至少有一个是浮点型,那么计算结果也是浮点型,就会有小数啦:15.0/2 = 7.5。
整型除以0会爆出一个异常;浮点数除以0会得到NaN或者无穷大。
注意:在使用staticfp关键字声明的方法中,该方法内部的运算会采用严格浮点进行计算,就是比较精确而已。如果声明了一个类,则这个类内部所有的方法计算都采用严格浮点进行计算。
public static staticfp void main(String[] args)不知道为什么不介绍=这个操作符。=学名叫赋值,实际上是,左边的变量指向右边的运算结果。
Math类包含大量的数学函数方法,你肯定会用到的。例如:
double x = 4; double y = Math.sqrt(x);//开方计算 System.out.println(t);//会输出 2.0 //下面方法只加了括号,具体参数没有写,还是比较多的 Math.sqrt() //计算开方 Math.pow() //指数运算 Math.floorMod() //取余数,适用于24小时、月份这种除法,用负的被除数也可以算出正确的余数,而不是负余数 Math.sin()//正弦函数 Math.cos()//余弦函数 Math.tan()//正切函数 Math.atan()//反正切函数 Math.atan2()//反正切函数,输入坐标计算 Math.exp()//指数函数,e为底 Math.log()//对数函数,e为底 Math.log10()//对数函数,10为底 Math.random()//随机函数,返回一个[0,1)之间的随机浮点数 Math.PI//常量,圆周率 Math.E//常量,自然常数e注意:Math类属于系统提供的类,但是需要引入import才能使用,所以在类名前一行应该加入下面引入语法才能使用Math类。
import java.lang.Math;//这是一种 import java.long.Math.*;//这是另外一种,属于静态导入,在用的时候,就可以省略Math.注意:Math类使用的是尽可能快的运算方法,也就可能在其他平台系统上会得到不一样的速度和精度。如果你想让所有平台都得到一样的运算结果(包括精度)而不在意速度问题的话,应该采用StrictMath类进行运算。
不可避免的,我们需要在不同数值类型间进行转换。下图显示的是直接转换的情况: 图中,实线表明这种类型之间的转换,不会损失精度,虚线表示会损失精度。 例如:
int n = 123456789; float f = n;//f = 1.23456792E8注意:Java会默认对计算结果使用较高精度的那个结果
有double类型会得到一个double结果。没有double类型,但是有float类型会得到float结果。没有浮点型,有long类型则会得到一个long结果。就照上面情况类似啦,其实强类型语言的好处就是,上面这类的运算结果IDE一般会给你提醒,如果你用错的话。如果你明确的可以接受精度损失,就必须进行强制类型转换,来告诉Java你就是要转换类型。 比如:如果你想得到1~12之间的随机整数,但是Math.random()函数会得到一个随机的[0,1)之间的浮点数,那么只好这样进行运算了:
double r1 = Math.random() * (13 - 1);//得到[0,12)之间的随机浮点数 double r2 = r1 + 1;//加上基数1,变成[1,13)之间的随机浮点数 int randomNumber = (int)r2;//截断小数部分,只去整数部分化作整型,则是[1,12]之间的随机整数了在上面的例子中,把一个double类型的变量r2强制转换成为了int类型,失去了原本的小数部分,语法是前面加上(),括号里面写上你要转换的类型。 注意:如果你的强制转换超过了目标类型的范围,就会出错了。各种错误啊。
注意:使用合并的运算符,得关注两边的类型问题,用不好可能出错哈。
自增运算符
x = x + 1;//一般写法 x++;//简化写法1 ++x;//简化写法2自减运算符
x = x - 1;//一般写法 x--;//简化写法1 --x;//简化写法1注意:自增和自减运算符本身也可加入到别的计算式中,例如:
y = x++ * 5;等同于
int z = x; x = x + 1; y = z * 5;而
y = ++x * 5;等同于
x = x + 1; y = x * 5;规则是:++x会把加1后的结果代入计算,x++也会自增1,不过代入计算的是之前的x。自减运算符类似。
注意:上述符号应该都是英文状态下的输入,上面表格里面不全是哦,因为这个文档的问题,我不能输入正确的,天坑。
在实际应用过程中,只要你想让某个运算先算,直接加上小括号就是了,不用记这些运算优先级的。
Java里面有一个和class同等级的叫做枚举enum。 也可以说枚举是特别的类。
enum Size { SMALL, MEDIUM, LARGE, EXTRA_LARGE }这样使用:
Size s = Size.MEDIUM;为什么要用枚举?因为某些情况下,我们定义变量会变的,万一用错了,很麻烦的,所以像这类表示有限个状态的情况下,可以定义枚举类区分状态。