1.数据类型转换
小数据类型————>大的数据类型 自动类型转换
大的数据类型———->小的数据类型 强制类型转换
强制类型转换的格式:
小数据类型 变量名 =(小数据类型) 大数据类型数据;
数据类型转换要注意的细节:
1. 凡是byte、 short、 char 数据类型数据在运算的时候,会自动的转换成int类型再运算的。
byte b1 = 1;
byte b2= 2;
byte b3 = (byte)(b1+b2);
2. 两个不同数据类型的数据在运算的时候, 结果取决于大的数据类型。
int i = 10;
long l = 20;
int sum = (int)(i+l);
2.转义字符
转义字符:特殊字符使用”\”把其转化成字符的本身输出,那么使用”\”的字符称作为转移字符。
常用的转义字符:
\b Backspace (退格键)
\t Tab (Tab键盘) 制表符 制表符的意义是保证一列对齐。
\r Carriage Return(回车) 把光标移动到一行的首位置上。
\n Linefeed (换行)
如果在windows操作系统的文件需要换行,那么需要\r\n一起使用。 在其他操作系统上如果需要
换行只需要\n即可。
3.算术运算符
+ (正数,加法 、 连接符)
连接符: 如果数据与字符串使用+号,那么这时候“+ ”就是一个连接符。拼接字符串。
任何数据与字符串使用连接符,那么结果的类型都是字符串类型。
-
*
/(除法)
%(取模,取余数)
++(自增): 自增就是操作数+1.
前自增: ++位于操作数的前面。 先自增,后使用。
后自增: ++位于操作数的后面。 先使用,后自增,
jvm对于后自增的运行原理:
i=i++; ——-> 先运算i++ , 再运算赋值运算符(=)。
后自增要使用到没有+1之前的值。
i++的运行原理:
int temp = i; //创建一个变量保存i没有+1的值。
i = i+1; //自增
把temp的值作为运算结果返回。
int i = 0;
i = i++;
分析i = i++; 运算过程:
先算:i++;
int temp = i; // 0
i = i+1; // i =1
i = temp; // i = 0
i值变化的过程 : 0 —-> 1 ——>0
--(自减): 自减就是操作数-1.
前自减: --位于操作数 的前面。 先自减,后使用。
后自减: --位于操作数 的后面, 先使用,后自减
4.赋值运算符
= (赋值运算符)
+=
-=
*=
/=
%=
byte b1 = 1;
b1 = b1 +1;
b1+=1; // b1 = (byte)(b1+1); // java编译器对于b1+=1的时候,java编译器会进行强制类型转换。我们不需要再手动转换了。
5.比较运算符
== 等于
==作用:
1. 用于基本数据类型数据比较时,判断的是两个数据是否相等。
2. ==用于引用数据类型比较的时候,那么比较的是两个变量所指向的对象是否为同一个(比较的是内存地址).
! =(不等于)
< (小于)
> (大于)
<= (小于等于)
>= (大于等于)
6.逻辑运算符
逻辑运算符: 逻辑运算符的主要作用是用于连接布尔表达式的。
& (与,并且)
规律: 只有两边的布尔表达式都是true 的时候,结果才是true,否则就是false。
| (或 )
规律: 只要有一边的布尔表达式为true,那么结果就为true,只有两个同时为false的时候,结果才是false。
! (非)
^ (异或)
规律:两边的布尔表达式如果结果不一致,那么结果为true。否则为false。
&&(短路与)
短路与 和 单与的区别:
相同点: 得到的结果是一样的。
不同点: 使用短路与的时候,如果左边 的布尔表达式为false 的时候,则不会运算右边的布尔表达式。结果返回结果false.
使用单与的时候,发现了左边的布尔表达式为false 的时候,还是会继续运算右边的布尔表达式的。
||(短路或)
短路或与单或的区别:
相同点: 得到 的结果是一致的。
不同点: 使用短路或的时候,如果左边的布尔表达式为true,则不会运算右边的布尔表达式了,直接返回结果true。
使用单或的时候, 即使发现了左边的布尔表达式为true,还是运算右边的布尔表达式的。
7.位运算符
位运算符 : 直接操作数据的二进制位的。
&
|
^
规律: 如果操作数A连续异或另外一个操作数两次,那么结果还是操作数A.
加密文件...
~ (取反)
System.out.println(6&3); // 2
System.out.println(6|3); // 7
System.out.println(6^3^3); // 6
System.out.println(~6); // -7
面试题目1:定义了两个变量a ,b ,然后交换a和b的值,不准出现第三方变量。
方式一: 相加法。 缺陷:两个int值相加有可能会超出int的表示范围。
a = a+b; // a = 8
b = a - b; // b = 8-5 = 3
a = a - b; // a = 8 - 3 = 5
方式二: 使用异或. 缺点: 逻辑不清晰。
a = a^b; // a = 3^5
b = a^b; // b = 3^5^5 = 3
a = a^b; // a = 3^5^3 = 5
面试题目2:取出下面二进制数据的低4四位数据。
00000000-00010000-00110000-11000111
& 00000000-00000000-00000000-00001111
-----------------------------------------
0111
8.移位运算符
移位运算符: 直接操作数据的二进制位
<< 左移
规律:一个操作数进行左移运算 的时候,实际上就是等于该操作数乘以2的n次方,n就是移动的位数。
面试题目: 使用最高效率的方式算出2乘以8的结果。
2<<3 = 2*2(3) = 16
2*8 = 16
>> 右移
规律: 一个操作数进行右移运算 的时候,实际上就是等于该操作数除以2的n次方,n就是移动的位数。
>>> 无符号右移
无符号右移的特殊之处: 一个操作数进行无符号右移的时候,不管该操作数是正数还是负数,左边空缺位都是使用0来补。
9.三元运算符
三元运算符的格式:
布尔表达式?值1:值2;