变量
在Java中,每个变量都有一个类型。在声明变量时,变量的类型在变量名之前,例如:
double salary;
int vacationDays;
long earthPopulation;
boolean flag;
(一)变量命名规则
1.变量由字母,数字,_,$组成。
2.变量必须由字母开头。
3.不能使用保留字。
4.Java大小写敏感。
(二)变量的初始化
声明了一个变量后,必须用赋值语句对变量进行显示初始化。千万不要使用未初始化的变量。
建议:变量的声明尽可能靠近第一次使用的地方,这是一种良好的程序编写风格。
例如:
double salary=6500.00
System.out.println(salary);
(三)常量
在Java中,常量使用final修饰,被final修饰的变量,不可改变;且常量名使用全大写。
public class Constants {
public static void main(String[] args) {
final double CM_PER_INCH = 2.54;
double paperWidth = 8.5;
double paperHeight = 11;
System.out.println("Paper size in centimeters:"+paperWidth*CM_PER_INCH+"by"
+paperHeight*CM_PER_INCH);
}
}
同时,我们经常希望某个常量可以在一个类中的多个方法中使用,
通常将这些常量叫做类常量。类常量使用static final修饰。
public class Constants2 {
public static final double CM_PER_INCH=2.54;//类常量通常定义在main方法外部
public static void main(String[] args) {
double paperWidth = 8.5;
double paperHeight = 11;
System.out.println("Paper size in centimeters:"+paperWidth*CM_PER_INCH+"by"
+paperHeight*CM_PER_INCH);
}
}
运算符
在Java中运算符有+,-,*,/,%。
(一)数学函数与常量
在Java中,有一个Math类,里面包含了各种各样的数学函数。
例如要计算一个数的平方根和4的2次幂的运算:
同样的,Math类还提供了一些常用的三角函数,指数函数,反函数等方法。
(二)数值之间的类型转换
数值之间的转换由小到大自动转换,如上图,实线部分自动转换,无精度丢失;虚线箭头表示可以转换,但是可能会丢失精度。
(三)强制类型转换
强制类型转换时由大到小转换,可能会丢失精度。强制类型转换的语法格式是圆括号中给出想要转换的目标类型,后面紧跟待转换的变量。例如:
double x = 9.997;
int nx = (int)x;//nx=9,丢失精度
想对浮点数进行舍入运算,以便得到最接近的整数,可以使用Math类的round方法。
double x = 9.997;
int nx = (int) Math.round(x);//四舍五入得到nx的结果是10
警告:强制类型转换需要注意,如果强制转换超过了该类型的范围,结果会得到一个完全不同的值。(byte)300得到的实际值是44。
(四)结合赋值和运算符
可以在赋值语句中使用二元运算符,例如:+=,*=或%=;
注意:如果运算符得到一个值,其类型与左侧操作数的类型不同时,会发生强制类型转换,就意味着会丢失精度。
public class CastTest {
public static void main(String[] args) {
int x=4;
x+=3.5;
System.out.println("x="+x);//x=7,3.5是double类型的值,
//与int类型运算,最后的值应该是(int)(x+3.5)
}
}
(五)自增与自减运算符
在Java中,也提供了自增,自减的运算符;自增,自减运算符在变量前和变量后也有区别。
public class IncrementTest {
public static void main(String[] args) {
int n=12;
System.out.println("n="+(n++));//n=12 ++在后,延迟自增,先参与运算再自增
System.out.println("n="+n);//n=13,此时经过延迟后,变量n已经+1
int m=12;
System.out.println("m="+(++m));//m=13 ++再前,先自增,再参与运算
}
}
(六)关系和boolean运算符
在Java中有丰富的关系运算符,>,<,==,>=,<=,!=;
还有逻辑运算符:&&(短路与),||(短路或)。
短路与:
expression1&&expression2;//如果第一个表达式为false,那么不用计算第二个表达式
短路或:
expression1||expression2;//如果第一个表达式的值为true,那么也不用计算第二个表达式
三目运算符:
condition?expression1:expression2;//如果条件为真,则为第一个表达式的值,如果条件为假,则为第二个表达式的值。
(七)枚举类型
有时候,变量的取值只在一个有限的集合内,例如服装的尺码只有S,M,L,X四个号码。针对这种情况,可以使用自定义枚举类型。
enum Size {SMALL,MEDIUM,LARGE,EXTRA_LARGE};
//现在就可以声明这种类型的变量
Size s = Size.MEDIUM;(变量s只能存储这个类型声明中给定的某个枚举值,或者null,null表示这个变量没有设置任何值。)