变量和运算符
一、变量
计算机分配的一块存储空间,可以赋值和取值。
1、变量的分类
(1)成员变量
直接声明在类结构体中,可以在方法上也可以在方法下。当主方法使用static修饰,使用需要使用的成员变量也需要static修饰。(否则报错:无法从静态上下文引用非静态变量)
如果没有赋值系统会分配默认值:
整数 0
小数 0.0
字符 空
引用 null
布尔 false
作用域:可以在整个类中使用,切使用的变量必须先进行声明
(2)局部变量
声明在方法内部和代码块中,使用前必须赋值,不存在默认值。
作用域:在方法和代码块的{ }中使用
二、运算符
1、算术运算符
(1)算术运算符
+、-、*(乘)、/(除)、%(取模)
2、自增自减
只能用于变量不能够用于常量 ,优先级高于算术运算符
(1)自增(++)
int i=1 int j=1
i++ 和++j 都是一个表达式,他们表达的值是不一样的。第一次自增的时候,i=1,i++这个表达式的值为1,++j的值为2。这就是两者的区别。自增完成后 i本身的值都变成了2。
int k=i++; // i++的值为1,k=1
int m=++j; //++j的值为2,m=2
(2)自减(——)
同理自增。i—和—i两个表达式的值不一样。
3、赋值运算符
=、+=、-=、*=、/=、%= 共五个 (将+=这种形式看成一个整体)
(1)赋值运算
int a=1;
a += 2;相当于把2累加到a,可以理解为a=a+2;但是两者并不等价。
short a=2;
a += 2;//不报错,因为存在隐式转换
而a = a+2; a为short 、2为int。a+2的结果自动转化为int ,导致int转换为short有精度损失而报错。
4、比较运算符
==、!=、>、<、>=、<=、instenceof
(1)比较运算符的结果为boolean类型的值(false、true)
(2)instenceof 用于判断一个对象是否属于某一类型。
5、逻辑运算符
&、|、&&(双与)、||(双或)、^(异或)、!(非)
(1)规则
^(异或)两边不一样,结果为true。
!布尔型取反。
(2)双与双或
双与双或最大的特点是具有短路功能:
(逻辑表达式1)&&(逻辑表达式2)(单与、或会判断两边的表达式)
当在判断逻辑表达式1的时候判断出结果为false的时候,就已经可以判断出整个表达式的值为false,就没有必要执行逻辑表达式2,完成短路。
双或同理:判断出左边的表达式为true时,整个表达式的值为true,不执行右边的语句。
(3)注意事项
表达0~100之间:a>0&&a<100 0<a<100(错误)式
6、位运算符
&、|、^(按位异或)、~(按位取反)、>>(右移)、<<(左移)、>>>(无符号右移)
7、三目运算符
X?Y:Z
(1)规则
X是一个boolean的值或者结果为boolean的表达式。
Y、Z是数据类型相同的值或者表达式。
当X的值为true是执行Y,为false的时候执行Z。