赋值运算符 =
支持链式赋值 a = b = 99
复合赋值运算符 (+= , -= , /= , *=)
short a = 10;
a += 2 与 a = a +2 相似,有区别的
a += 2 相当于a自增,不会改变本身变量数据类型
a = a +2 因为整型常量默认是int,所以a+2,自动提升数据类型为int,会报错
真正开发中,如果希望变量自增1:
方式1: i = i + 1
方式2: i += 1
方式3: i++ (推荐)
真正开发中,如果希望变量自增2:
方式1: i = i + 2
方式2: i += 2 (推荐)
比较运算符: == != > < >= <= instanceof
比较运算符的结果都是布尔类型(boolean)
逻辑运算符:运算符操作的是boolean型变量,运算结果也是boolean类型
&逻辑与运算符 && 短路与
|逻辑或运算符 || 短路或
!逻辑非运算符 ^ 逻辑异或
&和&&运算结果相同,如果符号左边是true,两个运算符都要执行右边的运算
如果符号左边是false,&仍然要执行右边的,&&不在执
行符号右边的
|和||运算结果相同, 如果符号左边是true, |仍然要执行右边的,||不在执
行符号右边的
如果符号左边是false,两个运算符都要执行右边的运算
位运算符:操作的都是数值型变量
<< >> >>>(无符号右移) & | ^ ~
<< 规律:在一定范围内,每左移一位,相当于数值*2,过犹不及(截断是让数值变的更小)
。>> 规律:在一定范围内,每右移一位,相当于数值/2,过犹不及。
。>>>:右移以后最高位拿0补
三元运算符:(条件表达式)?表达式1:表达式2
表达式1和表达式2的数据类型要一致(满足自动类型提升也可以)
三元运算符一定可以转换为if else,反之不成立
顺序结构:
前向引用
分支结构:
if(条件表达式){
执行代码块
}
if(条件表达式){
执行代码块1
}
else{
执行代码块2
}
if(条件表达式1){
执行代码块1
}
else if(条件表达式2){
执行代码块2
}
else{
执行代码快n
}
1.else:结构可选的
2.如果两个条件表达式没有公共的交集,此时两个else if结构,可以交换结构
.如果两个条件表达式有公共的交集,要求范围小的条件表达式放在条件表达式的上面,
此时两个条件表达式才有可能都被执行到
从键盘获取数据
导包
import java.util.Scanner;
实例化Scanner
调用相关方法,获取不同类型的变量
next 字符串
nextInt 整数
nextDouble double
nextFloat float
nextBoolean 布尔类型
Scanner类中没有从键盘获取char的方法
用户输入的变量类型与调用的方法类型需要一致,否则,报inputMismatchException