(全部来自“韩顺平教育”)
运算符
一、介绍
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等
二、算术运算符
对数值类型的变量进行运算的
运算符 | 运算 |
+ | 正号 |
- | 负号 |
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取模(取余) |
++ ++ | 自增(前):先运算后取值 自增(后):先运算后取值 |
-- -- | 自减(前):先运算后取值 自减(后):先运算后取值 |
+ | 字符串相加 |
注:%本质:看公式--a % b = a - a / b * b
a % b当a是小数时,公式=a - (int)a / b * b
有小数运算时,得到的结果是近似值
三、关系运算符(又称:比较运算符)
结果都是boolean型
运算符 | 运算 |
== | 相等于 |
!= | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
instanceof | 检查是否是类的对象 |
四、逻辑运算符
用于连接多个条件(多个关系表达式),最终的结果是一个boolean值
(1)短路与&& 短路或|| 取反!
(2)逻辑与& 逻辑或| 逻辑异或^
注:
&&与&的区别:短路与&&,若第一个条件为false,则第二个条件不会判断,最终结果为false,效率高(开发中常用);逻辑与&,不管第一个条件是否为false,第二个条件都要判断,效率低
五、赋值运算符
基本赋值运算符:=
复合赋值运算符:+=、-=、*=、/=、%=
特点:
1)运算顺序从右往左
2)赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值
3)复合赋值运算符会进行类型转换
六、三元运算符
条件表达式?表达式1:表达式2;
注意:表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换)
七、运算符优先级
. () {} ; , | |
R --> L | ++ -- ~ !(data type) |
L --> R | * / % |
L --> R | + - |
L --> R | << >> >>> 位移 |
L --> R | < > <= >= instanceof |
L --> R | == != |
L --> R | & |
L --> R | ^ |
L --> R | | |
L --> R | && |
L --> R | || |
L --> R | ? : |
R --> L | = *= /= %= |
+= -= <<= >>= | |
>>>= &= ^= |= |
八、进制
对于整数,有四种表示方式:
二进制:0,1,满2进1 以0b或0B开头。
十进制:0-9,满10进1
八进制:0-7,满8进1 以数字0开头表示。
十六进制:0-9及A(10)--F(15),满16进1 以0x或0X开头表示,此处的A--F不区分大小写
第一组:
1、二进制转换成十进制:
从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和
2、八进制转换十进制:
从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和
3、十六进制转换成十进制:
从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和
第二组:
1、十进制转换成二进制:
将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。
2、十进制转换成八进制:
将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的八进制。
3、十进制转换成十六进制:
将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制。
第三组:
1、二进制转换成八进制:
从低位开始,将二进制数每三位一组,转换成对应的八进制数即可
2、二进制转换成十六进制:
从低位开始,将二进制数每四位一组,转换成对应的十六进制数即可
第四组:
1、八进制转换成二进制:
将八进制数每1位,转成对应的一个3位的二进制数即可。
2、十六进制转换成二进制:
将十六进制数每1位,转成对应的一个4位的二进制数即可。
九、位运算符(& | ^ ~ >> << >>>)
按位与&:两位全为1,结果为1,否则为0
按位或|:两位有一个位1,结果为1,否则为0
按位异或^:两位一个为0,一个为1,结果为1,否则为0
按位取反~:0 ->0 1-> 0
算术左移<<:符号位不变,低位补0
算术右移>>:低位溢出,符号位不变,并用符号位补益出的高位
>>>逻辑右移(无符号右移):低位溢出,高位补0
特别说明:没有<<<符号
十、原码、反码、补码:
对于有符号的而言:
1、二进制的最高位是符号位:0表示正数,1表示负数(口诀:0 ->0 1-> -)
2、正数的原码,反码,补码都一样(三码合一)
3、负数的反码=它的原码符号位不变,其他位取反(0 ->0 1-> 0)
4、负数的补码=它的反码+1,负数的反码=负数的补码-1
5、0的反码,补码都是0
6、Java没有无符号数,换言之,Java中的数都是有符号的
7、在计算机运算的时候,都是以补码的方式来运算的
8、当我们看运算结果的时候,要看他的原码
十一、标识符
1、概念:
Java对各种变量、方法和类等命名时使用的字符序列称为标识符(凡是自己可以起名字的地方都叫标识符)
2、命名规则(必须遵守)
①由26个英文字母大小写,0-9,_或$组成
②数字不可以开头
③不可以使用关键字和保留字,但能包含关键字和保留字
④Java中严格区分大小写,长度无限制
⑤标识符不能包含空格
3、命名规范
①包名:多单词组成时所有字母都小写
②类名、接口名:多单词组成时,所有单词的首字母大写(大驼峰)
③变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写(小驼峰)
④常量名:所有字母都大写。多单词时每个单词用下划线连接
4、关键字
关键字中所有的字母都为小写
5、保留字
现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些关键字。
byValue cast future generic inner operator outer rest var goto const
十二、键盘输入语句
使用步骤:
①导入该类所在的包,java.util.*
②创建该类对象(声明变量)
③调用里面得功能
import java.util.Scanner //表示把java.util下的Scanner类导入
public class Input{
public static void main(String[] args){
//new创建一个对象,myScanner就是Scanner类的对象
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入名字");
String name = myScanner.next(); //接收用户输入
System.out.println("请输入年龄");
int age = myScanner.nextInt(); //接收用户输入
System.out.println("请输入薪水");
double sal = myScanner.nextDouble(); //接收用户输入
System.out.println("人的信息如下:");
System.out.println("名字:" + name + "年龄:" + age + "薪水:" + sal);
}
}