Java基础学习二 运算符
2021-05-26 本文已影响0人
SimonLike
运算符
1,运算符-算术运算符(++、--)
代码示例:
public class HelloWorld {
public static void main(String[] args) {//表示定义一个公开的静态的主方法 ps:程序执行入口
/* 方法体 */
//++运算符可以出现在变量前,也可以出现在变量后,只要++运算结束,该变量中的值一定会自加1
int i = 1;
i ++;
System.out.println(i);
//++ 出现变量后:先做赋值运算,再对变量中保存的值进行自加1
int a = 100;
int b = a ++;
System.out.println(a);//101
System.out.println(b);//100
//++ 出现变量前:先进行自加1,再进行赋值操作。
int m = 20;
int n = ++ m;
System.out.println(m);//21
System.out.println(n);//21
//-- 出现变量后:先做赋值运算,再对变量中保存的值进行自减1
int c = 100;
int d = c --;
System.out.println(c);//99
System.out.println(d);//100
//-- 出现变量前:先进行自减1,再进行赋值操作。
int e = 100;
int f = -- e ;
System.out.println(e);//99
System.out.println(f);//99
}
}
2,运算符-关系运算符
运算符号 | 解析 | 运算符号 | 解析 |
---|---|---|---|
> | 大于 | <= | 小于等于 |
>= | 大于等于 | == | 等于 |
< | 小于 | != | 不等于 |
- = 是赋值运算符 ; == 是关系运算符。
- 关系运算符的运算结果一定是布尔类型:true/false。
3,运算符-逻辑运算符
运算符号 | 类型 | 定义 |
---|---|---|
& | 逻辑与 | 两边算子都是true,结果才是true |
| | 逻辑或 | 两边算子只要有一个true,结果就是true |
! | 逻辑非 | 取反,!false就是true,!true就是false,这是一个单目运算符 |
^ | 逻辑异或 | 两边算子只要不一样,结果就是true |
&& | 短路与 | 第一个算子执行结果是false,会发生短路与 |
|| | 短路或 | 第一个算子执行结果是true,会发生短路或 |
- 逻辑运算符要求两边的算子都是布尔类型,并且逻辑运算符最终的运算结果也是布尔类型。
- 短路与和逻辑与最终运算结果是相同的,只不过短路与存在短路现象。
- 短路或和逻辑或最终运算结果是相同的,只不过短路或存在短路现象。
代码示例:
public class HelloWorld {
public static void main(String[] args) {//表示定义一个公开的静态的主方法 ps:程序执行入口
/* 方法体 */
//运算符优先级不确定,加小括号
System.out.println(5 > 3 & 5 > 2);//true
System.out.println(5 > 3 & 5 > 6);//false
System.out.println(5 > 3 | 5 > 6);//true
System.out.println(true & true);//true
System.out.println(true & false);//false
System.out.println(false & false);//false
System.out.println(true | false);//true
System.out.println(false | false);//false
System.out.println(!false);//true
System.out.println(true ^ false);//true
System.out.println(true ^ true);//false
System.out.println(false ^ false);//false
//逻辑与和短路与
int x = 10;
int y = 8;
//逻辑与
System.out.println(x < y & ++x < y);
System.out.println(x);//11
int m = 10;
int n = 8;
//短路与
// m < n 结果是false,整个表达式结果已经确定是false
// 所以后面的表达式没有在执行,这种现象称为短路现象
// 短路与才会有短路现象,逻辑与不会存在短路现象的。
System.out.println(m < n && ++m < n);
System.out.println(m);//10
/*
// 什么情况下发生短路或?
* 第一个表达式执行结果是true,会发生短路或
什么情况下发生短路与?
* 第一个表达式执行结果是false,会发生短路与
*/
}
}
4,运算符-赋值运算符
-
1,关于java中的赋值类运算符包括两种:
- 基本的赋值运算符 =
- 扩展的赋值运算符 += -= *= /= %=【求余】
-
2,赋值类的运算符优先级:先执行等号右边的表达式,将执行结果赋值给左边的变量。
PS/例如: byte x = 10; x += 5; 等同于: x = (byte)(x + 5); int y = 10; y += 5; 等同于: x = (int)(x + 5); long z = 10L; int i = 20; i += z; 等同于: i = (int)(z + i);
-
3,扩展类的赋值运算符不改变运算结果类型,假设最初这个变量的类型是byte类型, 无论怎么进行追加或追减,最终该变量的数据类型还是byte类型。
代码示例:
public class HelloWorld {
public static void main(String[] args) {//表示定义一个公开的静态的主方法 ps:程序执行入口
/* 方法体 */
// 基本的赋值运算符
int i = 10;
System.out.println(i);//10
i = i + 5;
System.out.println(i);//15
// 扩展的赋值运算符 相同int类型运算
i += 5;//等同于:i = i + 5;
System.out.println(i);//20
i -= 5;//等同于:i = i - 5;
System.out.println(i);//15
i *= 2;//等同于:i = i * 2;
System.out.println(i);//30
i /= 3;//等同于:i = i / 3;
System.out.println(i);//10
i %= 4;//等同于:i = i % 4;
System.out.println(i);//2
//----------------------不同类型运算-----------------------------------
byte b = 10;
//b = b + 5; //编译报错 b + 5是int类型,b是byte类型;大转小需要强制类型转换符
b = (byte) (b + 5); //可以编译通过
System.out.println(b);//
byte x = 10;
x += 5;////等同于:x = (byte)(x + 5); 不等同于 x = x + 5;
System.out.println(x);//15
x += 128;// 等同于:x = (byte)(x + 128)
System.out.println(x);//-113【损失精度】
x += 10000;// 等同于:x = (byte)(x + 10000)
System.out.println(x);//-97【损失精度】
}
}
5,运算符-字符串连接运算符(+)
-
关于java中的"+"运算符有两种作用:
- 加法运算,求和
- 字符串的连接运算
-
当"+"运算符两边的数据都是数字的话,一定进行加法运算
- 数字 + 数字 ---> 数字【求和】
-
当"+"运算符两边的数据只要有一个数据是字符串,一定会进行字符串运算。并且连接运算之后的结果还是一个字符串类型。
- 数字 + "字符串" ---> "字符串" 【字符串连接】
-
在一个表达式当中可以出现多个"+",在没有添加小括号的前提下,遵循自左向右的顺序依次计算。
代码示例:
public class HelloWorld {
public static void main(String[] args) {//表示定义一个公开的静态的主方法 ps:程序执行入口
/* 方法体 */
int a = 10;
int b = 20;
//要求在控制台输出 "10 + 20 = 30"
System.out.println(" 10 + 20 = " + ( a + b));
//要求在以动态的方式输出
//b = 200; //输出:10 + 200 = 210
System.out.println( a + " + " + b + " = " + ( a + b));
int i = 10;
String username = "adc";
System.out.println("欢迎"+username+"回来!");
}
}
6,运算符-三元运算符/三目运算符/条件运算符
-
语法规则:
布尔表达式 ?表达式1 : 表达式2
-
当布尔表达式的结果为true,选择表达式1作为整个表达式的执行结果
-
当布尔表达式的结果为false,选择表达式2作为整个表达式的执行结果
代码示例:
public class HelloWorld {
public static void main(String[] args) {//表示定义一个公开的静态的主方法 ps:程序执行入口
/* 方法体 */
boolean sexbool = true;
char sex = sexbool ? '男' : '女' ;
//不知道优先级时可以这么写
//char sex = (sexbool ? '男' : '女') ;
System.out.println(sex);// sexbool为true输出男, sexbool为false输出女。
System.out.println(sexbool ? '男' : '女');
}
}
上篇: Java基础学习一 基本数据类型
下篇: Java基础学习三 控制语句