「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」
这次再来复习一些Java的基础知识,包括变量、部分运算符的知识。
一、变量
在 Java 中,每个变量都有自己的类型(type),变量的类型需要在声明的时候指定,位于变量名之前。每次声明都以分号结束,因为声明也是一条完整的语句。变量的名称必须以字母开头,并且由字母、数字、下划线('_')、('$')组成。(Java 中“字母”和“数字”其实表示范围很广,包括某种语言中表示字母的任何Unicode字符)。并且Java的关键字不能来命名变量,可以在一行声明多个值,但是不提倡,这样会导致程序的可读性降低。
//举几个例子
double salary;
int vacationDays;
int i,j; //声明正确,但是不提倡,可读性低。
1.变量初始化
声明一个变量之后,必须用赋值语句对变量进行显式初始化, 千万不要使用未初始化的变量,否则程序会报错(非运行时异常)。赋值语句需要在声明语句之后,并且尽量靠近靠近声明语句。
int i;
i = 1;
//或者
int i = 1;
1.1常量
在 Java,中用关键字 final 来声明常量,例如
final int STU_SCORE = 100;
关键字 final 表示这个变量只能被赋值一次。一旦被赋值之后,就不能够再更改了。习惯上, 常量名使用全大写,而且尽量做到见名知意。如果我想在类的多个方法里都使用这个常量,可以用static final来声明一个常量,需要注意的是类常量的声明需要在方法的外部,如果需要让其他的类也可以进行访问,需要用public来指明,例如:
public class Demo {
public static final int STU_SCORE = 100;
public static void main(String[] args) {
String name = "XiaoHong";
System.out.println(name + "的成绩是:" + STU_SCORE) ;
}
2.运算符
在Java中,使用算术运算符 + 、-、 * 、/ 表示加、减、 乘、除运算。当参与 / 运算的两个操作数都是整数时,才表示整数除法;否则,就表示为浮点除法。 整数的求余操作也称为取模操作,用%来表示。需要注意的是,整数除以0会产生一个异常(ArithmeticException),浮点数除以0不会报错,但会产生意想不到的结果(Infinity)。
2.1常用数学函数与常量
在Math类中,包含了多种数学函数。在不同的使用场景下,可能需要的函数也不同。比如,要想计算一个数值的平方根,可以使用Math类的sqrt方法:
double x = 4;
double y = Math.sqrt(x);
System.out.println(y); // 输出结果是2.0
在Java中,没有幂运算,如果要计算数值的次幂则需要借助于Math类的pow方法double y = Math.pow(x, a);,y的结果是x的a次幂。pow里面x和a都要求是double类型,且函数的返回值也是double类型。
floorMod方法的目的是解决一个长期存在的有关整数余数的问题。例如:
//如果参数的符号相同,floorMod和%操作符的结果是一样的。
floorMod(4, 3) == 1;
(4 % 3) == 1
//如果参数的符号不同,结果与%运算符不同。
floorMod(+4, -3) == -2;
(+4 % -3) == +1
除此之外,Math类提供了一些常用的三角函数:
Math.sin、Math.cos、Math.tan、Math.atan、Math.atan2
还有指数函数以及它的反函数——自然对数以及以 10 为底的对数:
Math.exp Math.log Math.log10
最后,Java还提供了两个用于表示π和e常量的近似值:Math.PI、Math.E
2.2数值类型之间的转换
在平时通常会有涉及到类型之间的转换,就是将一种数值类型转换为另一种数值类型,但是各个数据类型的表示范围不一样,互相转换难免会有数据精度丢失的问题,以下是数据类型之间的合法转换,实心箭头:表示无信息丢失的转换;虚线箭头:表示可能有精度损失的转换。
两个数值类型的变量进行计算,也会存在数值的转换,并且存在一定的规则:
如果两个操作数中有一个是double类型,另一个操作数就会转换为double类型。
否则,如果其中一个操作数是float类型,另一个操作数将会转换为float 类型。
否则,如果其中一个操作数是long类型,另一个操作数将会转换为long类型。
否则,两个操作数都将被转换为int类型。
除此之外,还有强制类型转换比如double转换为int,在Java中,允许进行这类数值之间的类型转换,但有可能会丢失一些信息,这种情况下就需要强制类型转换,强制类型转换的语法格式是在圆括号中给出想要转换的目标类型,后面紧跟待转换的变量名。例如:
double x = 9.99;
int y = (int)x; //y被赋值为9,强制类型转换通过截断小数部分将浮点型转换为整型。
这种情况差别就很大,如果对浮点数进行四舍五入运算,以便得到最接近的整数就需要使用 Math.round方法:
double x = 9.997;
int y = (int) Math.round(x);//round方法返回的结果为long类型,只有使用显式的强 制类型转换才能够将long类型转换成int类型。
今天先复习这些,还请各位大佬指正!