1,运算符
①&与&&的区别
&可以表示逻辑与和按位与,&&只能表示逻辑与且&&表示逻辑与时是短路运算,&不是。
②异或^
一个数异或同一个数两次结果还是这个数
③左移<<和右移>>
左移几位其实就是该数据乘2的几次方,右移几位就是该数据除以2的几次方
无符号左移<<<,无符号右移>>>
④最有效率的方式计算2除以8的值
2<<3
2,对两个数的值进行互换
a=3;
b=5;
①最常用
int temp=a;
a=b;
b=temp;
②不能开辟新的变量
a=a+b;//a=3+5=8
b=a-b;//b=3+5-5=3,a=8
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
3,switch语句
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2;
执行语句;
break;
case3:
case4:
case5:
执行语句;//3,4,5情况执行相同的执行语句
break;
......
default:
执行语句;
break;
}
4,九九乘法表
for(int x=1;x<9;x++)//一共有九行
{
for(int y=1;y<=x;y++)
{
System.out.println(y+"*"+x+"=“+x*y+'\t';
}
}
5,break和continue
break的作用是直接跳出当前循环,作用范围是switch语句或者循环结构
continue的作用是忽略后续语句直接继续下一次循环,作用范围是循环语句
注意:continue和break使用时都要保证其后跟随的语句不会永远都无法执行
xiaoqiang:for(int x=0;x<3;x++){
wangcai:for(int y=0;y<4;y++){
System.out.println("x="+x);
continue xiaoqiang;//不在执行当前内循环,直接开始下一次的外循环;
}
}
6,重载
重载是指在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可
①同一个类
②同名
③参数个数不同或者参数类型不同
④函数的重载和返回值类型无关
7,内存
内存一共有五种,分别是:
①寄存器//cpu相关
②本地方法区//操作系统相关
③方法区//类加载相关
④栈内存:存储的都是局部变量(存储在方法中的变量),而且变量所属的作用域一旦结束,该变量就自动释放。
⑤堆内存:存放数组,对象(其实数组也是对象),凡是通过new建立的都存在堆内存中
8,数组常见问题
①ArrayIndexOutofBoundsException:数组越界
②NullPointerException:空指针异常