文章目录
基本数据类型
除 int、char 的包装类分别为 Integer、Character 外,其余基本数据类型的第一个字母大写就是它的包装类。
输入输出
println 小知识
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("a + b =" + a + b);
//运行结果:a + b =1020 (整体都是以字符串来看待的)
System.out.println(a + b + "<= a + b");
//运行结果:30<= a + b (先算的a+b,再拼接的字符串)
}
Scanner
nextLine 读取一行,可以有空格
next 是遇到空格结束,不会读空格
运算符小知识
除法( / ) 和 Infinity(无穷) 小知识
除法
分母不为0时,运算结果正负判断
public static void main(String[] args) {
// 整数除以小数 两边符号都看
System.out.println(-1 / -1.0);//1.0
System.out.println(1 / -1.0);//-1.0
System.out.println(-1 / 1.0);//-1.0
// 小数除以整数 两边符号都看
System.out.println(-1.0/-1);//1.0
System.out.println(1.0/-1);//-1.0
System.out.println(-1.0/1);//-1.0
// 小数除以小数 两边符号都看
System.out.println(-1.0 / -1.0);//1.0
System.out.println(1.0 / -1.0);//-1.0
System.out.println(-1.0 / 1.0);//-1.0
}
总结: 跟我们平常在数学中使用的除法一样,分母不为0时,运算结果的符号取决于除号两边的正负。
Infinity
何时会出现 Infinity ?
public static void main(String[] args) {
System.out.println(1/0.0);
//运行结果:Infinity
System.out.println(1.0/0);
//运行结果:Infinity
System.out.println(1.0/0.0);
//运行结果:Infinity
}
public static void main(String[] args) {
System.out.println(1/0);//出现算数异常
}
总结:当分母为0时,只有除号两边有一个小数类型,输出结果就是Infinity;两边都为整数时,出现算数异常。
Infinity 在除法中正负判断
public static void main(String[] args) {
// 整数除以小数0 看小数符号
System.out.println(-1/-0.0);//Infinity
System.out.println(1/-0.0);//-Infinity
System.out.println(-1/0.0);//-Infinity
// 小数除以整数0 看小数符号
System.out.println(-1.0/-0);//-Infinity
System.out.println(1.0/-0);//Infinity
System.out.println(-1.0/0);//-Infinity
// 小数除以小数0 两边符号都看
System.out.println(-1.0/-0.0);//Infinity
System.out.println(1.0/-0.0);//-Infinity
System.out.println(-1.0/0.0);//-Infinity
}
总结:当分母为0时,只看除号两边的小数符号的正负。
求余(%) 小知识
求余结果的符号判断
public static void main(String[] args) {
//整数求余 只看左操作数的符号
System.out.println(-3%-2);//-1
System.out.println(3%-2);//1
System.out.println(-3%2);//-1
//一整一小求余 只看左操作数的符号
System.out.println(-3%-2.0);//-1.0
System.out.println(3%-2.0);//1.0
System.out.println(-3%2.0);//-1.0
//一小一整求余 只看左操作数的符号
System.out.println(-3.0%-2);//-1.0
System.out.println(3.0%-2);//1.0
System.out.println(-3.0%2);//-1.0
//小数求余 只看左操作数的符号
System.out.println(-3.0%-2.0);//-1.0
System.out.println(3.0%-2.0);//1.0
System.out.println(-3.0%2.0);//-1.0
}
总结:求余时,根据左操作数的符号来确定结果的符号。
增量类型转换小知识
先来回顾一下什么是增量运算符:
例如:+=
-=
*=
%=
…,这就是增量运算符。
逻辑运算符中的短路求值
&& 和 ||
& 和 |
总结:
- 对于&&,如果左侧表达式为false,则表达式结果一定是false,无需计算右侧表达式
- 对于||,如果左侧表达式为true,则表达式结果一定是true,无需计算右侧表达式
- & 和 | & 和 | 如果表达式结果为boolean时,也表示逻辑运算,但与&& || 相比,它们不支持短路求值
左移、右移操作符
左移
<< 为左移操作符(所有位数向左移,最左边补0)
不存在 <<< 不要自己创造吖~
右移
>> 为有符号右移(符号位不变,其余位向右移)
>>> 为无符号右移(不管你的符号位是1还是0,统统补0)
多层嵌套的三目运算符计算方法
看到这么一长串代码,是不是非常头疼?所以不建议使用多层嵌套三目运算符。
如果别人就是这样写了,有没有让我们快速看懂的方法呢?
让我来告诉你一个小技巧:
第一步:找到最外层的三目运算符,寻找方法:从左往右数有几个问号,遇到冒号就停,之后数同样数量的冒号,此时最后一个冒号的左右两边就是最外层三目运算符的表达式2和表达式3啦~
之后重复步骤1,就可以很清晰的明白啦~
自己试试awa~:
答案~:
条件分支和循环
switch
不能做switch参数的数据类型:long、float、double、boolean