数据类型转换&&运算符

■■■■■■■数据类型转换■■■■■■■
Java是一门强类型语言,如果两个数据类型不一致,那么是不能参与运算的,需要进行来行的转换,转成同一种类型才可以运算。
■自动转换/隐式转换
由编译器自己完成转换,会把数据范围小的转成数据范围大的类型

(byte,short,char)--->int--->long--->float--->double
注意:byte,short,char这三个数据类型参数运算时,会无条件转成int再参与运算
例子:
short s=10;
double d=3.14;
double dd=s+d;//short+double=int=double==double+double

■强制类型转换
编译器不能完成,需要程序员自己手动完成写代码的
当我们需要把数据范围大的转成数据范围小的类型,编译器不会自动转换。
格式:
数据类型范围小的类型 变量名=(数据类型范围小的类型)数据类型范围大的值:int a=(int)3.14;
强烈注意:
强制类型转换有风险,需要谨慎。

■■■■■■■运算符■■■■■■■
用来操作数据的符号
■算术运算符
+:1、求两个数值的和;2、连接字符串和其他数据
-:求两个数值的差
*:求两个数值的积
/:求两个数值的商
%(取余/取模):求两个数余数

System.out.println(10%3);//1
System.out.println(-10%3);//-1
System.out.println(10%-3);//1

++:自增运算符(只能操作常量)
如果是单独的式子,(++变量)跟(变量++)没有任何区别,都是让变量的值加1
如果是混合式子,++在前:变量先加1,再使用变量;++在后:先使用变量,再给变量加1。
例子:

int a=10;
int b=20;
int c=a+(++b);//c=31
int c=a+(b++);//c=30

–:自减运算符
跟自增运算符一样。
■赋值运算符
=:给变量赋值int a=10;
+=:int a = 10; a-=3;>>>a=a+3;
-=:int a=10;a-=3;>>>a=a-3
*=:int a=10;a*=3;>>>a=a*3
/=:int a =10;a/=3;>>>a=a/3
%=:int a=10;a%=3;>>>a=a%3
■比较运算符
< > <= >= == !=
结果都是bollean类型
■逻辑运算符
用来计算Boolean值,结果还是Boolean值
&&:短路与 口诀:全真为真,一假则假
||:短路或 口诀:全假为假,一真则真
!:非/取反 口诀:取反
^:异或 口诀:相同为假,不同为真
■三元/三目运算符
格式:Boolean值?值1:值2
结果:要么值1,要么值2
true为值1,false为值2.

■■■■■■■扩展■■■■■■■

    1. +=运算符
        x+=10 等价于  x = x + 10;
        如果数据类型前后是一致的 int a = 10;  那么a+=2 与 a = a + 2;
        如果数据类型前后不一致了 short a = 10 那么 a+=2 与 a = a + 2不等价
                                a+=2 与 a = (short)(a + 2)等价 

    2.变量和常量的运算
        a.如果是常量相加,编译阶段直接求和
            比如: int a = 10 + 20;//编译器直接 会 int a = 30;
        b.整数赋值
            byte b = 10;
            short s = 10;
            如果是常量,并且没有超过数据类型的范围,那么直接优化
        b.浮点数不存在常量优化
            float f = 3.14;//报错

猜你喜欢

转载自blog.csdn.net/YourMilkTea/article/details/81742621