14.5 逻辑运算符
逻辑与& 逻辑或| 逻辑非! 逻辑异或^
短路与&& 短路或||
14.5.1
逻辑与&,也就是并且
总结:当两个条件都为true时,则结果为true,否则为false
14.5.2
逻辑或,也就是或者
总结:当两个条件中有一个为true时,则结果为true,否则为false
14.5.3
逻辑非!,也就是取反
注意:只对boolean类型的值取反
14.5.4
逻辑异或
true ^ true ---->false
true ^ false---->true
false ^ true --->true
false ^ false --->false
14.5.5
短路与,类似于逻辑与,都表示并且
注意:1.逻辑与、短路与的执行结果一样,但是执行过程可能不同,当使用短路与时,第一个条件为false则结果为false
当有逻辑与、短路与时,建议使用短路与
14.5.6
短路或,类似于逻辑或,都表示或者
注意:1.逻辑或、短路或时执行结果一样,但是执行过程不同,当使用短路或时,第一个条件为true时,则结果为true
总结:1.逻辑运算符最终结果为boolean类型的值
2.除了逻辑非以外,剩余的逻辑运算符都是两个条件,并且两个条件都是boolean类
14.6 三目运算符
三目运算符也叫做条件运算符
语法格式:
条件 ? 代码1 : 代码2
class MyClass{ public static void main(String[] args){ String s = 10 > 100 ? "大于" : "小于等于";//三目运算符 System.out.println(s); } }
=与==、&与&&、|与||区别
4.1 =与==区别
=是赋值运算符,将右侧的值赋给左侧的变量名称
==是关系运算符,判断左边的值是否与右边的值相等,结果为boolean类型
4.2 &与&&区别
&、&&都属于逻辑运算符,都表示并且,两个执行结果相同,执行过程不同
&是逻辑与
&&是短路与
4.3 |与||区别
|、||都属于逻辑运算符,都表示或者,两个执行结果相同,但是执行过程不同
|是逻辑或
||是短路或
15.键盘接收用户输入
键盘接收用户输入
15.1操作步骤:
第一步:导入包,必须Java源文件中的第一行
import java.util.Scanner;
第二步:创建Scanner对象
Scanner input = new Scanner(System.in);
第三步:友好提示
System.out.print("请输入:");
第四步:键盘接收用户输入
int a = input.nextInt(); //注意:当运行到该条语句时,程序等待用户接收键盘输入,当输入完毕必须按回车键,并将回车之前的所有内容赋给a
double x = input.nextDouble();
String name = input.next(); //注意:在Java中,键盘接收字符串类型没有nextString(),而是使用next()
String s = input.next(); //注意:在java中,键盘不能直接接收字符类型,而是先接收字符串类型,然后在字符串中获取第0个位置中的值,使用charAt(0)
char sex = s.charAt(0);
boolean b = input.nextBoolean();
import java.util.Scanner; //导包 class Input1{ public static void main(String[] args){ //键盘输入某个人的信息(名字、性别、年龄、婚否) Scanner input = new Scanner(System.in); //创建Scanner对象 System.out.print("请输入姓名:"); //友好提示 String name = input.next(); //注意:在Java中,键盘接收字符串类型没有nextString(),而是使用next() System.out.print("请输入性别:"); String s = input.next(); //注意:在java中,键盘不能直接接收字符类型,而是先接收字符串类型,然后在字符串中获取第0个位置中的值,使用charAt(0) char sex = s.charAt(0); System.out.print("请输入年龄:"); int age = input.nextInt(); System.out.print("请输入婚否(已婚为true,未婚为false):"); boolean b = input.nextBoolean(); } }
16.选择结构
程序流程控制有三大结构:
顺序结构:从上至下按顺序依次执行
选择结构
循环结构
16.1选择结构
16.1.1 if选择结构
语法格式:
if(条件){
代码块
}
import java.util.*; class If01{ public static void main(String[] args){ //练习1:假如考试成绩在95分以上则有奖励 Scanner input = new Scanner(System.in); System.out.print("请输入考试成绩:"); double a = input.nextDouble(); if(a > 95){
System.out.println("有奖励");
} System.out.println("OK"); }
16.1.2 if else选择结构
语法格式:
if(条件){
代码块1
}else{
代码块2
}
class If02{ public static void main(){ Scanner input = new Scanner(System.in); System.out.print("请输入一个成绩:"); double a = input.nextDouble(); if(a > 95){ System.out.println("有奖励"); }else if(a <= 95){ System.out.println("发红包"); } } }
16.1.3多重if选择结构
当有两种或两种以上情况时,则可以使用多重if选择结构
语法格式:
if(条件1){
代码块1
}else if(条件2){
代码块2
}
注意:1.多重if选择结构中的else if(){}可以有任意多个
2.多重if选择结构中的else是可有可无的,如果编写,最多编写1个,并且只能编写在最后
16.1.4.if嵌套
import java.util.*; class If01{ public static void main(String[] args){ /* 练习1:假如成绩为100分则评为优秀, 成绩在90分以上则评为良好, 成绩在60分以上则评为及格, 否则评为不及格 */ Scanner input = new Scanner(System.in); System.out.print("请输入一个成绩:"); double a = input.nextDouble(); if(a == 100){ System.out.println("优秀"); }else if(a >= 60 && a < 90){ System.out.println("及格"); }else if(a >= 90){ System.out.println("良好"); }else{ //也就是60分以下的 System.out.println("不及格"); } } }
16.2.switch case
语法格式
switch('1'){
case '1':
System.out.println("奖励一台电脑");
break;
case '2':
case '3':
default:
}
注意:
1.表达式可以是byte short int String char 枚举
2.可以编写任意多个case
3.表达式的类型必须与常量值的类型一致
4.break表示中断switch case
5.default是可有可无的,如果有default,当所有case都不满足时则执行default
6.switch case中的break是可有可无的,当遇到break则中断switch case,当没有break则从当前匹配的case后进行穿透
7.case的顺序是可以颠倒的,不影响程序的运行结果,一般是按照顺序进行编写
8.default的顺序是可以编写在任意位置,当所有case都不满足时则执行default,建议default编写在所有case的后面
9. case是可以合并的
==与equals()区别
== 当在基本数据类型中使用比较的是真正的值
当在引用数据类型中使用比较的是地址
equals() 只对引用数据类型进行使用,并且比较的是内容
.switch case与多重if区别
相同点:
都是选择结构程序
不同点:
switch case只能做等值操作
多重if可以做等值也可以做区间
17.循环结构
17.1循环:
定义:
当做重复事情时,则可以使用循环
17.2循环特点:
循环条件、循环操作(循环体)
17.3常用的循环:
for循环、while循环、do while循环
17.3.1 for循环
17.3.1.1语法格式:
for(表达式1;表达式2;表达式3){
循环体
}
注意:1.表达式1完成变量的初始值,如:int i = 1;
2.表达式2完成循环条件的判断,当条件为true则执行循环体,否则循环结束,如:i <= 5;
3.循环体完成重复的事情
4.表达式3完成变量值的更改,如:i++
17.3.1.2 for循环注意事项
注意:1.for循环中三个表达式都可以省略,但是分号必须不能省略,则出现死循环也叫做无限循环,如果强行终止按ctrl + c
for(;;){
System.out.println("HelloWorld");
}
注意:2.当省略表达式1,则出现编译错误,解决办法:将表达式1编写在for循环上面
int i = 1;
for(;i <= 5;i++){
System.out.println(i);
}
注意:3.当省略表达式2,则出现死循环也叫做无限循环,也就是说当省略表达式2则条件默认为true
for(int i = 1;;i++){
System.out.println(i);
}
注意:4.当省略表达式3,则出现死循环,解决办法:将表达式3编写在循环体中的最后一条语句
for(int i = 1;i <= 5;){
System.out.println(i);
i++;
}
注意:5.如果在循环外输出表达式1中的值,则出现编译错误,解决办法:将表达式编写在for循环上面进行声明并赋值
int i = 1;
for(;i <= 5;i++){
System.out.println(i);
}
System.out.println(i); //6
17.3.1.3双重循环
也叫做二重循环
1.1定义:在java中,在一个循环中又包含另一个循环
for(;;){ //外层循环
for(;;){ //内层循环
}
}
结论:当外层循环执行1次,则内层循环执行1遍
选择结构、循环结构统称为控制结构
if(){
if(){
}else{
}
}
for(;;){
if(){
}
}
注意:控制语句中可以包含控制语句
17.3.2.while循环
17.3.2.1语法格式:
while(循环条件){
循环体
}
17.3.2.2执行流程:
首先判断条件,当条件为true时,则执行循环体,然后再判断条件......一直到循环条件为false时循环结束
17.3.3.do while循环
17.3.3.1特点:
先执行循环体,然后再判断条件
17.3.3.2语法格式:
do{
循环体
}while(循环条件);
3.3执行流程:
先执行循环体,然后再判断条件,但条件为true时,则继续执行循环体,再判断条件........一直到循环条件为false时循环结束
总结:三种循环异同点
1.语法格式不同
for(;;){
}
while(){
}
do{
}while();
2.执行顺序不同
for循环和while循环:先判断条件,当条件为true时,则执行循环体
do while循环:先执行循环体,然后再判断条件
3.使用情况不同
当循环次数固定时,建议使用for循环
当循环次数不固定时,建议使用while循环、do while循环
---先判断再执行循环体,则使用while循环
---先执行循环体,然后再进行判断,则使用do while循环
4.当循环条件第一次就为false时,则
for循环和while循环执行0次循环体,0次----N次
do while循环,执行1次循环体,1次---N次
补充:循环中break和continue的使用
在循环中遇到break则结束当前整个循环,执行循环外面的语句。
在循环中遇到continue语句,则结束当次循环,则继续执行下一次循环。
他们的异同点:
1.使用场合不同
break可以在switch case中或循环中使用
continue只能在循环中使用
2.作用不同
break:结束当前整个循环,执行循环外面的语句
continue:结束当次循环,则继续执行下一次循环
18.方法
18.1定义:
实现具体的一个功能
18.2方法的分类:
1.系统提供的方法:nextInt() 、nextDouble()、print()
......
- 用户自定义的方法:
(1)定义方法的语法格式:
修饰符 返回值类型 方法名称([参数列表]){}
注意:1. 在java中[]中的内容是可选择的
2.暂时将方法的修饰符编写为public static
3.返回值类型有两种:
第一种:无返回值类型,编写为void
第二种:有返回值类型
4.方法名称也就是名字,标识符
建议方法名称见名知意,最好编写为动词,如:print add
建议采用驼峰命名法,如:getName show setAge
5.方法体就是该方法实现的 具体功能
*****注意:1.用户自定义的方法,编写在类中
2.程序运行必须先执行main方法
3.方法定义好以后并不会自动执行,则必须进行方法的调用
4.一个方法可以多次进行调用
3.调用方法的语法格式:
类名.方法名称([参数列表]);
4.方法的好处:
减少代码的冗余性(重复)
5.
方法内存分析图