1.使用java操作符:
java的操作符与其它语言类似,主要包括:+,-,*,/,%, +=,-=,*=,/=等形式,几乎所有的操作符都只能操作"基本类型",但"="."==","!="这些操作符则能操作所有的对象.
2.运算符的优先级:
运算符的优先级与数学运算中相同,但如果实在不能区分优先级,则以括号为区分,括号中优先级高.
3.赋值
基本数据类型赋值:直接将运算符左边值赋值给右边,当改变左边值时,右边值不会改变。
对象间赋值:直接将运算符左边对象引用赋值给右边,此时两个变量拥有同一对象的引用,则操作任意引用,则必然影响对象的内容。
// 基本数据类型赋值
int a = 10;
int b = 20;
a = b;
System.out.println(a);//输出a = 20
System.out.println(b);//输出b = 20
++b;
System.out.println(a);//输出a = 20
System.out.println(b);//输出b = 21
// 对象间赋值
Tank tank1 = new Tank();
Tank tank2 = new Tank();
tank1.level = 10;
tank2.level = 20;
tank1 = tank2;
System.out.println(tank1.level);//输出20
System.out.println(tank2.level);//输出20
tank1.level = 30;
System.out.println(tank2.level);//输出30
4.算术操作符
基本操作符就不做解释,注意点:如果算术中取模则为余数,如果取余则为商
// 算术操作符
int c = 10;
int d = 3;
System.out.println(c/d);//输出3
System.out.println(c%d);//输出1
c+=4;//等同于c = c+4;基它的c*=4;c/=4;c-=4用法相同
System.out.println(c);//输出14
c/=4;
System.out.println(c);//输出3
5.自动递增、递减
如果是一个变量操作,则a++与++a效果相同,均是a=a+1;
如果是两个变量之间操作,则存在差异,b = a++,即先将a赋值给b,然后在执行a++,即结果为b = a,a = a+1;
b=++a:结果为b = a+1;a = a+1
//a++,++a的运算
int f = 10;
f++;
System.out.println(f);//输出11
++f;//f = 11
System.out.println(f);//输出12
int e = 20;
e=f++;//e = f = 12,f = f+1 = 13
System.out.println(e);//12
System.out.println(f);//13
e = ++f;//e = f+1 = 14;f = f+1 = 14
System.out.println(e);//14
System.out.println(f);//14
6.关系操作符:结果为boolean,只有true与false两种结果。
==与equals比较:==比较的是两对象间引用,equals比较的是两对象间内容是否相同,equals默认为比较引用,但在java中许多对象已经重写equals,故调用常见对象比较,则为内容比较,如果自己创建两对象进行比较,在未重写equals前提下,则默认为引用比较。
//对象间比较
Tank tank1= new Tank();
Tank tank2 = new Tank();
tank1.level = tank2.level = 100;
System.out.println(tank1==tank2);
System.out.println(tank1.equals(tank2));
//1.基本类型比较
int a = 10;
int b = 10;
System.out.println(a==b);//基本数据类型用==比较
Integer a1 = new Integer(10);
Integer b1 = new Integer(10);
Integer a2 = 10;
Integer b2 = 10;
System.out.println(a1 == b1);//false;
System.out.println(a1.equals(b1));//true;
//基本类型的自动拆箱
System.out.println(a2==b2);//true
System.out.println(a2.equals(b2));//true
//基本数据类型比较时,在进行自动拆装箱时,如果数据大于127,则无法使用==进行比较
Integer a3 = 128;
Integer b3 = 128;
System.out.println(a3==b3);//false
System.out.println(a3.equals(b3));//true
7.逻辑操作符:&&,||,!
短路逻辑:指如果逻辑操作符中存在几个逻辑,如果前边逻辑已经能决定该表达式结果,则后边逻辑将不在进行比较
private static boolean test(int i){
System.out.println("i:"+i);
return i<2;
}
public static void main(String[] args) {
boolean b = test(0)&&test(3)&&test(2);
System.out.println("expression is:"+b);
}
//输出结果
// i:0
//i:3
//expression is:false
8:字符串操作符+和+=:如果选算符两边存在字符串,则会将运算结果转换为字符串,此例简单就不单独举例说明
9:类型转换(只存在于基本数据类型转换,如果对象间要类型转换需借助其它方式)
小容量向大容量转换:byte short char在运算时会默认转换为int. int long float double ,默认小容量会向大容量转换。
大容量向小容量转换:会导至数据精度丢失,转换原则:int = (int)23L;即将long转换为int类型.
运算时的自动转换:如果一个表达式中存在不同的数据类型,则结果以大容量为准,如果将一个float与一个double相乘,则结果为double.