1.算数运算符
运算符
对常量和变量进行操作的符号称为运算符
表达式
用运算符把常量或者变量连接起来符号的java语法的式子可以称为表达式
不同运算符连接的式子体现的是不同类型的表达式
常用运算符
算数运算符
* +,-,*,/,%,++,--
public class Demo1{ 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);
}
}
注意:
%:取余运算符。得到的是两个相除数据的余数。
/:除法运算符。得到是两个相除数据的商。
使用场景: %:判断两个数据是否整除。
字符参与运算
其实是拿该字符对应的数值来操作
‘a’ 97
‘A’ 65
‘0’ 48
字符串参与运算
这里其实做的不是加法运算,而是字符串拼接。
字符串和其他类型的数据做拼接,结果是字符串类型的。
/* * 整数的加法。 * 字符参与加法操作。拿字符在计算机中底层存储对应的数据值来参与运算的。 * ‘0‘ 48 * ‘a‘ 97 * ‘A‘ 65 * 字符串参与加法操作。 * 这里的+其实不是加法,而是字符串连接符。 */ public class Demo2{ public static void main(String[] args) { // 整数加法 int a = 10; int b = 20; System.out.println(a + b); System.out.println("------------------"); // 字符参与加法操作 char c = ‘0‘; char c2 = ‘a‘; System.out.println(a + c); System.out.println(a + c2); System.out.println("------------------"); // 字符串参与加法操作 System.out.println("hello" + a); System.out.println("hello" + a + b); // "hello"+10,然后再和b进行拼接 System.out.println(a + b + "hello"); } }
2.++和--
++,--运算符:对变量做加1或者减1的操作。
++或者--既可以放在变量的后面,也可以放在变量的前面。
单独使用的时候,++或者--无论是放在变量的前面还是后面,结果是一样的
如果++或者--在变量的后面,先拿变量参与操作,后变量做++或者--
如果++或者--在变量的前面,先变量做++或者--,后拿变量参与操作
public class Demo3{ 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); } }
3.赋值运算符
基本的赋值运算符:=
扩展的赋值运算符:+=,-=,*=,/=,%=
+=: a+=20;相当于a = (a的数据类型)(a + 20);
/* * 赋值运算符: * A:基本 = * B:扩展 +=,-=,*=,... * * +=: * a+=20; * 相当于 * a = (a的数据类型)(a + 20); */ public class OperatorDemo { 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); } }
4. 关系运算符
==,!=,>,>=,<,<=
关系运算符的结果都是boolean型,也就是要么是true,要么是false。
* * 关系运算符: * ==,!=,>,>=,<,<= * 关系运算符的结果是boolean类型。 * * 注意: * 千万不要把==写成= */ public class OperatorDemo { 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); } }
5. 逻辑运算符
&,|,^,!
&&,||
逻辑运算符一般用于连接boolean类型的表达式或者值。
表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。
算术表达式:a + b
比较表达式:a == b(条件表达式)
&逻辑与:有false则false。
|逻辑或:有true则true。
^逻辑异或:相同为false,不同为true。
!逻辑非:非false则true,非true则false。
特点:偶数个不改变本身。
/* * 逻辑运算符:用于连接关系表达式。 * &,|,^,! * &&,|| * * 与:& 有false则false * 或:| 有true则true * 异或:^ 相同则false,不同则true。(男女朋友) * 非:! true则false,false则true */ public class Demo5{ 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 } }
注意:
&&和&的区别?
a:最终结果一样。
b:&&具有短路效果。左边是false,右边不执行。
&是无论左边是false还是true,右边都会执行
||和|的区别?
a:最终结果一样
b:||具有短路效果.左边是true,右边不执行
|是无论左边是false还是true,右边都会执行
/* * &&和&的结果一样 * ||和|的结果一样 * * &&和&的区别: * &&如果左边是false,右边不执行。 * &无论左边是true还是false,右边都会执行。 */ public class Demo6{ 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); } }
6. 三元运算符
(关系表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
获取两个数中大数。
int x=3,y=4,z;
z = (x>y)?x:y;//z变量存储的就是两个数的大数
/* * 三元运算符: * * 格式: * (关系表达式)?表达式1:表达式2; * 执行流程: * A:计算关系表达式的值,看是true还是false * B:如果是true,表达式1就是运算结果 * 如果是false,表达式2就是运算结果 */ public class Demo7{ public static void main(String[] args) { int a = 10; int b = 20; int c = (a > b) ? a : b; System.out.println("c:" + c); } }
比较两个数是否相等
/* * 三元运算符的练习 * 比较两个整数是否相同 */ public class Demo8{ public static void main(String[] args) { // 定义两个int类型的变量 int a = 10; int b = 20; boolean flag = (a == b) ? true : false; // boolean flag = (a == b); System.out.println(flag); } }
获取三个数的最大值
/* * 获取三个整数中的最大值 */ public class Demo9{ public static void main(String[] args) { // 定义三个int类型的变量 int a = 10; int b = 30; int c = 20; // 先比较两个整数的大值 int temp = ((a > b) ? a : b); int max = ((temp > c) ? temp : c); System.out.println("max:" + max); } }
7.键盘录入
import java.util.Scanner; /* * 为了提高程序的灵活性,我们就把数据改进为键盘录入。 * 如何实现键盘录入呢?目前我们只能使用JDK提供的类Scanner。 * 这个使用的步骤,目前大家记住就可以了。 * * 使用步骤: * A:导包 * import java.util.Scanner; * 类中的顺序:package > import > class * B:创建对象 * Scanner sc = new Scanner(System.in); * C:接收数据 * int i = sc.nextInt(); */ public class ScannerDemo1 { public static void main(String[] args) { //创建键盘录入数据的对象 Scanner sc = new Scanner(System.in); //接收数据 System.out.println("请录入一个整数:"); int i = sc.nextInt(); //输出数据 System.out.println("i:"+i); } }
键盘录入练习
获取三个数的最大值
import java.util.Scanner; /* * 键盘录入三个数据,获取这三个数据中的最大值 */ public class ScannerDeom2{ public static void main(String[] args) { // 创建对象 Scanner sc = new Scanner(System.in); // 接收数据 System.out.println("请输入第一个数据:"); int a = sc.nextInt(); System.out.println("请输入第二个数据:"); int b = sc.nextInt(); System.out.println("请输入第三个数据:"); int c = sc.nextInt(); // 如何获取三个数据的最大值 int temp = (a > b ? a : b); int max = (temp > c ? temp : c); System.out.println("max:" + max); } }