根据程序中的数据在运行过程中是否会发生改变,可以将数据分为常量和变量。
1.常量
常量是程序中不能被改变的量,在Java中用final来定义常量,表示该常量只能够被赋值一次,习惯上要求全部大写。
final double CM_PER_INCH = 2.54; //CM_PER_INCH常量被赋值为2.54
类常量:表示用static final修饰的常量,表示该常量可以在一个类中的多个方法中使用,若其被声明为public,则其他类中的方法也可以使用该类常量。
public class Constants{
public static final double CM_PER_INCH = 2.54;
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);
}
}
const是java中预留的关键字,为以后扩展使用。
2.变量
变量的值可以在程序中多次赋值,一般需要声明变量、初始化变量后才能使用该变量。
1.声明变量
声明变量时,需要先声明变量的数据类型,变量名在数据类型之后,与内存中的某个位置(内存)相对应。变量名的命名规则有:
第一个字符必须是大写字母(A-Z),小写字母(a-z),下划线(_),美元符号($)
第二个及后续字符为上述字符,数字(0-9)
关键字不能作为变量名
2.初始化变量
在声明完变量后,必须要用赋值语句对变量进行显示初始化,否则不能使用。一般情况下,建议在声明变量时就进行初始化,如:
int a = 10;
3.实例变量、类变量和成员变量、局部变量
成员变量:定义在类中但却在方法之外的变量,该变量整个类中都可以访问,有默认初始值,该变量存在与对象的堆内存中。如:
public class Clock{
private int Hour;
private int Minute;
private int Second; //Hour、Minute和Second都为成员变量,也为实例变量,Clock类消失后便会释放其所占内存
public ShowTime(int hour,int minute,int second){ //ShowTime 在Clock类中,可以使用该类的成员变量
this.hour = Hour;
this.minute = Minute;
this.second = Second;
}
}
局部变量:定义在方法或者方法的形参中,该变量只能在定义方法或者定义语句中才能使用,无默认初始值,该变量存在栈内存中。
public void test(){
int temp = 10; //temp为局部变量,只能在test()里面才能用,test()方法完成后便会释放其所占内存
}
实例变量:没有用static修饰的成员变量。
类变量:也称为静态变量,是用static修饰的成员变量,存储在方法区里的静态区,其他类可以通过类名+变量名获取类变量的值。
3.运算符
算数运算符:+、-、*、/、%、++、--。
关系运算符:>, =,<=,==,!=.关系表达式永远是布尔类型。
逻辑运算符:&&,||,!
位运算符:其原理是将操作数转为二进制值,然后对二进制中的每一位进行操作。操作类型有&(按位与),|(按位或)^(按位异或),~(按位非),<>(按位右移),>>>(按位右移补零)。
赋值运算符:=,+=,-=,*=,/=,(%)=,<<=,>>=,&=,|=,^=
条件运算符:判断布尔表达式的值来决定赋值给变量的值。格式为:
variable x =(expression)?value iftrue:value iffalse
类型比较运算符instanceof:检查该对象是否是一个特定类型(类类型或接口类型)。格式为:(Objectreference variable )instanceof(class/interfacetype)
这些类型的优先级为:
括号
()、[]
单目运算符(从右到左)
!、+、~、++、--
算数运算符
*、/、%、+、-、<>、>>>
关系运算符
、>=、instanceof、==、!=
位运算符
&、^、|
逻辑运算符
&&、||
条件运算符
?=
赋值运算符(从右到左)
=、+=、-=、*=、/=、%=、&=、|=、^=