习惯:
- 写注释
常量与变量
- 单引号:‘一个数字、字母或符号’;双引号:“一个或多个字符”
- 0开头表示8进制;0x开头表示16进制;二进制数分三组为8进制(每组最大为7)、分两组为16进制(最大为F)
- long型赋值末尾需要加l(整型默认为int);float型赋值末尾需要加f(精度类型默认为double)
- 负数是取正后取反码再加1;负数的二进制的最高位是1
逻辑运算符
byte b=4;byte b1=3;byte b2=7;b=b1+b2;//右边变量不确定,复制可能丢失精度,报错
int x;int x1=Integer.MAX_VALUE;x2=2;x=x1+x2;//默认类型(int),超出范围舍弃高位
- ^:异或运算符:相同为false,不同为true;进行位运算时,一个数异或两次还是这个数(可用于两变量值的交换,面试3)
- &和&&:结果相同,&&:左边为假,右边不运算,&:可参与位运算(二进制位比较);|和||:结果相同,||:左边为真,右边不运算,|:可参与位运算(特点:可将有效位保留)
- ~6,反码:取反:0110 --》1001,-7
- 任何数据+字符串=字符串
例:
Systeam.out.println("5+5="+5+5); //5+5=55
Systeam.out.println("5+5="+(5+5)); //5+5=10
int i=3;i=i++; //i=3
short s=3;
s+=4; //s=7类型自动转换
s=s+4; //报错可能丢失精度s=(short)(s+4)
- 位运算:"<<"(二进制数左移,超出的舍弃,右边补0)3<<n=3*2(n));3<<2=12;
“>>”(二进制数右移,超出的舍弃,若是负数则用1补,是正数则用0补)3>>n=3/2(n);">>>"高位用0补。
用处:2乘8可用8<<1
(用于2的倍数运算,运算更高效)
语句
switch(x){//byte,short,int,char
case 1:
a=1;
break;
case 2:
a=2;
break;
case 3:
case 4:
System.out.println("两个一起");
default:
a=3;
break;
}//运行到break;或大括号
- 循环结构: while,do while,for
- for(初始化表达式;循环条件表达式;循环后的操作表达式){
执行语句;(循环体)
}
for(int a=0,b=0;a<3&&b<=4;a++,b++){
System.out.println("a和b一起控制循环");
}
- for和while的特点:
1,for和while可以互换。
2,小区别:for循环内部定义的循环增量"i"只能在for循环内使用。 - 无限循环最简单的形式
while(true){}
for(;;){}
\n:回车
\t:制表符
\b:退格
\r:按下回车键
\:转义字符
windows系统中回车符其实是有两个符号组成的\r\n
linux中回车符是\n
- break:作用于switch或循环语句,跳出所在的当前循环。
a:for(int x=0;x<3;x++){
b:for(int y=0;y<4;y++){
System.out.println("跳出外循环");
break a;
}
//break b;//无效语句,不在循环体内
}
continue:继续,作用于循环语句,结束本次循环,继续下次循环。
a:for(int x=0;x<3;x++){
b:for(int y=0;y<4;y++){
System.out.println("x="+x);
continue a;//输出了x=0,1,2
}
}