标签:必须 jsb boolean javase code info lse color image
算术运算符的注意问题
代码演示
public class Demo01Operator { public static void main(String[] args) { // 两个常量之间可以进行数学运算 System.out.println(20 + 30);//50 // 两个变量之间也可以进行数学运算 int a = 20; int b = 30; System.out.println(a - b); // -10 // 变量和常量之间可以混合使用 System.out.println(a * 10); // 200 int x = 10; int y = 3; //结果是商 int result1 = x / y; System.out.println(result1); // 3 //取模也叫取余,结果的符号与被模数的符号相同 int result2 = x % -3; System.out.println(result2); // 1 // int + double --> double + double --> double double result3 = x + 2.5; System.out.println(result3); // 12.5 } }
详解自增自减运算符
使用方式:
使用区别:
在单独使用的时候,前++和后++没有任何区别。也就是:++num;和num++;是完全一样的。
在混合的时候,有重大区别
代码演示
public class Demo02Operator { public static void main(String[] args) { int num1 = 10; System.out.println(num1); // 10 ++num1; // 单独使用,前++ System.out.println(num1); // 11 num1++; // 单独使用,后++ System.out.println(num1); // 12 // 与打印操作混合的时候 int num2 = 20; // 混合使用,先++,变量立刻马上变成21,然后打印结果21 System.out.println(++num2); // 21 System.out.println(num2); // 21 int num3 = 30; // 混合使用,后++,首先使用变量本来的30,然后再让变量+1得到31 System.out.println(num3++); // 30 System.out.println(num3); // 31 int num4 = 40; // 和赋值操作混合 int result1 = --num4; // 混合使用,前--,变量立刻马上-1变成39,然后将结果39交给result1变量 System.out.println(result1); // 39 System.out.println(num4); // 39 int num5 = 50; // 混合使用,后--,首先把本来的数字50交给result2,然后我自己再-1变成49 int result2 = num5--; System.out.println(result2); // 50 System.out.println(num5); // 49 int x = 10; int y = 20; // 11 + 20 = 31 int result3 = ++x + y--; System.out.println(result3); // 31 System.out.println(x); // 11 System.out.println(y); // 19 // 30++; // 错误写法!常量不可以使用++或者-- } }
比较运算符有6种关系,分别为小于、小于等于、大于、等于、大于等于、不等于。比较运算符的结果都是boolean型,也就是要么是true,要么是false。
注意事项:
代码演示
public class Demo03Operator { public static void main(String[] args) { int a = 10; int b = 20; System.out.println(a == b); // false System.out.println(a != b); // true System.out.println(a > b); // false System.out.println(a >= b); // false System.out.println(a < b); // true System.out.println(a <= b); // true // 关系运算的结果肯定是boolean类型,所以也可以将运算结果赋值给boolean类型的变量 boolean flag = a > b; System.out.println(flag); // false } }
注意事项:
“&”和“&&”的区别:
“|”和“||”的区别:
???????代码演示
public class Demo05Operator { public static void main(String[] args) { System.out.println(5 > 3 & 5 > 4); //true System.out.println(5 > 100 | 5 > 4); //true System.out.println(!(5 > 3)); //false System.out.println(!(5 < 3)); //true System.out.println(true & true); //true System.out.println(true & false); //false System.out.println(true | false); //true System.out.println(!false); //true System.out.println(!true); //false System.out.println(true ^ false); //true System.out.println(true ^ true); //false System.out.println(false ^ false); //false //重点研究逻辑与(&)和短路与(&&)的区别 int x = 100; int y = 98; int z = 99; System.out.println(x > y & x > z); //true System.out.println(x > y && x > z); //true /* * 通过测试得出,逻辑与(&)和短路与(&&)最终运行 * 结果相同那么它们有什么区别呢?请看以下代码。 */ int m = 99; int n = 100; System.out.println(m > n & m > n++); //false /* * 逻辑与(&)运算符只有当两边的操作数都是 true 的时候,* 结果才是 true,只要有一个是 false,结果必然是 false。 * 以上程序逻辑左边的表达式(m > n)显然结果是 false, * 通过左边的表达式已经可以得出结果是false 了,右边的 * 表达式没有执行的必要,那我们来看一下右边的表达式 * 有没有执行,只要输出 n 就可以了断定。 */ System.out.println("n = " + n); //101 /* * 以上程序的运行结果是 101,足以说明 n++已经执行了。 * 也说明了逻辑与运算符无论左边表达式结果是true 还 * 是 false,右边表达式一定会执行。 */ //那我们来看一下短路与(&&)是怎样的? int k = 99; int f = 100; System.out.println(k > f && k > f++); //false System.out.println("f = " + f); //100 /* * 通过以上测试得出 f++并没有执行,因为左边表达式(k > f) * 为 false,右边的表达式就不再执行了,这种现象被称为短路 * 现象。也就是说对于短路与来说,左边的表达式只要为 false, * 就会发生短路,右边表达式不再执行了。 */ } }
注意事项:
/* 赋值运算符分为: 基本赋值运算符:就是一个等号“=”,代表将右侧的数据交给左侧的变量。 int a = 30; 复合赋值运算符: += a += 3 相当于 a = a + 3 -= b -= 4 相当于 b = b - 4 *= c *= 5 相当于 c = c * 5 /= d /= 6 相当于 d = d / 6 %= e %= 7 相当于 e = e % 7 */ public class Demo { public static void main(String[] args) { //把10赋值给int类型的变量i int i = 10; System.out.println("i:" + i);//10 // += 把左边和右边的数据做加法操作,结果赋值给左边 i += 20; //i = i + 20; System.out.println("i:" + i);//i:30 //注意:扩展的赋值运算符底层隐含了强制类型转换 short s = 10; s += 20; //s = (short)(s + 20); System.out.println("s:" + s);//s:30 } }
格式:
计算方式:
/* 运算符之六:三元运算符 1.结构:(条件表达式)? 表达式1 : 表达式2 2. 说明 ① 条件表达式的结果为boolean类型 ② 根据条件表达式真或假,决定执行表达式1,还是表达式2. 如果表达式为true,则执行表达式1。 如果表达式为false,则执行表达式2。 ③ 表达式1 和表达式2要求是一致的。 ④ 三元运算符可以嵌套使用 3. 凡是可以使用三元运算符的地方,都可以改写为if-else 反之,不成立。 4. 如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符。原因:简洁、执行效率高。 */ class Demo { public static void main(String[] args) { //获取两个整数的较大值 int m = 12; int n = 5; int max = (m > n)? m : n; System.out.println(max);//12 //改写成if-else: if(m > n){ System.out.println(m);//12 }else{ System.out.println(n); } //必须同时保证表达式A和表达式B都符合左侧数据类型的要求。 double num = (m > n)? 2 : 1.0; //(m > n)? 2 : "n大";//编译错误,三元运算符的结果必须被使用。 n = 12; String maxStr = (m > n)? "m大" : ((m == n)? "m和n相等" : "n大"); System.out.println(maxStr);//m和n相等 //获取三个数的最大值 int n1 = 12; int n2 = 30; int n3 = -43; int max1 = (n1 > n2)? n1 : n2; int max2 = (max1 > n3)? max1 : n3; System.out.println("三个数中的最大值为:" + max2);//三个数中的最大值为:30 //不建议 嵌套使用,阅读性不好 //int max3 = (((n1 > n2)? n1 : n2) > n3)? ((n1 > n2)? n1 : n2) : n3; } }
???????注意事项:
public class PlusTest01 { public static void main(String[] args) { int a = 10; int b = 20; //加号两边都是 int 类型,执行求和运算 int c = a + b; /* * 以下代码虽然有两个加号,第一个加号在双引号当中, * 不起任何作用,只是一个普通字符串,第二个加号由于 * 左边操作数是一个字符串,所以这个加号一定会进行 * 字符串连接,连接之后的结果还是一个字符串。 */ System.out.println("a + b = " + c); //a + b = 30 /* * 分析以下程序的输出结果?哪些加号进行求和, * 哪些加号进行字符串连接 */ System.out.println(a + " + " + b + " = " + a + b);//10 + 20 = 1020 /* * 分析以下程序的输出结果?哪些加号进行求和, * 哪些加号进行字符串连接 */ System.out.println(a + " + " + b + " = " + (a + b));//10 + 20 = 30 //定义一个字符串类型变量 String name = "jack"; /* * 字符串拼接在实际开发中很常用,拼接的时候是有口诀, * 大家记住,将变量放到字符串当中进行拼接,可以这样 * 做:1、在拼接的位置添加一个英文双引号;2、在双引 * 号中间添加两个加号;3、把字符串变量放到两个加号 * 中间。 */ System.out.println("登录成功,欢迎" + name + "回来!");//登录成功,欢迎jack回来! } }
位运算是直接对整数的二进制进行的运算,了解就可以了。
标签:必须 jsb boolean javase code info lse color image
原文地址:https://www.cnblogs.com/wurengen/p/13231230.html