Java运算符
java不是c++运算符不能重载。如果被用与String,+会把左边的操作数和右边的操作数相链接
1、赋值运算符:
常量整数永远隐含是int
byte b=27 //编译器自动把这个常量值缩小为一个字节
//但是:
byte b=3;
byte c=8;
byte d=b+c; //false 应改为 byte c=(byte)b+c
//为变量赋一个改不了的大常量会产生问题。
byte a=128; //false 改: byte a=(byte)128;
byte b=3;b+=7;//改为 byte b=3; b=(byte)(b+7);
- 原始变量:把一个原始变量赋给另一个原始变量时,右边变量的内容被复制。位拷贝的复制。
- 为引用变量赋值:可以为所声明类型的子类赋值,但是不能为所声明类型的父类赋值。
- 把一个引用变量赋给另一个引用变量:一个变量的位模式的内容被复制到另一个变量(指向同一个实例)
对于字符串,每当我们使用+运算符链接两个字符串时,vm都要创建一个崭新的String。
2、比较运算符:
>:>=:<:<= 比较整数,浮点数,字符的任意组合。
3、instanceof
运算符只被用于对象的引用变量,可以使用它检查变量是否是某种类型。
数组是对象。Foo[]没有具体引用,Foo[1]是具体的引用。
4、等于运算符:==是兼容类型的比较(=的错误无法编译,测试引用变量是否指向同一个对象)
==等于 !=不等
数字:字符:boolean:对象引用变量
当浮点数除以0时和余数%0,他们返回正无线大或负无线大,除了当被除数也是0时=NaN
整数除0和余数%0,导致ArithmeticExcetpion
5、++,--运算符:final变量不能修改不能与++一起使用
6、移位运算符:>> << >>> 移动的位数与大于32时,与32求 mod
7、位运算符:&|^异或
8、位反运算符~
9、三目运算符,可以在一条语句内嵌套条件运算符
10、原始转换:把大字节的原始类型转换为小字节的原始类型。要显式转化(强行转换)
11、&&和||它不再无意义的计算上浪费时间,&和|
12、变量传递:
- 传值:被调用方法不能修改调用者的变量。
- 传递对象引用变量:传递的是引用的位拷贝,指向同一个对象
- 注意:变量的使用范围,生命周期