变量
声明
类型 名称;
int a;
boolean b = true;
命名规范
- a-z,A-Z,_,数字,$
- 大小写敏感
- Unicode字符
- 数字不能放开头
- 不能包含空格,+
- 不能把Java保留字作为变量名
通过Character类
isJavaIdentifierStart
和isJavaIdentifierPart
方法来检查是否可作为变量名
尽量不使用$
初始化
使用未初始化变量会报错(包括对象,至少赋值null)
=
为赋值,值放右边,变量放左边,代表把值赋给变量
可以在声明后赋值,final
类型也是如此
Java不区分声明和赋值,因此
final
可以在声明后赋值
int a = 1;
String b;
b = null;
final - 常量
变量名推荐全大写,因Java不区分声明和赋值,可以在声明后再赋值。
const
- 未使用保留字
其它语言的声明常量关键字,Java
为final
运算符
优先级
运算符 | 结合性 |
---|---|
[],() | 左->右 |
!,~,++,–,+,-,强制类型转换,new | 右->左 |
*,/,% | 左->右 |
+,-(加减) | 左->右 |
<<,>>,>>> | 左->右 |
<,<=,>,>=,instanceof | 左->右 |
==,!= | 左->右 |
& | 左->右 |
^ | 左->右 |
| | 左->右 |
&& | 左->右 |
|| | 左->右 |
?: | 右->左 |
=,+=,-=,*=,/=,%=,&=,|=,^=,~=,<<=,>>=,>>>= | 右->左 |
算数运算符
运算符 | 描述 |
---|---|
+ | |
- | |
* | |
/ | |
% | 取余,仅整数 |
& | 二进制按位与 |
| | 二进制按位或 |
^ | 二进制按位异或 |
~ | 二进制按位非 |
整数除0,报异常。浮点数除零,无穷大或NaN
运算涉及数值类型转换
自增自减运算符
运算符 | 描述 |
---|---|
++ | 自增1 |
– | 自减1 |
自增减运算符,若将符号放在变量前先使用后改变,放后面…
运算符只能对变量使用
赋值运算符
运算符 | 描述 |
---|---|
= | 将右边的值赋给左边变量 |
+= | a+=2 => a=a+2 |
-= | |
*= | |
/= | |
%= |
二元运算符(+=…)可以运算类型不同值
int a =5;
a+=1.0;
//a = (int)(a+1.0);
double a =5D;
a+=1;
关系运算符
运算符 | 描述 |
---|---|
== | 判断左右两边是否相等 |
!= | 判断左右两边是否不相等 |
> | |
< | |
>= | |
<= |
逻辑运算符
运算符 | 描述 |
---|---|
&& | 与 |
|| | 或 |
! | 非 |
短路
短路位置后的语句不执行
&&
若有表达式为false
则立即返回false
||
若有表达式为true
立即返回true
位移运算符
<<
,>>
对二进制符号位不影响。2<<1
相当于乘2,2>>1
相当于除2
>>>
高位补零
strictfp
严格浮点数计算,放在方法名前,修饰符
数值类型转换
相同类型数值运算后的结果类型不变
虚线表示转换后(可能)会有精度丢失
强制类型转换
将高精度转为低精度
浮点数->整型:截断小数位,取整
int a = (int)3.145D
若想四舍五入,用Math
类
若超出转换后的精度,超出部分从值范围另一端开始算。
byte a = (byte) (128);// -128
通过
?:
来转换boolean
值。boolean a =true;
int b = a?1:0;