数据类型的转换
小数据类型>>>>大数据类型 自动类型转换
大数据类型>>>>小数据类型 强制类型转换
强制类型转换格式:
数据类型 变量名=(最终数据类型)值
eg:
byte=b;
b=(int)2; //bytedao int
- 在java中,byte、short、char、类型的数据进行运算,会自动先转换成int,在运算。
- 不同类型数据的运算,结果是取大的数据类型。
- 另外,JDK提供了一个方法Integer.toBinaryString()可以取得十进制的二进制表现形式。
表达式
被运算符连接起来的式子叫表达式。
算数运算符(+ - * / %):
+(加法、连接符、正数):
加法:即算数加法。
连接符:“+”作为连接符使用的话,任意类型都可以和字符串连接。任意类型和字符串连接后的结果都是字符串。
eg:
System.out.println(10+1+"hello world"+11+12+13);
结果为:11hello world111213
\(做除法运算)
注意:
1.不做强制转换的时候默认int类型(取整效果)。
2.int类型除以0会在运行时出现ArithmeticException异常。除数不能为0。
3.double类型除以0,不会有异常,结果是Infinity(无穷)。
%(取模,求余数)
注意:取模结果是由被除数决定的。
System.out.println(10%3);
System.out.println(10%-3);
System.out.println(-10%3);
System.out.println(-10%-3);
结果是:
1
1
-1
-1
自增减
自增:是操作数本身加1的过程。
格式:变量名++ 或者++变量名
区别:++在前时,先给操作数本身加1,在进行当前运算;++在后时,先进行当前运算,再给操作数加1。
特殊情况:
int i=0;
i=i++;
System.out.println(i);
结果是:0
原因分析:JVM会在内存中建立一块新的内存空间来存储i的值,然后i+1,JVM会把这个临时值赋给最后的表达式。避免这样写。
自减同理。
赋值运算符
“=”它不是数学中的等于,他是赋值号,是将等于号右边的赋值给左边。
“+=”举例:a+=值>>>>a=a+值
“-=”“*=”“/=”“%=”同理。
比较运算符
比较表达式的结果类型为boolean。
“>”
“<”
“>=”
“<=”
“==”
注意:
“==”运算符两边的数据是基本数据类型的话比较的是值本身。
“==”运算符两边的数据是引用数据类型的话比较的是引用的地址。
逻辑运算符
它是连接比较表达式的,结果类型是布尔类型。
“&”只有两边表达式同时为true时,结果才为true,其他都是false。
“|”只有两边表达式同时为false时,结果才为false,其他都为true。
“!”结果是表达式结果的相反。
“^”两边表达式结果不一样的时候为true,一样为false。
其他:
“&&”短路与
“||”短路或
短路与或和逻辑与或的区别
逻辑与不论左边是什么结果,程序都会执行判断右边,而短路与如果左边是false,右边不会执行判断了,其结果为false。
逻辑或同理,短路或如果左边是true,右边不会再执行判断了,结果为true。
综上,短路与或的效率高于逻辑与或,推荐使用短路与或。
示例:
int i=5;
boolean j=i<4&&i++>7;
System.out.println(j);
System.out.println(i);
结果:
false
5
分析:由于是短路与,左边判断为false,不会再判断执行右边,i不会进行自加。
int i = 5;
boolean e = i < 4 & i++ > 7;
System.out.println(e);
System.out.println(i);
结果:
false
6
分析:逻辑与,依然会读右边,i会自加。