int x = 10;
int y = 20;
用不同的方式来交换x和y的值
一、算术运算符
+ - * / %
+ 加法 正数 连接字符串
- 减法 负数
* 乘法
/ 除法 对于整数,除法是整除
% 取余 3.8%2.2
byte short char如果进行算术运算(+,-,*,/) 得到的结果类型为int
++ --
前后之分
前++ -- 先自增减,然后取自增减以后的值再进行运算
后++ -- 先取值进行运算,运算完之后再自增减
二、关系运算符
< <= > >= == !=
数学关系 结果是true 或者 false
三、逻辑运算符
&& || !
结果是true 和 false
逻辑运算符连接逻辑表达式
短路特性:当&&连接的条件前面为false时不再计算后面的表达式
当||连接的条件前面为true时不再计算后面的表达式
四、位运算符
& | ^ ~ >>(有符号右移) >>>(无符号右移) <<
>> 循环带符号右移 右边移出的二进制位舍弃 最高位都补符号位
每向右移一位,相当于除以2 (-1除外)
向右移n位,相当于除以2的n次方
>>> 循环不带符号右移 右边移出的二进制位舍弃 最高位补0
对于负数而言,得到的结果和>>不一样
<< 循环左移 左边移出的二进制位舍弃 右边补0
每向左移一位,相当于乘以2
向左移n位,相当于乘以2的n次方
int所表示的范围是 [1<<31,-1>>>1]
int x = 32352234;
int y = 8934534;
(x&y) + ((x^y)>>1) 算平均值
x&y 得到二进制位共同拥有1的
x^y 得到不同的二进制里的1 >> 1 除以2
如何判断一个数是否是偶数
num%2==0
偶数 最末尾一位是0 奇数最末尾一位是1
(num&1) == 1 是奇数
(num&1) != 1 是偶数
int x = 0xb7;
int y = 0x73;
x&y = 51
x|y = 247
x^y = 196
~x = -184
如何从控制台输入整数:
1.在类外面导入包
import java.util.Scanner;
2.创建Scanner对象
Scanner scan = new Scanner(System.in);
3.读取一个整数
int num = scan.nextInt();
4.关闭Scanner流
scan.close();
五、三目运算符
?:
布尔表达式?表达式1:表达式2;
如果布尔表达式的结果为true则取表达式1的值,否则取表达式2的值
x&1!=0?"偶数":"奇数"
x%2==0?"偶数":"奇数"
输入一整数,输出该整数是偶数还是奇数
练习:
1.输入一个整数,输出该整数是正数 还是负数
2.输出该整数是大于0 还是等于0 还是小于0
正数 0 负数
六、赋值运算符
= 千万注意 不要和 == 混淆了
= 赋值
== 比较运算符
混合赋值语句:
x o= y; ==> x = xOy; O代表双目运算符(有两个操作数的运算符)
int a,b,c = 1;
a = b = c;
七、其它
, () [] .
() 用于控制优先级
[] 数组下标访问运算符
. 成员访问运算符
通常运算符的优先级:
算术 > 关系 > 逻辑
算术 > 位运算(除~外)
int x = 1,y = 2,z = 3;
boolean b = x+y>=3 && z-y>=x;
如果在写代码过程中不能准备地判断优先级时,加()
写代码
java的代码从下面函数开始执行(这句话是错误的)
从public static void main(String[] args){
}
语句:
1.顺序执行语句
代码一行一行执行 从上往下逐一执行
2.分支选择语句
遇到不同的情况 代码需要执行不同的分支
(1) if
if(条件表达式){
//执行代码
}
if(条件表达工){
//如果条件为true则执行此代码
}else{//否则
//条件不成立时 条件为false时执行此代码
}
用分支选择语句 输入一个整数 是偶数 还是奇数
输入一个年份,判断是闰年 还是 平年
闰年: 能被4整除 但不能被 100整除
或者 能被400整除的年份 闰年
boolean leap = year%4==0 && year%100!=0 || year%400==0;//true
year%400==0 || year%4==0 && year%100!=0;
输入一个百分制的成绩 输出等级
[100,90] 优秀
[80,90) 良好
[70,80) 中等
[60,70) 及格
[0,60) 不及格
if(条件1){
//条件1为true执行此代码
}else if(条件2){//否则 条件1为false
//条件2为true执行此代码
}else if(条件3){
}...
else{//剩下的情况
}
作业:
1. 输入一个月份
输出这个月份的季节
2. 输入年、月、日三个整数
int year = scan.nextInt();
int mon = scan.nextInt();
int day = scan.nextInt();
判断该日期是否存在
月[1-12]
1 3 5 7 8 10 12 [1,31]
4 6 9 11 [1,30]
2 [1,28] [1,29]
3. 在第2题的基础上,输出一个有效日期的下一天
4. 计算一个有效日期是当年的第几天
(2)
switch
3.条件循环语句