Java拾贝第一天——数据类型与运算符杂记
Java拾贝不建议作为0基础学习,都是本人想到什么写什么
众所周知任何数据类型都可以向String转型
public static void main(String[] args) {
int a = 1;
int b = 2;
System.out.println("1+2=" + a + b);
}
//1+2=12
由于输出语句中碰到了字符串,此时的+被视为字符串连接的含义所以会导致输出错误
想要使输出结果正确用括号即可,即输出时先计算a+b的值
System.out.println("1+2="+(a + b));
//1+2=3
数据类型的强转
其格式为
(数据类型)变量;
也称之为显式转换。
要注意的是这种转型可能会丢失精确度所以Java不会自动做这些数据类型的转换,所以称之为强制转换。
下面为浮点型强制转型为整型。
public static void main(String[] args) {
float a=30.1F;
System.out.println( (int) a);
}
//30
括号运算符
| 运算符 | 描述 |
|---|---|
| () | 提高运算优先级 |
同数学意义上的括号类似。
一元运算符
| 运算符 | 描述 |
|---|---|
| - | 负 |
| ! | 非 |
| + | 正 |
public static void main(String[] args) {
int a = 10;
int b = -20;
boolean c = true;
System.out.println(+a);
System.out.println(-a);
System.out.println(+b);
System.out.println(-b);
System.out.println(c);
System.out.println(!c);
}
/*
10
-10
-20
20
true
false
*/
值得注意的是为什么+b输出是-20 而-b输出却是20呢?
相对于数值类型来说 +表示的是其本身。
而-表示的是其取反,与布尔类型的!是取反相似。
算术运算符
| 运算符 | 描述 |
|---|---|
| + | 加 |
| - | 减 |
| * | 乘 |
| / | 除 |
| % | 取余 |
同数学意义上的加减乘除。
关系运算符
| 运算符 | 描述 |
|---|---|
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| == | 相等 |
| != | 不相等 |
一般关系运算符在 if语句 中使用较多。
if (布尔表达式){
//语句;
};
其中,一个数学意义上完整,并且结果是布尔值(true/false)的式子称之为布尔表达式
public static void main(String[] args) {
int a=1;
int b=2;
if (a==2){
System.out.println("不相等,这条语句不会输出");
}
}
自增自减
五星⭐⭐⭐⭐⭐警告非常重要
| 运算符 | 描述 |
|---|---|
| ++ | 自增 |
| -- | 自减 |
a=a+1;
a++;
//在逻辑意义上 这两条语句是类似的
自增自减的放置顺序不同,会导致结果的不同
public static void main(String[] args) {
int a=1;
System.out.println(a++);//执行完这条语句后再+1
System.out.println(a);
}
/*
1
2
*/
//============================================================================
public static void main(String[] args) {
int a=1;
System.out.println(++a);//先+1再执行这条语句
}
//2
自减与自增相同不再叙述
a--;
先执行语句再自减
--a;
先自减再执行语句
逻辑运算符
| 运算符 | 描述 |
|---|---|
| % | 与 |
| %% | 短路与 |
| | | 或 |
| || | 短路或 |
| ! | 非 |
!属于一元还是逻辑我也搞不清....哎,搜了一下都包括它
Java开发实战经典(李兴华版)第二版中,逻辑运算符不包括! 如其他书籍有注明请评论解惑!谢谢
//一般来说逻辑运算符涉及到 两个 布尔表达式
布尔表达式1 && 布尔表达式2
举栗
public static void main(String[] args) {
int a = 1;
int b = 2;
if (a==1 & b==2) {
System.out.println("两个结果都为真,&&才是真");
}
}
//============================================================================
public static void main(String[] args) {
int a = 1;
int b = 2;
if (a==1 | b==3) {
System.out.println("一个为真,||就是真");
}
}
//============================================================================
public static void main(String[] args) {
int a = 1;
if (a!=2) {
System.out.println("不等于就是真");
}
}
/*
建议涉及多个布尔表达式的时候用括号概括,即:
(布尔表达式1) && (布尔表达式2)
*/
短路逻辑运算符
短路是优化的逻辑运算符,不废话直接上栗子
//众所周知 除0 会报错。
public static void main(String[] args) {
int a = 1;
System.out.println(1/0);
}
//Exception in thread "main" java.lang.ArithmeticException: / by zero
//使用与 &
public static void main(String[] args) {
int a = 1;
if (a==1 & 1/0==0){
System.out.println("使用正常的与");
}
}
//Exception in thread "main" java.lang.ArithmeticException: / by zero
//使用短路与 &&
public static void main(String[] args) {
if (2!=2 && 1/0==0){
System.out.println("使用短路与");
}
}
//这里没用报除0错误
短路与,检测到布尔表达式1为false所以不再进行后续的判断
-
对于&(与)来说,要求所有的布尔表达式都去判断布尔值。
- 如果使用%%(短路与),布尔表达式1为false就不再进行后续的判断。
-
对于|(或)来说,要求所有的布尔表达式都去判断z布尔值。
- 如果使用||(短路或),布尔表达式1为true就不再进行后续的判断。
三目运算符
//布尔表达式?取真值的结果:取假值的结果;
public static void main(String[] args) {
int a = 1;
int b = 2;
System.out.println(a > b ? a : b);//直接输出b
}
//也可用数据类型相符的变量接收
public static void main(String[] args) {
int a = 1;
int b = 2;
int max = a > b ? a : b;//max接收b值
System.out.println(max);
}
要注意的是但三目运算符不能单独出现,必须用变量接收或直接打印
public static void main(String[] args) {
int a = 1;
int b = 2;
a > b ? a : b;
}
//报错 三目运算符单独出现不能作为合法的Java语句
//============================================================================
//三目运算符其实是if
public static void main(String[] args) {
int a = 1;
int b = 2;
int max=0;
if (a > b) {
max = a;
} else {
max = b;
}
System.out.println(max);
}
//上述代码等价于
public static void main(String[] args) {
int a = 1;
int b = 2;
int max = a > b ? a : b;
System.out.println(max);
}
浙公网安备 33010602011771号