一、进制转换
参考这篇文章:
注意:
负数的二进制表现形式:
6= 110
-6:其实就是6的二进制取反+1
取反:将二进制的1变成0,将0变成1。
0000-0000 0000-0000 0000-00000 000-0110 (二进制6)
1111-1111 1111-1111 1111-1111 1111-1001 (二进制6取反)
+ 0000-0000 0000-0000 0000-0000 0000-0001 (二进制1)
1111-1111 1111-1111 1111-1111 1111-1010 = -6
总结:负数的最高位都是1。
二、基本数据类型
8种
1) 整型
byte 1B 8位 -128到127
short 2B 16位 -2^15到(2^15)-1
int 4B 32位 -2^31到(2^31)-1
long 8B 64位 -2^63到(2^63)-1
2) 浮点类型
float 4B 32位
double 8B 64位
3) 字符类型
char 2B 16位
4) 布尔型
boolean 1B 8位 false/true
注:
1、Java中的自动类型提升问题。
1)、正向过程:从低字节到高字节可以自动转换。
byte->short->int->long->float->double
2)、逆向过程:从高字节到低字节用强制类型转换。
例:int a = (int)3.141592653;//结果是3
注:逆向转换将丢失精度。
2、boolean:只有true和false。
3、char:Java中用" \u四位十六进制的数字 (即使在注释中出现\u,后面如果跟的不是4个数字,也会报错)"表示将字符转换成对应的unicode编码,字符类型要用单引号括起来。
4、黙认浮点类型为double,float数据类型有一个后缀为" f "或" F "。
5、long类型有一个后缀,为" l "或者" L "
三、自动类型提升
- byte a = 2;
- byte b = 3;
- a = a+b; //编译出错自动类型提升成int
- a += b; //自加没有自动类型提升问题
类型自动提升规则:
a和b作某种运算
a和b中有double,结果就是double
a和b中有float, 结果就是float
a和b中有long, 结果就是long
除此之外,结果都是int
注意:把高字节转成低字节,需要作强制类型转换. byte c=(byte)a+b;
四、移位运算符:
效率最高
>> 有符号右移,补符号位
移负数位,则将该数值加32后再进行移位
数值的2进制是按照补码保存的
>>> 右移后高位都补0
分析:交换两个变量中的值
- //1.借助temp临时变量
- int temp;
- temp=n;
- n=m;
- m=temp;
- System.out.println("交换后的值:"+"\n"+"n="+n+"\n"+"m="+m);
- //2.不借助临时变量
- n=n+m;
- m=n-m;
- n=n-m;
- System.out.println("交换后的值:"+"\n"+"n="+n+"\n"+"m="+m);
- //3.一个数异或同一个数两次,结果不变
- n=n^m;
- m=n^m;//n^m^m等于n
- n=n^m;
- System.out.println("交换后的值:"+"\n"+"n="+n+"\n"+"m="+m);
- //位运算符,进制转换(十进制转换为十六进制)
- int num=60;
- int n1=num & 15;//获取num最低4位
- System.out.println((char)(n1-10+'A'));
- int temp=num>>>4;//要获取下一组四位,将60右移4位
- int n2=temp & 15;//对temp的值进行最低四位的获取
- System.out.println(n2);
五、逻辑运算符:
& 与 and
| 或 or
&& 先判断前面一个条件,如果为假,则不用计算后一个条件
|| 先判断前面一个条件,如果为真,则不用计算后一个条件
^ 异或(相同为flase,不同为true)
! 非 (!true=flase )
" + "运算符:两个操作的对象是数值时,是加法。如果有一个是字符串时,则是字符串的连接。
六、转义字符(常用)
\n换行
\b退格。
\r按下回车
\t制表符(Tab键)
七、算数运算符
+ (数值相加,字符串相连。),-(双目:减号。单目:负号), *, /, %(膜), ++(自增),--(自减)," + "运算符:两个操作的对象是数值时,是加法。如果有一个是字符串时,则是字符串的连接。
八、赋值和比较运算符
赋值运算符:=,+=, -=,*=, /=, %=
比较运算符:==,!=,>,<,>=,<=,instanceof(检查是否是类的对象)
int a,b,c;
a=b=c=3;//赋值
注意:
short s=3;
s=s+2;//编译失败,s被提升为int类型,运算后结果还是int类型,无法赋值给short类型。
s+=2;//编译通过,因为+=运算符在给s赋值时,自动完成了强制转换工作。
比较运算符的结果都是boolean型(要么true,要么false)。
九、流程控制语句:
Java与C++相同。
If if…..else if….. else if…..else
switch中的变量类型只能是byte、 short、int、char四种类型。
复习了两天,做做小程序吧!
源代码:
- /*
- 需求:输出"100~999之间水仙花数:"
- */
- public class Narcissus
- {
- public static void main(String args[])
- {
- System.out.println("100~999之间水仙花数:");
- int k,a,b,c,d;
- for(k=100;k<1000;k++)
- {
- a=k/100;
- b=k%100/10;
- c=k%10;
- d=a*a*a+b*b*b+c*c*c;
- if(d==k)
- System.out.println(k);
- }
- }
- }