目录
一、算术运算符
1. 表格
运算符 | 运算 | 范例 | 结果 |
+ | 正号 | +7 | 7 |
- | 负号 | b = 11;-b | -11 |
+ | 加 | 9+9 | 18 |
- | 减 | 10-8 | 2 |
* | 乘 | 7*8 | 56 |
/ | 除 | 9/9 | 1 |
% | 取模(取余) | 11%9 | 2 |
++ ++ | 自增(前):先运算后取值 自增(后):先取值后运算 | a = 2;b = ++a a = 2;b = a++ | a = 3;b = 3 a = 3;b = 2 |
- - - - | 自减(前):先运算后取值 自减(后):先取值后运算 | a = 2;b = - -a a = 2;b = a- - | a = 1;b = 1 a = 1;b = 2 |
+ | 字符串相加 | "abc"+"def" | "abcdef" |
使用细节:
① 除法(/)
System.out.println(10 / 4);
//输出2,因为10和4都是int型数据,结果为int型
System.out.println(10.0 / 4);
//输出2.5,因为10.0是double型,故结果为double型
double d = 10 / 4;
System.out.println(d);
//输出2.0,因为10/4计算得int型结果2,然后将2转换为double型得2.0
② 取模(%)
%的本质:a % b = a - a / b * b
③ 自增(++)用法同自减(- -)
int j = 8;
int k = j++; // k = j;j = j + 1
System.out.println("k = " + k + "j = " + j) // 结果:k = 8; j = 9
int x = 8;
int y = ++x; // x = x + 1;y = x;
System.out.println("y = " + y + "x = " + x) // 结果:x = 9; y = 9
2. 练习题:
int i = 1;
i = i++; //(1) temp = i;(2)i = i + 1;(3)i = temp;
System.out.println(i); //输出1
int x = 1;
x = ++x; //(1)x = x + 1;(2)temp = x;(3)x = temp;
System.out.println(x); //输出2
//定义一个变量保存华氏温度,华氏温度转换为摄氏温度的公式为:5/9*(华氏温度-100)
//算出华氏温度对应的摄氏温度
double a = 234.5;
double b = 5.0 / 9 * (a - 100);
//注意是5.0不是5 因为int型的精度比较低,导致最后的结果为零
System.out.println("对应的温度为" + b);
二、 关系运算符
1. 表格
运算符 | 运算 | 范例 | 结果 |
= = | 相等于 | 8 = = 7 | false |
! = | 不等于 | 8!=7 | true |
< | 小于 | 8<7 | false |
> | 大于 | 8>7 | true |
< = | 小于等于 | 8<=7 | false |
> = | 大于等于 | 8> =7 | true |
instanceof | 检查是否是类的对象 | "lhh" instanceof String | true |
使用细节:
① 关系运算符的结果都是boolean型,true 或者 false。
② 关系运算符组成的表达式叫做关系表达式。
③ 比较运算符“= =”不能误写成“=”。
三、逻辑运算符
1. 表格
a | b | a&b(逻辑与) | a&&b(短路与) | a|b(逻辑或) | a||b(短路或) | !a(取反) | a^b(逻辑异或) |
true | true | true | true | true | true | false | false |
true | false | false | false | true | true | false | true |
false | true | false | false | true | true | true | true |
false | false | false | false | false | false | true | false |
使用细节:
① && 和 & 使用区别
&&短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false。
&逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低。
在开发当中,一般都是用短路与&&,效率高。
② | | 和 | 使用区别
| | 短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高。
| 逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低。
在开发当中,一般都是用短路或| |,效率高。
2. 练习题
boolean x = true;
boolean y = false;
short z = 46;
if(z++ == 46)&&(y = true) z++; //注意 y = true 是赋值,为true
if(x = false)||(++z == 49) z++; //注意 x = false 是赋值,为true
System.out.println("z=" + z); //结果z= 50
四、赋值运算符
1. 介绍
基本赋值运算符: =
复合赋值运算符:
+ = ;- =;* =;/ =;%=;等
2.细节特点
(1)运算顺序从右往左。
(2)赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值。
(3)符合赋值运算符等价于下面的效果:a += 3 //a = a + 3。
(4)符合赋值运算符会进行类型转换。
byte b = 3;
b += 2; //等价于b = (byte)(b + 2);
b++; //等价于b = (byte)(b + 1);
五、三元运算符
1. 基本语法
条件表达式 ? 表达式1:表达式2;
运算规则:
(1)如果条件表达式为true,运算后的结果是表达式1;
(2)如果条件表达式为false,运算后的结果是表达式2。
2. 使用细节
(1)表达式1和表达式2要为可以赋给接受变量的类型(或者可以自动转换)
(2)三元运算符可以转为if--else语句
if res = a > b ? a++;--b; //等价于下面
if (a > b) res = a++;
else res = --b;
练习题:求三个数中的最大值
int a = 10;
int b = 20;
int c = 30;
//方法一
int temp = a > b ? a : b;
int lagest = temp > c ? temp : c;
System.out.println("a,b,c当中最数的是" + lagest);
//方法二
int lagest = (a > b ? a : b) > c ? (a > b ? a : b) : c;
System.out.println("a,b,c当中最数的是" + lagest);
六、运算符优先级
1. 表格
. () {} ; , | |
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 | = *= /= %= |
+= *= <<= >>= | |
>>>= &= ^= |= |
优先级从上到下依次减退。
(1)() {}等
(2)单目运行 + + - -
(3)算术运算符
(4)位移运算符
(5)比较运算符
(6)逻辑运算符
(7)三元运算符
(8)赋值运算符
七、标识符的命名规则和规范
1. 标识符的命名规则
(1)由26个英文字母大小写,0-9,_或$组成。
(2)数字不可以开头。
(3)不可以使用关键字和保留字,但是可以包含关键字和保留字。
(4)Java中严格区分大小写,长度无限制。
(5)标识符不能包含空格。
2. 标识符命名规范
(1)包名:多单词组成时所有字母都小写:aaa.bbb.ccc
(2)类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz[大驼峰]
(3)变量名、方法名:多单词组成是,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz[小驼峰,简称 驼峰法]
(4) 常量名:所有字母都大写。多单词时,每个单词都用下划线链接:XXX_YYY_ZZZ
(5)其他的规范之后补充。
八、键盘输入语句
1. 步骤
(1)导入该类的所在包,java.util.*(*在此为Scanner)。
(2)创建该类对象(声明变量)。
(3)调用里面的功能。
import java.util.Scanner;
public class Input {
public static void main(String[] args){
Scanner oneScanner = new Scanner(System.in);
System.out.println("请输入姓名:");
String name = oneScanner.next();
System.out.println("请输入性别:");
String gender = oneScanner.next();
System.out.println("请输入年龄:");
int age = oneScanner.nextInt();
System.out.println("请输入薪资:");
double sal = oneScanner.nextDouble();
System.out.println("姓名:" + name + " 性别:" + gender
+" 年龄:"+ age + " 薪资:" + sal);
}
}
九、进制
对于整数,有四种表示方式:
1. 二进制:0,1,满2进1,以0b或0B开头。
2. 十进制:0-9,满10进1。
3. 八进制:0-7,满8进1,以数字0开头表示。
4. 十六进制:0-9及A(10)-F(15),满16进1,以0x或者0X开头表示,其中A-F不区分大小写。
十、原码、反码、补码(重点 难点)
1. 二进制的最高位十符号位:0表示正数,1表示负数。
2. 正数的原码、反码,补码都一样。
3. 负数的反码 = 它的原码符号位不变,其它位取反。
4. 负数的补码 = 它的反码 + 1,负数的反码 = 负数的补码 - 1。
5. 0的反码,补码都是0。
6. java没有无符号数,换言之,java中的数都是有符号的。
7. 在计算机运算的时候,都是以补码的方式来运算的。
8. 当我们看运算结果时候,要看他的原码。
十一、位运算符
java当中有7个位运算(&、|、^、~、>>、<<和>>>)
分别十按位与&、按位或|、按位异或^、按位取反~,算术右移>>,算术左移<<,逻辑右移(无符号右移)>>>,它们的运算规则:
十按位与&:两位全是1,结果为1,否则为0
按位或|:两位有一个是1,结果为1,否则为0
按位异或^:两位一个是1,一个是0,结果为1,否则为0
按位取反~:0变1,1变0
算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位
算术左移<<:符号位不变,低位补0
逻辑右移(无符号右移)>>>:低位溢出,高位补0(注意:没有<<<符号)