赞
踩
1)对于++运算符来说: 可以出现在变量前,也可以出现在变量后。 不管出现在变量前还是后,总之++执行结束之后,变量的值一定会自加1。 2)研究:++出现在变量前和变量后有什么区别? 语法:当++出现在变量前的时候,会先进行自加1的运算,然后再赋值。 int x = 100; int y = ++x; System.out.println(x); // 101 System.out.println(y); // 101 当++出现在变量后,会先做赋值运算,再自加1 int m = 20; int n = m++; System.out.println(n); // 20 System.out.println(m); // 21 (记忆小技巧:看等号=后面是现有++还是先有变量, 先有++那么就是先自加1再赋值, 先有变量那么就是先赋值再自加1 )
一定要记住一个规则:
所有的关系运算符的运算结果都是布尔类型,
不是true就是false,不可能是其他值。
在java语言中:
= : 赋值运算符
== :关系运算符,判断是否相等。
注意:关系运算符中如果有两个符号的话,两个符号之间不能有空格。
>= 这是对的, > = 这是不对的。
== 这是对的,= = 这是不对的。
& 逻辑与(可以翻译成并且) | 逻辑或(可以翻译成或者) ! 逻辑非(取反) && 短路与 || 短路或 1)非常重要: 逻辑运算符两边要求都是布尔类型,并且最终的运算结果也是布尔类型。 这是逻辑运算符的特点。 100 & true 不行,语法错误。 100 & 200 不行,没有这种语法。 true & false 这样可以。 2) & 两边都是true,结果才是true (与& 同真才为真) | 有一边是true,结果就是true (或| 有真则为真,同假才为假) 3)System.out.println(!false); // true (非假为真) System.out.println(!true); // false (非真为假) 4)关于短路与 &&,短路或 || 。(其中重点学习短路与&&,短路或||照葫芦画瓢。) ① 短路与&& 和 逻辑与 &有什么区别? 首先这两个运算符的运算结果没有任何区别,完全相同。 只不过“短路与&&”会发生短路现象。 System.out.println(true & true); // true System.out.println(true & false); // false System.out.println(false & false); // false System.out.println(true && true); // true System.out.println(true && false); // false System.out.println(false && false); // false ② 什么是短路现象呢? 使用短路与&&的时候,当左边的表达式为false的时候,右边的表达式不执行 这种现象被称为短路。 ③ 什么时候使用&&,什么时候使用& ? 从效率方面来说,&&比&的效率高一些。 因为逻辑与&不管第一个表达式结果是什么,第二个表达式一定会执行。 以后的开发中,短路与&&和逻辑与还是需要同时并存的。 大部分情况下都建议使用短路与&& 只有当既需要左边表达式执行,又需要右边表达式执行的时候,才会选择逻辑与&。 同理,对短路或|| “或”的时候只要有一边是true,结果就是true。 所以,当左边的表达式结果是true的时候,右边的表达式不需要执行,此时会短路。
基本赋值运算符? = 扩展的赋值运算符? += -= *= /= %= 很重要的语法机制: 使用扩展赋值运算符的时候,永远都不会改变运算结果类型。 byte x = 100; x += 1; x自诞生以来是byte类型,那么x变量的类型永远都是byte。不会变。 不管后面是多大的数字。 赋值运算符“=”右边优先级比较高,先执行右边的表达式 然后将表达式执行结束的结果放到左边的“盒子”当中。(赋值) —————————————————————————————————————————————————————————————————————————————————— int k = 10; k += 20; // k变量追加20 类似于k = k + 20; (“=”右边结果为30,把30重新赋值给k) System.out.println(k); // 30 ———————————————————————————————————————————————————————————————————————————————— // 研究: // i += 10 和 i = i + 10 真的是完全一样吗? // 答案:不一样,只能说相似,其实本质上并不是完全相同。 byte x = 100; // 100没有超出byte类型取值范围,可以直接赋值 System.out.println(x); // 100 // 分析:这个代码是否能够编译通过? // 错误: 不兼容的类型: 从int转换到byte可能会有损失 //x = x + 1; // 编译器检测到x + 1是int类型,int类型可以直接赋值给byte类型的变量x吗? 不可以 // 使用扩展赋值运算符可以吗? // 可以的,所以得出结论:【x += 1 和 x = x + 1不一样。】 // 其实【 x += 1 等同于:x = (byte)(x + 1); 】 x += 1; System.out.println(x); // 101 // 早就超出byte的取值范围(-128 ~ 127)了。 x += 199; // x = (byte)(x + 199); System.out.println(x); // 44 (当然会自动损失精度了。) ———————————————————————————————————————————————————————————————————————————————————— int y = 100; y += 100; System.out.println(y); // 200 y -= 100; // x = x - 100; System.out.println(y); // 100 y *= 10; // x = x * 10; System.out.println(y); // 1000 y /= 30; // x = x / 30; System.out.println(y); // 33 y %= 10; // x = x % 10; System.out.println(y); // 3 ——————————————————————————————————————————————————————————————————————————————————
三目运算符,也叫条件运算符 语法格式:布尔表达式 ? 表达式1 : 表达式2 执行原理是什么? 布尔表达式的结果为true时,表达式1的执行结果作为整个表达式的结果。 布尔表达式的结果为false时,表达式2的执行结果作为整个表达式的结果。 ____________________________________________________________ boolean sex = true; // 前面的变量的c的类型不能随意编写。 // 最终的计算结果是字符型,所以变量也需要使用char类型。 char c = sex ? '男' : '女'; System.out.println(c); //男 sex = false; System.out.println(sex ? '男' : "女"); //女 ________________________________________________________________
1、+ 运算符在java语言中有两个作用。
作用1:求和
作用2:字符串拼接
2、什么时候求和?什么时候进行字符串的拼接呢?
当 + 运算符两边都是数字类型的时候,求和。
当 + 运算符两边的“任意一边”是字符串类型,那么这个+会进行字符串拼接操作。
3、一定要记住:字符串拼接完之后的结果还是一个字符串。
4、注意:当一个表达式当中有多个加号的时候
遵循“自左向右”的顺序依次执行。(除非额外添加了小括号,小括号的优先级高)
// 大家讨论最多的一个问题。 // 如果只是针对于面试题的话,建议死记硬背。 int k = 10; k = k++; System.out.println(k); //结果为10(惊讶) 原因:java中运行结果是10; c++中运行结果是11, java和c++的编译器是不同的人开发的。原理不同。 java中: int k = 10; // k = k++; 对应的是下面三行代码 int temp = k; k++; k = temp; System.out.println(k); //10
1、输出信息到控制台: System.out.println(...); 2、在java中怎么接收键盘的输入呢? 先声明一下,这个代码看不懂很正常,因为这个代码是面向对象章节学习之后才能够理解。 这个代码以后复制粘贴就行。 前提:java.util.Scanner s = new java.util.Scanner(System.in); 接收一个整数怎么办? int num = s.nextInt(); 接收一个字符串怎么办? String str = s.next(); ———————————————————————————————————————————————————————————————————————————————— import java.util.Scanner; public class KeyInput2{ public static void main(String[] args){ // 创建键盘扫描器对象 Scanner s = new Scanner(System.in); // 输出一个欢迎信息 System.out.println("欢迎使用小型迷你计算器"); System.out.print("请输入第1个数字:"); int num1 = s.nextInt(); System.out.print("请输入第2个数字:"); int num2 = s.nextInt(); System.out.println(num1 + "+" + num2 + "=" + (num1 + num2)); } } ————————————————————————————————————————————————————————————————————————————————
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。