运算符的概述
- 对常量和变量进行操作的符号称为运算符,即 : 加 + ,减 - ,乘 * ,除 / ;
- 表达式的概述
- 用运算符把常量或者变量链接起来符合Java语法的式子称为表达式 . 不同运算符连接的式子体现的是不同类型的表达式 .
- 例 : 定义两个int类型的变量 a,b,做加法,即 a+b;
常见的运算符
算数运算符
(+ ,- , * ,/) 的基本用法
public class Demo01 { public static void main(String[] args) { // 定义两个变量 int a = 3; int b = 4; System.out.println(a + b); System.out.println(a - b); System.out.println(a * b); System.out.println(a / b); // 整数相除只能得到整数,想要得到小数,就必须有浮点数参与运算 System.out.println(3 / 4.0); System.out.println(3.0 / 4); } }
% 的用法
- 得到的是两个相除数据的余数
用处 : 判断两个数据是可可以整除
public class Demo02Operator { public static void main(String[] args) { int a = 5; int b = 3; System.out.println(a / b);//1 System.out.println(a % b);//2 } }
+的多种用法
- 数字相加
- 字符相加 : 用字符计算机中底层储存对应的数据值来参与运算
字符串相加 : 这里的 + 其实不是加法,而是字符串连接符;字符串和其他类型的数据做拼接,结果是字符串类型 .
public class Demo03 { public static void main(String[] args) { //1.整数的加法 int a = 10; int b = 20; System.out.println(a + b); System.out.println("------------------"); //2.字符参与加法操作 char c = '0'; char c2 = 'a'; System.out.println(a + c); System.out.println(a + c2); System.out.println("------------------"); //3.字符串参与加法操作 System.out.println("hello" + a); System.out.println("hello" + a + b); //"hello"+10="hello10",然后再和b进行拼接 System.out.println(a + b + "hello");//从左到右依次计算,先求和,在连接 } }
++和- -的用法
- ++,- - 运算符 : 对变量做加 1 或者减 1 操作
- ++,- - 既可以写在变量的后面,也可以写在变量的前面
- 单独使用 : ++,- - 无论是写在变量的前面还是后面,结果都是一样的
- 和其它操作混合使用 : 如果++,- - 卸载变量后面,先拿变量本来的值参加与操作,结束后变量做++,- -
public class Demo04 { public static void main(String[] args) { int a = 10; System.out.println("a:" + a); // 单独使用 // a++; // ++a; // System.out.println("a:" + a); // 参与操作使用 // int b = a++; int b = ++a; System.out.println("a:" + a); System.out.println("b:" + b); } }
赋值运算符
- 基本的赋值运算符 : =
- 把右边的值赋值给左边
扩展的赋值运算符 : += ,-+ ,*= ,/= ,%=
- 把左边和右边的运算结果赋值给左边
- 注意 : 左边不能是常量
隐含了一个强制类型转换
public class Demo05 { public static void main(String[] args) { // 把10赋值给int类型的变量a int a = 10; // += 把左边和右边的数据进行运算,最后赋值给左边,左边的只能是变量 a += 10;// 相当于a = a + 10 System.out.println("a:" + a); System.out.println("----------------------"); short s = 10; // s += 20; // 相当于 s = s + 20; s = (short) (s + 20); System.out.println("s:" + s); } }
- 基本的赋值运算符 : =
关系运算符
- == , != , > , < , >= , <=
- 关系运算符的结果都是boolean 型,也就是说,要么是true,要么是false
注意事项 : 关系运算符”==”不能误写成”=”
public class Demo06 { public static void main(String[] args) { int a = 10; int b = 20; int c = 10; System.out.println(a == b); System.out.println(a == c); System.out.println("-----------------"); System.out.println(a != b); System.out.println(a != c); System.out.println("-----------------"); System.out.println(a > b); System.out.println(a > c); System.out.println("-----------------"); System.out.println(a >= b); System.out.println(a >= c); System.out.println("-----------------"); int x = 3; int y = 4; // System.out.println(x == y); // System.out.println(x = y);// 把y赋值给x,把x的值输出 boolean bb = (x == y); // 报错 // boolean cc = (x = y); int cc = (x = y); } }
逻辑运算符
- 作用 : 逻辑运算符用于链接布尔型表达式,在Java中不可以写成 3 < x < 6 , 应该写成 x>3 && x<6 .
基本使用: &(与),|(或),^(异或),!(非)
- 与 : & 有false则false
- 或 : | 有则true,无则true
- 异或 : ^ 相同则false,不同则true
非 : ! true则false , false则true
public class Demo07 { public static void main(String[] args) { int a = 10; int b = 20; int c = 30; System.out.println((a > b) & (a > c));// false & false System.out.println((a < b) & (a > c)); // true & false System.out.println((a > b) & (a < c)); // false & true System.out.println((a < b) & (a < c)); // true & true System.out.println("---------------"); System.out.println((a > b) | (a > c));// false | false System.out.println((a < b) | (a > c)); // true | false System.out.println((a > b) | (a < c)); // false | true System.out.println((a < b) | (a < c)); // true | true System.out.println("---------------"); System.out.println((a > b) ^ (a > c));// false ^ false System.out.println((a < b) ^ (a > c)); // true ^ false System.out.println((a > b) ^ (a < c)); // false ^ true System.out.println((a < b) ^ (a < c)); // true ^ true System.out.println("---------------"); System.out.println((a > b)); // false System.out.println(!(a > b)); // !false System.out.println(!!(a > b)); // !!false } }
&和&&的区别
- 单&时,左边无论是真假,右边都进行运算;
- 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算
- 判断一个字符串补位null并且不是空字符串”“时,必须使用&&,否则会报空指针异常
“|”和”||”的区别同理,双或时,左边为真,右边不参与运算
public class Demo08 { public static void main(String[] args) { int a = 10; int b = 20; int c = 30; System.out.println((a > b) && (a > c));// false && false System.out.println((a < b) && (a > c)); // true && false System.out.println((a > b) && (a < c)); // false && true System.out.println((a < b) && (a < c)); // true && true System.out.println("---------------"); System.out.println((a > b) || (a > c));// false || false System.out.println((a < b) || (a > c)); // true || false System.out.println((a > b) || (a < c)); // false || true System.out.println((a < b) || (a < c)); // true || true System.out.println("---------------"); int x = 3; int y = 4; // System.out.println((x++ > 4) & (y++ > 5)); // false & false System.out.println((x++ > 4) && (y++ > 5)); // false && false System.out.println("x:" + x); System.out.println("y:" + y); } }
public class Dome09 { public static void main(String[] args) { String string = null; System.out.println(string == null & string.equals(""));//空指针异常,解决方法:用&& } }
三元运算符
- 格式 : (关系表达式)?表达式1:表达式2;
- 如果条件为true,运算后的结果是表达式1;
- 如果条件为false,运算后的结果是表达式2;
示例 :
获取两个数中较大的数
int x = 3;
int y = 4;
int z;
z = (x>y)?x:y;
z变量储存的就是两个数中较大的数public class Demo10 { public static void main(String[] args) { int a = 10; int b = 20; int c = (a > b) ? a : b; System.out.println("c:" + c); } }
- 格式 : (关系表达式)?表达式1:表达式2;