think in java-2:操作符

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.

  


      

猜你喜欢

转载自blog.csdn.net/qq_37317845/article/details/80187788