Java基础(二)
运算符
1、昨天:算术运算符和三元运算符
2、赋值运算符、比较运算符、逻辑运算符
赋值运算符
1、用来赋值的符号就是赋值运算符
2、分类
1、基本的赋值运算符
= 将右边的数据赋值给左边的变量 int i = 10;
2、扩展的赋值运算符 += -= *= /= %=
int i =10; i+= 10;
符号两边的数据进行计算(+= 加法运算符 -= 减法运算),在把计算的结果赋值给左边的变量
class Demo01_赋值运算符 {
public static void main(String[] args) {
int i = 10;
i += 10;// 20
i *= 100;//2000
i /= 30;//66
i %=3;//0
i -= 1;// -1
System.out.println(i);
}
}
比较运算符
1、用来比较两个数据是否相等运算符
2、分类
== != 可以比较任意类型 ==比较基本类型比较的是数值本身
< > <= >= 只能比较整数类型、小数类型、字符类型 byte short int long char
3、返回值结果是boolean类型,要么是true要么是false
class Demo02_比较运算符 {
public static void main(String[] args) {
System.out.println(10 > 10);//false
System.out.println(10 >= 10);//true
//System.out.println("10" > 10); 字符串不能使用>号比较
System.out.println("10" == "10");//true
System.out.println((10 % 7 == 0) == true);
//'a'
System.out.println((int)'a');
System.out.println('a' == 97);
float f = 12.34F;
}
}
逻辑运算符
1、表示是是非非的值
2、比较的数据必须是boolean类型
3、返回值结果必须是boolean类型
4、短路与 && 全真为真,否则为假 [常用]
true && true true
false && true false
true && false false
false && false false
5、短路或 || 全假为假,否则为真[常用]
true || true true
false || true true
true || false true
false || false false
6、逻辑非 ! 遇真为假,遇假为真[常用]
!true false
!false true
7、逻辑与 & 和逻辑或 |
短路与 在计算第一个表达式为false的时候,就不会再去计算第二个表达式的值了,结果直接为false
短路或在计算第一个表达式为true的时候,就不会计算第二个表达式的值了,结果直接为true
逻辑与和逻辑或还会计算第二表达式的值
短路与和短路或的效率更高
class Demo03_逻辑运算符 {
public static void main(String[] args) {
boolean b1 = true;
boolean b2 = false;
System.out.println(b1 && b2);//false
System.out.println(b1 || b2);//true
//长得帅 && 有钱
// 长得帅 || 有钱
System.out.println(1 == 2 && 2 > 1);//false
System.out.println(true && 10 > 1);//true
System.out.println(!(10 % 2 == 0));//false
}
}
自增运算符
1、格式
a++ 和++a
2、a++和++a作为语句的时候,使用起来没有任何的区别,都是在a的基础上进行+1
3、在作为表达的时候才会有区别,a++ 先取a的值作为表达式的结果,在进行+1
++a的话,先进行+1,在取a的值作为表达式的结果
class Demo04_自增运算符 {
public static void main(String[] args) {
int a = 10;
//a++和++a作为语句的时候没有任何区别,都是在a的基础上+1
a++;
System.out.println(a);//11
++a;
System.out.println(a);//12
int b = 20;
System.out.println(b++);
System.out.println(b);
System.out.println(b++);//20 int temp = b; b = temp + 1;
System.out.println(b);//21
System.out.println(++b);//22
System.out.println(b);//22
int x = 10;
int y = 20;
// x = 11 y=19 x = 12 y = 18 y = 19
// 10 * 20 12 19 18
int z = (x++ * y--) + (++x * y--) + y++;
System.out.println(x);//12
System.out.println(y);//19
System.out.println(z);//446
System.out.println("------------------------------------");
int k = 10;
System.out.println(false & k++ == 0);
System.out.println(k);// && 结果是 10 & 结果是11
int m = 10;
System.out.println(true | m++ == 0);
System.out.println(m);// || 10 | 11
}
}
键盘录入
1、在程序运行过程中,可以让用户录入一些整数,保存在内存中,供我们进行使用
2、步骤
1、导包 在类上面 import java.util.Scanner;
2、创建键盘录入对象 Scanner sc = new Scanner(System.in);
3、通过对象调用方法 int i = sc.nextInt();
//导包
import java.util.Scanner;
class Demo05_键盘录入 {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请录入一个整数:");
//调用方法进行键盘录入一个整数
int x = sc.nextInt();
System.out.println("录入的值是:" + x);
}
}
分支结构
1、程序的运行方式,从上到下,从左到右
2、程序运行到某个时间点,会出现很多情况,需要把每种情况都准备好,每种情况就代表一个分支,代码写的多,程序运行的少
3、分类
if
1、if 2、if else 3、if else if else if else
switch
if的第一种形式
1、格式
if(条件表达式) {
语句体;
}
2、执行流程
1、条件表达式必须是boolean类型,结果要么是true,要么是false
2、判断条件表达式,如果是true的话,执行语句体;if结束
3、如果是false的话,什么也不会执行,if结束
import java.util.Scanner;
class Demo10_if的第一种形式 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
if(age >= 18) {
System.out.println("你可以观看此视频");
}
//这行代码一定会执行
System.out.println("记得删除哦");
}
}
if的注意事项
1、条件表达式必须是boolean类型
2、如果语句体只有一句的话,大括号可以省略不写,建议都要加上大括号
3、左大括号前面不要加分号,一般有左大括号就没有分号
class Demo11_if的注意事项 {
/*
1、条件表达式必须是boolean类型
2、如果语句体只有一句的话,大括号可以省略不写,建议都要加上大括号
3、左大括号前面不要加分号,一般有左大括号就没有分号
*/
public static void main(String[] args) {
/*int a = 10;
if(a) { a是int类型不是boolean类型
}*/
//不写大括号只能控制一句语句体,建议任何时候都给大括号加上
/*if(10 > 11)
System.out.println("是的");
System.out.println("我是第二句");
System.out.println("你好");*/
//不要加分号,加了分号,if就控制不了大括号的内容了
if(10 > 11);
{
System.out.println("是的");
}
}
}
if的第二种格式
1、格式
if(条件表达式) {
语句体1;
}else{
语句体2;
}
2、执行路程
1、判断条件表达式,要么是true,要么是false
2、如果是true的话,就会执行语句体1,ifelse结束
3、如果是false的话,就会执行语句体2,ifelse语句结束
3、说明
1、会出现语句体1和语句体2都执行的情况吗?肯定不会
2、会出现语句体1和语句体2都不执行的情况吗?肯定不会,else满足了表达式所有不满足的情况
3、语句体1和语句体2有且只会执行一个
import java.util.Scanner;
class Demo12_if的第二种格式 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的成绩:");
int grade = sc.nextInt();
if(grade >= 60) {
System.out.println("奖励兰博基尼5元代金券");
}else {
System.out.println("回家等死吧");
}
//一定会执行的代码
System.out.println("欢迎下次查询");
}
}
键盘录入字符串
1、录入一个整数 sc.nextInt()
2、录入字符串 String str = sc.nextLine();
3、比较两个字符串的数值是否相等
字符串是引用类型 == 比较的是地址
比较数值 “张三”.equals(“张三”)
import java.util.Scanner;
class Demo13_键盘录入字符串 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请录入你的姓名:");
String name = sc.nextLine();
/*if(name == "张三") { == 比较的是地址
System.out.println("相等");
}*/
if("张三".equals(name)) {
System.out.println("相等");
}
}
}
if的第三种格式
1、格式
if(条件表达式1) {
语句体1;
}els
e if(条件表达式2) {
语句体2;
}…else if(条件表达式n - 1) {
语句体n - 1;
}else {
语句体n;
}
2、执行流程
1、先判断条件表达式1,如果为true的话,执行语句体1;if 语句结束
2、如果为false的话,判断条件表达式2,如果是true的话,执行语句体2;if语句结束
…
3、如果条件表达式n- 1都为false的话,执行语句体n;if语句结束
3、说明
1、语句体1-n会都不执行吗
如果给了else 肯定不会
如果没有给else 有可能会
2、只要给了else,语句体1-n有且只会执行一个
3、如果没有给else,语句体1—n-1有可能一个都不执行
4、语句体1-n不可能执行两个以上
import java.util.Scanner;
class Demo14_if的第三种格式 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("万岁爷时候不早了,该睡觉了");
int x = sc.nextInt();
if(x == 1) {
System.out.println("王皇后准备");
}else if(x == 2) {
System.out.println("萧淑妃准备");
}else if(x == 3) {
System.out.println("武昭仪准备");
}else {
System.out.println("该选秀了");
}
System.out.println("欢迎下次光临");
}
}
class Demo15_if第三种格式的注意事项 {
public static void main(String[] args) {
/*int i = 10;
//打印的结果是1 满足第一个表达式
if(i < 10 || i > 0) {
System.out.println(1);
}else if(i == 100) {
System.out.println(2);
}else if(i == 10) {
System.out.println(3);
}else {
System.out.println(4);
}*/
//else 可以给也可以不给
int j;
int k = 10;
if(k < 10) {
j = 1;
}else if(k > 100) {
j = 2;
}else if(k == 10) {
j = 3;
}/*else {
j = 4;
}*/
//报错:有可能尚未初始化
System.out.println(j);
}
}
switch语句
1、switch 英文开关的意思 相当于开了多扇门等数据进行匹配,如果匹配上了就结束switch语句
2、格式
switch(值) {
case 常量1:
语句体1;
break;
case 常量2:
语句体2;
break;
…
case 常量n-1:
语句体n-1;
break;
default:
语句体n;
}
3、执行流程
1、值跟常量1进行匹配,如果相等,执行语句体1;break将switch语句结束
2、如果不相等,值跟常量2进行匹配,匹配成功,执行语句体2;break将switch语句结束
…
3、如果值跟常量1—常量n-1都匹配不上,执行语句体n
import java.util.Scanner;
class Demo16_switch语句 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入星期几");
int week = sc.nextInt();
switch(week) {
case 1:
System.out.println("星期1");
break;
case 2:
System.out.println("星期2");
break;
case 3:
System.out.println("星期3");
break;
case 4:
System.out.println("星期4");
break;
case 5:
System.out.println("星期5");
break;
case 6:
System.out.println("星期6");
break;
case 7:
System.out.println("星期天");
break;
default:
System.out.println("没有你输入的星期");
}
System.out.println("你好");
}
}
switch的注意事项
1、case 实例 break 破坏 default默认
2、case后面只能跟常量不能跟变量
jdk1.5之前: byte short int char
jdk1.5:枚举
jdk7:字符串常量
3、switch语句什么时候结束?
遇到break或者右大括号就结束了
4、每一个case后面都应该给一个break用来结束switch语句,如果不给的话,会出现case穿透,case穿透不是错误,有些需求会用到case穿透
5、default可以给也可以不给
如果不给的话,有可能一个语句体都不会执行
如果给了话,一定会执行语句体
6、default可以写在任何位置,但是无论写在哪个位置都是最后一个进行匹配,建议写在最后面
class Demo17_switch注意事项 {
public static void main(String[] args) {
/*switch("李四") {
// case 后面只能跟byte short int char 枚举 字符串常量 不能跟变量
case "张三":
System.out.println("第一个");
break;
}*/
/*switch(11) {
//发生了case穿透 打印了1 2 3
case 11:
System.out.println("1");
case 22:
System.out.println("2");
case 33:
System.out.println("3");
break;
case 4:
System.out.println("4");
}*/
// default可以放在任何位置,都是最后一个进行匹配的
switch(1) {
default:
System.out.println("default");
case 1:
System.out.println(2);
}
}
}