1.逻辑运算符
a.&& 和& 的对比:两者同时为true时返回true
A && B 当表达式A为true时,才会进行表达式B的运算;即当表达式A为false时不会进行表达式B的运算;
A & B 不管表达式A是否为true,均会进行表达式B的运算;
故在实际中经常使用A && B,可以减少程序的运行次数。
b.|| 和| 的对比:两者存在为true时返回true
A || B 当表达式A为true时,不会进行表达式B的运算,直接返回true;
A | B 不管表达式A是否为false,均会进行表达式B的运算;
故在实际中经常使用A || B,可以减少程序的运行次数。
c.! 取反
!true -------------> false
!false -------------> true
d.异或 ^ :两者不同时返回true,否则返回false
true ^ false -------------> true
true ^ true -------------> false
2.位运算符
5的二进制是101,6的二进制是110
5|6 对每一位进行或运算,得到 111->7
5&6 对每一位进行与运算,得到 100->4
5^6 对每一位进行或运算,得到 011->3
~5 5的二进制是00000101,所以取非即为11111010,即为-6
6<<1 6向左移1位后,变成1100,对应的10进制是12
6>>1 6向右移1位后,变成11,对应的10进制是3
>>> 无符号的右移
3.scanner的使用
Scanner s =
new
Scanner(System.in);
int
i = s.nextInt();
System.out.println(
"读取的整数是"
+ i);
String rn = s.nextLine();
String a = s.nextLine();
System.out.println(
"读取的字符串是:"
+a);
4.if的缺省写法
if (false)
System.out.println("0");
System.out.println("1");
System.out.println("2");
会打印1,2;注意缺省下的if以后边紧邻的 ; 作为分隔
5.continue,break,return
continue结束本次循环,继续下次的循环;
break结束当前的循环,即内层的循环;
return 返回退出,即该方法不再执行;
如何根据内层循环结束外层循环?
6.数组
int[] a; //声明一个引用
a =
new
int
[5]; //创建一个长度是5的数组,并且使用引用a指向该数组//分配了长度是5的数组,但是没有赋值
int
[] b =
new
int
[
5
];
//声明的同时,指向一个数组
System.out.println(a[0]);//没有赋值,那么就会使用默认值//作为int类型的数组,默认值是0
a[
0
]=
1
;
//下标0,代表数组里的第一个数
System.out.println(a.length); //打印数组的长度
数组访问下标范围是0到长度-1
a[5
]=
101
;
//下标5,实质上是“第6个”,超出范围 ,产生数组下标越界异常
int[] a =
new
int
[]{
100
,
102
,
444
,
836
,
3236};//写法一: 分配空间同时赋值
int[] b = {
100
,
102
,
444
,
836
,
3236};//写法二: 省略了new int[],效果一样
7.增强型for循环
int
values [] =
new
int
[]{
18
,
62
,
68
,
82
,
65
,
9
};
for
(
int
i =
0; i < values.length; i++) {//常规遍历
System.out.println(values[i]);
}
for
(
int
each : values) {//增强型for循环遍历
System.out.println(each);
}
8.二维数组
int b[][] = new int[][]{ {1,2,3} , {4,5,6} , {7,8,9} };
9.
System.arraycopy(src, srcPos, dest, destPos, length)
System.arraycopy(src, srcPos, dest, destPos, length) //把一个数组的值,复制到另一个数组中
需要事先准备好目标数组,并分配长度。
src: 源数组
srcPos: 从源数组复制数据的起始位置
dest: 目标数组
destPos: 复制到目标数组的起始位置
length: 复制的长度
10.数组工具类
Arrays
a.数组复制:通过返回值可自动得到目标数组
int a[] = new int[] { 0, 1, 2, 3, 4, 5 };
int[] b = Arrays.copyOfRange(a, 1, 4);//1 2 3//源数组,起始下标,终止下标
b.打印数组内容
int a[] = new int[] { 18, 62, 68, 82, 65, 9 };
String content = Arrays.toString(a);//[18, 62, 68, 82, 65, 9]
c.数组的自然排序
int a[] = new int[] { 18, 62, 68, 82, 65, 9 };
System.out.println(Arrays.toString(a));//[9, 18, 62, 65, 68, 82]
d.数组内容是否一致比较
Arrays.equals(a, b)
e.数组填充
int a[] = new int[3];
Arrays.fill(a, 5);
System.out.println(Arrays.toString(a));//[5, 5, 5]