1.byte
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
存在默认转换,byte,short,char类型参与运算时会先转换为int类型。
2.byte练习
System.out.println('a'); //a
System.out.println('a'+1); //98
System.out.println("hello"+'a'+1); //helloa1
System.out.println('a'+1+"hello"); //98hello
System.out.println("5+5= "+5+5); //5+5= 55
System.out.println(5+5+" =5+5"); //10 =5+5
3.运算符
整数相除只能得到整数,若是想要得到小数,可以*1.0
4.short
short s=1,s=s+1; //Type mismatch: cannot convert from int to short
short s1=1,s1+=1; //ok
5.位运算符
<< //左移 3<<2=12 ----> 3*2*2 空位补0,被移除的高位丢弃
>> //右移 3>>1=1 ----> 3/2 被移位的二进制最高位是0,右移后空缺位补0; 最高位是1,最高位补1
>>> //无符号右移 3>>>1=1 ---->3/2 被移位二进制最高位无论是0或者是1,空缺位都用0补
& //与运算 6&3=2 ---->110&011 任何二进制位和0进行&运算,结果是0; 和1进行&运算结果是原值
| //或运算 6|3=7 ----->110|011 任何二进制位和0进行 | 运算,结果是原值; 和1进行 | 运算结果是1
^ //异或运算 6^3=5 ----> 110^011 任何相同二进制位进行 ^ 运算,结果是0; 不相同二进制位 ^ 运算结果是1
~ //反码 ~6=-7 ---->~110
计算机中数据的存储和运算都是采用补码进行。
数据的有符号表示法:
原码:正数为正常的二进制;负数为符号为一的二进制
反码:正数和原码相同;负数符号位不变,数值位取反
补码:正数和原码相同;负数反码+1
6.不使用临时变量将两个整数变量交换:
a=a^b;
b=b^a; //b=b^a=b^(a^b)=a^b^b=a^0=a;
a=a^b; //a=a^b=(a^b)^a=b^a^a=b^0=b;
7.三元运算符
三元运算符可以使用if语句改进,反之不成立。
原因是当if语句控制的语句体是一条输出语句的时候,就不成立。 因为三元运算符是一个运算符,必须要求有一个结果返回。 而输出语句却不能作为一个返回结果
8.switch语句
switch表达式取值:byte,short,int,char;jdk5之后支持枚举,jdk7之后支持String
case语句后只能是常量,不能是变量,且多个case后面值不能重复
switch语句结束条件为遇到break或执行到程序末尾
9.for和while
使用区别:控制条件语句中所控制的变量,for循环结束后,不能再被访问,while循环结束后仍可继续访问。