运算符:
1.算数运算符
+ - * / ++ -- %(取余)
2.赋值运算符
= += -= *= /=
3.比较运算符
> < >= <= != ==
结果返回boolean类型
4.位运算符 -> 二进制
&(与): 两个都是1的情况下才是1
|(或): 只要有一个1的情况下都是1
^(抑或): 相同为0,不同为1
5.逻辑运算符
&& || ^ ! & |
符号左右两边都是boolean表达式
结果返回也是boolean表达式
&& &(一假即假): 两个都是true的时候才是true
|| |(一真即真): 只要有一个是true的时候就是true
&& || -> 短路操作
短路操作的特点:
一旦出现结果,就不在继续后续操作
6.位移运算符 -> 二进制
>> << >>>
>>: 符号位是正数则补0,负数则补1
>>>: 符号位永远只补0, 得到的只能是正数,并且是正大数
7.三元(三目)运算符
boolean表达式 ? 值1 : 值2
返回:true/false
如果返回true则表示 值1
如果返回false则表示 值2
作用:可以用来作为判断(if)
eg1:
package day02.type;
public class Demo03 {
//算数运算符
public static void main(String[] args) {
//运算符左右两边类型必须一致
double a = 1 + 3.14;
//整除问题
int b = 10 / 3;
System.out.println(b);//3
double d = 5 / 2;
System.out.println(d);//2.0
double d2 = 5.0 / 2;
System.out.println(d2);//2.5
System.out.println(b++);//3 先使用后自加
System.out.println(b);//4
System.out.println(++b);//5 先自加后使用
System.out.println(b);//5
}
}
eg2:
package day02.type;
/*
- 位运算符
*/
public class Demo04 {
public static void main(String[] args) {
//二进制
//2: 0000 0010
//4: 0000 0100
System.out.println(2 & 4);//0 -> 0000 0000
System.out.println(2 | 4);//6 -> 0000 0110
System.out.println(2 ^ 4);//6 -> 0000 0110
}
}
eg3:
package day02.type;
/*
-
逻辑运算符
*/
public class Demo05 {
public static void main(String[] args) {
int a = 11;
int b = 10;
// && -> 短路操作
System.out.println(a++ < 10 & b++ > 10 & a-- > 10);//false
System.out.println(a);// && 12 & 12
System.out.println(b);// && 10 & 11}
}
eg4:
package day02.type;
/*
-
位移运算符
*/
public class Demo06 {
public static void main(String[] args) {
System.out.println(4 >> 1);//2 相当于 ÷2
System.out.println(4 << 1);//8 相当于 *2
System.out.println(4 >>> 1);//2//-4: 原码:1000 0100 // 反码:1111 1011 // 补码:1111 1100 System.out.println(-4 >> 1);// -2 System.out.println(4 << 1);//8 相当于 *2 System.out.println(-4 >>> 1);// 2147483646
}
}
eg5:
package day02.type;
/*
-
三目运算符
*/
public class Demo07 {
public static void main(String[] args) {
int a = 20;double d = a <= 19 ? 4.0 : 5; System.out.println(d);
}
}
流程控制语句
顺序结构:系统默认的执行顺序
分支结构:条件判断 -> boolean类型
如果xxx,那就xxx
if(条件) -> 只要if,没有else
如果xxxx,那就xxx,否则就xxx
if(条件) - else
如果xxx,那就xxx,否则如果xxx,那就xxxx
if(条件) - else if()
条件:
必须是boolean类型的值
true/false
比较运算符 - > boolean类型值
a > 10 / b < 10
逻辑运算符 -> boolean类型值
a > 10 && b < 10
switch - case
适用情景: 判断是否相等时使用
1.switch后跟的是要判断的内容
2.判断的内容只能放
int/byte/short/char/String
3.case具有穿透性,只有遇到break结束
4.default相当于if - else中的else
eg1:
package day02.if_else;
/*
- if()
*/
public class Demo01If {
public static void main(String[] args) {
// 如果小明考了满分,那就买个遥控汽车
int sore = 90;
if(sore == 100) {
System.out.println(“买个遥控汽车”);
System.out.println(“买个电池”);
}
}
}
eg2:
package day02.if_else;
/*
-
if - else
*/
public class Demo02 {
public static void main(String[] args) {
// 判断一个学生成绩: 大于90分,那就打印优秀,否则就是良好
int sore = 90;
if(sore >= 90) {
//满足if条件情况下的代码
System.out.println(“优秀”);
}else {
//不满足
System.out.println(“良好”);
}}
}
eg3:
package day02.if_else;
public class Demo03 {
public static void main(String[] args) {
//如果 >= 90,标记优秀
//否则如果 >= 80,标记良好
//否则如果 >= 60,标记及格
//否则不及格
int sore = 90;
/*
if(sore >= 90) {
System.out.println("优秀");
}else {
if(sore >= 80) {
System.out.println("良好");
}else {
if(sore >= 60) {
System.out.println("及格");
}else {
System.out.println("不及格");
}
}
}
*/
if(sore >= 90) {
System.out.println("优秀");
}else if(sore >= 80) {
System.out.println("良好");
}else if(sore >= 60) {
System.out.println("及格");
}else {
System.out.println("不及格");
}
}
}
eg4:
package day02.if_else;
import java.util.Scanner;//导包
public class Demo04 {
public static void main(String[] args) {
//JDK - Scanner类,控制台,手动输入的
Scanner console = new Scanner(System.in);//是控制台对象,用ctrl+shift+0导入包
//输入小数值
//Double d = console.nextDouble();
//输入整数
//int i = console.nextInt();
//输入字符串 - String
System.out.println("请输入");
String s1 = console.nextLine();//遇到回车就结束,这句话放在控制台下面第一行
System.out.println(s1);
System.out.println("请输入");
String s = console.next();// 遇到空格就结束
System.out.println(s);
}
}
eg5:
package day02.if_else;
import java.util.Scanner;
/*
- 用户输入信息 : 商品单价xx 商品的数量xx
- 输入: 实付金额:1000
- 如果: 实付金额 > 500 * 0.8
- 输出: 找零金额:
- 如果:钱不够 -> 判断实付金额不够
*/
public class Demo05 {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
System.out.println(“请输入商品单价”);
//商品单价
int price = console.nextInt();
System.out.println(“请输入商品数量”);
//商品数量
int count = console.nextInt();
System.out.println(“请输入实付金额”);
int money =console.nextInt();
//商品总价格
double sum = price * count;
if(sum >= 500) {
sum = sum * 0.8;
}
if(money >= sum) {
System.out.println(“找零” + (money - sum) );
}else {
System.out.println(“钱不够”);
}
}
}
eg6:
package day02.if_else;
import java.util.Scanner;
/*
- 判断是不是闰年
*/
public class Demo06 {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
System.out.println(“请输入年份:”);
int year = console.nextInt();
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ) {
System.out.println(“是闰年”);
}else {
System.out.println(“不是闰年”);
}
}
}
eg7:
package day02.if_else;
import java.util.Scanner;
//判断每个月有多少天,输出天数
public class Demo07 {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
int month = console.nextInt();
/*
if(month == 1 || month == 3 || month == 5
|| month == 7 || month == 8 || month == 10
|| month == 12) {
System.out.println(“天数为31天”);
}else if(month == 4 || month == 6 || month == 9
|| month == 11) {
System.out.println(“天数为30天”);
}else if(month == 2) {
System.out.println(“天数为28天”);
}else {
System.out.println(“不是月份”);
}
*/
//switch后面跟的是要判断的month
//int/byte/short/char
//jdk 1.7 -> String
switch(month) {
//case具有穿透性的,遇到break结束
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println(“天数是31天”);
break;
case 4:
case 6:
case 9:
case 11:
System.out.println(“天数是30天”);
break;
case 2:
System.out.println(“天数是28天”);
break;
default:
System.out.println(“不是月份”);
}
}
}