运算符:用来对常量或者变量连接的符号,称为运算符。
表达式:用运算符连接起来的整个式子成为表达式。比如:a+10,10+20
运算符有以下五种:
1、算术运算符
2、赋值运算符
3、关系运算符
4、逻辑运算符
5、三元运算符
算术运算符:+ - * /
解释:就是连接常量变量做基本的数学运算
/ (除号):如果两个整数相除,得到的结果就是一个整数,取整数部分。
规律:如果两个整数相除,左边的数小于右边的数,那么得到的结果就是0。
只要有一边是一个小数,那么得到的结果就是小数。
注意点:
浮点类型(小数类型):在进行运算的时候有可能丢失精度。(后期可以处理精度丢失的问题)
取余(取模):%
解释:一般用于两个整数的运算,用来判断两个整数是否能够整除
得到的结果是:两个整数相除,取余数部分
规律:如果符号左边的数小于右边的数,那么得到的结果就是左边的数。
用处:判断两个数是否能够整除
public class Demo05SuanShuYunSuanFu { public static void main(String[] args) { //+ 加号 int a = 10; int b = 20; System.out.println(10 + 30); System.out.println(a + b); System.out.println(a + 100); //- 减号 System.out.println(10 - 30); System.out.println(a - b); System.out.println(a - 100); //* 乘号 System.out.println(10 * 30); System.out.println(a * b); System.out.println(a * 100); System.out.println("================"); // / 除号:如果两个整数相除,得到的结果就是一个整数,取整数部分 System.out.println(3/5);//0 System.out.println(5/3);//1 //要想得到的数是小数,只要有一边的数是小数,那么得到的结果就是小数 System.out.println(3.0/5);//0.6 System.out.println(3/5.0);//0.6 System.out.println(5.0/3);//1.6666666666666667 //取余 (取模)% System.out.println(3%5); System.out.println(5%8); } }
package cn.heima.java; /** * +的多种用法 * 1、数字相加 * 2、字符相加:拿字符在计算机底层储存对应的数据值来参与运算的 * 3、字符串相加:这里的+其实不是加法,而是字符串连接符; * 字符串和其他类型的数据作拼接,结果是字符串类型的。 */ public class Demo06Perator { 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);//10+48=58 System.out.println(a+c2);//10+97=107 System.out.println(c+c2);//48+97=145 System.out.println("---------------"); //3、字符串参与加法操作 System.out.println("hello"+a);//hello10 System.out.println("hello"+a+b);//"hello"+10="hello10",然后在和b进行拼接 System.out.println(a+b+"hello");//从左到右依次计算,先求和,再连接 } }
++,--运算
package cn.heima.java; /** * ++,--运算符:对变量做加1或者减1操作 * ++,--既可以写在变量的后面也可以写在变量的前面 * 单独使用: * ++,--无论时写在变量的前面还是后面,结果是一样的 * 和其他操作混合使用: * 如果++,--写在变量的后面,先拿变量本来的值参与操作,结束后变量做++,-- * 如果++,--写在变量的前面,先把变量做++,--,再用改变后的值参与操作*/ public class Demo07Operator { public static void main(String[] args) { int a = 10; System.out.println("a:" + a);//a:10 //单独使用 // ++a; // System.out.println("a:"+ a);//a:11 // a++; // System.out.println("a:" + a);//a:12 //参与操作使用 //int b = a++; int b = ++a; System.out.println("a:" + a); System.out.println("b" + b);//11 } }
赋值运算符:
package cn.heima.java; /** * 基本的赋值运算符:= * 扩展的赋值运算符:+=、-=、*=、/=、%= * 把左边和右边的结果赋值给左边 * 注意:左边不能是常量 * 隐含了一个强制类型转换*/ public class Demo08Operator { public static void main(String[] args) { //把10赋值给int类型的变量a int a = 10; //+=把左边和右边的数据进行运算,最后赋值给左边,左边的只能时变量 a += 10; //相当于a = a + 10 System.out.println("a:" + a);//20 System.out.println("---------------"); short s = 10; //s += 20;//相当于s = s + 20; s = (short)(s + 20); System.out.println("s:" + s); int i = 10; i *= 10; System.out.println("i=" + i); int b = 20; b /= 10;//2 相当于b = b / 10 System.out.println("b=" + b); int c = 6; c %= 7;//c = c % 7 System.out.println(c); } }
关系运算符:
package cn.heima.java; /** * 关系运算符 * ==,!=,>,<,>=,<= * 关系运算符的结果都是boolean型,也就是要么时true,要么是false * 注意事项:运算符"=="不能误写成"=" * */ public class Demo09Operator { 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); int x = 3; int y = 4; System.out.println(x == y); System.out.println(x = y);//把y赋值给x,把x的值输出 //4 boolean bb = (x == y); System.out.println(bb); //报错:Type mismatch: cannot convert from int to boolean // boolean cc = (x = y);//类型不匹配:不能从int转换为boolean int cc = (x = y); System.out.println(cc); } }
逻辑运算符:
package cn.heima.java; /** * 逻辑运算符: * 作用:逻辑运算符用于连接布尔型表达式 * 在Java中不可以写成3<x<6,应该写成 x>3 && x<6 * 基本使用:&(与),|(或),^(异或),!(非) * 与(&):有false则false * 或(|):有true则true * 异或(^):相同则false,不同则true * 非(!):true则false,false则true * */ public class Demo10Operator { 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 } }
三元运算符练习:
package cn.heima.java; /** * 三元运算符 * 基本使用: * 格式:(关系表达式)?表达式1:表达式2; * 如果条件为true,运算后的结果是表达式1; * 如果条件为false,运算后的结果是表达式2; * 示例:获取两个数中大数 * int x = 3,y = 4,z; * z=(x>y)?x:y; //z变量存储的就是两个数的大数 * */ public class Demo11Operator { public static void main(String[] args) { int a = 10; int b = 20; int c = (a>b) ? a : b; System.out.println("c="+ c); /* * 练习:比较两个数据是否相同 */ int aa = 20; int bb = 20; boolean flag = (aa==bb)?true : false; //boolean flag1 = (a == b); //false 正确答案应该是true System.out.println(flag); /* * 获取三个整数的最大值 */ //定义三个int类型的变量 int x = 10; int y = 20; int z = 30; //先比较两个整数的大值 int temp = ((x > y)? x:y); int max = ((temp > z)?temp:z); System.out.println("max:"+ max); } }