- 逻辑运算(以关系运算为基础的,结果仍然为布尔值)基本的有3个,分别是:与(&&)(短路与),或(||)(短路或),非(!)(短路非)
1.1与运算:
短路与:(关系表达式1)&&(关系表达式2)&&(关系表达式3)……(出现第一次false时,后续的运算已经不能影响结果了,则立即结束运算)
不短路的与运算:(关系表达式1)&(关系表达式2)&(关系表达式3)……(出现第一次false时,虽然后续的运算已经不能影响结果了,但仍然将与运算执行到最后!)
当所有结果为:true时,最终结果为:true,否则为:false(出现一次false即可结束运算,确定结果为false)
1.2或运算:
短路或:(关系表达式1)||(关系表达式2)||(关系表达式3)……
当所有结果为:false时,最终结果为:false,否则为:true(出现一次true即可结束运算,确定结果为true)
非短路或运算:(关系表达式1)|(关系表达式2)|(关系表达式3)……
当所有结果为:false时,最终结果为:false,否则为:true(出现一次true确定结果为true,但语句依然执行到最后)
1.3非运算
(关系表达式1)!结果是关系表达式1的布尔值取反
赋值运算
//赋值运算
//例1:
int i0=5;
int i1=i0;
int i2=5,i3=7,i7=10; //基础赋值,用“=”即可
int p=5;
//拓展赋值运算符
p+=10; //:p=p+10;
p-=5; //: p=p-5;
p*=2; //: p=p*2;
p/=8; //: p=p/8;
p%=3; //: p=p%3;
System.out.println("p:"+p);
//例2:
short s1=5;
//s1=s1+5; //错误,5的直接量为int类型,无法和short进行运算(转换);
s1+=5; //正确,拓展赋值运算,自带数据类型的强制转换功能;
System.out.println("s1"+s1);
- 3.三目运算(条件运算)
三目运算(条件运算):用于在设定的条件满足时进行某种运算,条件不满足时,进行另一种运算。(通常用于较简单的条件选择运算)
三目运算语法:(条件表达式)?(空格)(条件表达式为true是的返回值):(条件表达式为false时的返回值)
int f1=-8;
int f2=((f1>0)? 1:-1); //先判断f1>0这个关系是否成立,如果为true,把1赋给f2,如果不成立,把-1赋给f2
System.out.println("f2:" + f2);
运行结果:
f2:-1
课堂练习(闰年问题)
编写一个小程序(LeapYear),输入一个年份,判断它是否为闰年(LeapYear),闰年条件(满足下列条件之一即可):
(1)年份能够被4整除,但不能被100整除。
(2)年份能够被400整除
分析题目,要用到的Java基本知识点:Scanner;三目运算;变量的算数运算;输出函数……
解答:
package day03;
import java.util.Scanner;
public class LeapYear {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入当前年份:");
int year=input.nextInt();
boolean b1=(year%4==0)&&(year%100!=0); //年份能够被4整除,但不能被100整除。
boolean b2=(year%400==0);//年份能够被400整除
System.out.println((b1||b2)? "该年份是闰年。":"该年份不是闰年。");
}
}
运行结果:
- 控制语句:条件控制语句if
双分支结构(两条路必走其一),满足条件if时执行一个分支,不满足时执行另一个分支(什么都不做)
语法结构:
if (boolean){ //判断boolean的值,为true时,执行后续语句,为false时结束if语句
语句1
语句2
语句3
……
}
if条件控制语句,完成的功能是:当条件满足时,执行语句中的一条或者多条语句,当条件不满足时,结束if条件控制语句(什么都不做)。
程序举例:
package day03;
public class ConditionDemo01 {
public static void main(String[] args) {
int a=6;
if(a%2==0){
System.out.println(a+"是偶数");
}
}
}
运行结果:
6是偶数
- 控制语句:条件控制语句if else
双分支结构(两条路必走其一),满足条件if时执行一个分支,不满足时执行另一个分支(执行else中的语句)
if (boolean){ //判断boolean的值,为true时,执行后续语句,为false时,执行else语句
语句块1……
}else{
语句块2……
}
if else语句的含义是,当if条件满足时,执行if里面的语句,如果if条件不满足,不执行if里面的语句,转而执行else里面的语句。
程序举例:
package day03;
public class ConditionDemo02 {
public static void main(String[] args) {
int a=5;
if(a%2==0){ //表示if条件为true时,需要执行语句的开始 ,输入技巧:录入“{”后,键入回车键,eclipse会补齐“}”
System.out.println(a+"是偶数");
}else{ //表示if条件为false时,不执行if中的语句,转而执行else中的语句
System.out.println(a+"是奇数");
}
}
}
运行结果:
5是奇数
课堂练习(商店收银系统01)
小程序:商店收银系统(Casher_Sys01),需要完成的功能,提示用户输入商品单价,商品数量,付款金额,输出:找零金额(付款金额不足时提示:“您的付款金额不足,请补付:**”)
解答:
package day03;
import java.util.Scanner;
public class Casher_Sys01 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入商品的单价:");
double price=input.nextDouble();
System.out.println("请输入商品的数量:");
double num=input.nextDouble();
System.out.println("请输入付款金额:");
double money=input.nextDouble();
double totalPrice=price*num;
if(money>=totalPrice){
System.out.println("找零:"+(money-totalPrice)+"元。");
}else{
System.out.println("您的付款金额不足,请补付:"+(totalPrice-money)+"元。");
}
}
}
运行结果:
课堂练习(商店收银系统02)
小程序:商店收银系统(Casher_Sys02),需要完成的功能,提示用户输入商品单价,商品数量,付款金额,当商品总价达到300元及以上时,商品总价打88折,并且,总价抹零优惠。输出:找零金额(付款金额不足时提示:“您的付款金额不足,请补付:**”)·
解答:
package day03;
import java.util.Scanner;
public class Casher_Sys02 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入商品的单价:");
double price=input.nextDouble();
System.out.println("请输入商品的数量:");
double num=input.nextDouble();
System.out.println("请输入付款金额:");
double money=input.nextDouble();
double totalPrice=price*num;
if(totalPrice>=300){
totalPrice=(int)(totalPrice*0.88);
//如果符合打折条件,总价打折,因为int到double类型是由小到大的数据类型转换,所以可以自动转换
}
if(money>=totalPrice){
System.out.println("找零:"+(money-totalPrice)+"元。");
}else{
System.out.println("您的付款金额不足,请补付:"+(totalPrice-money)+"元。");
}
}
}
运算结果:
课堂练习(商店收银系统03)
小程序:商店收银系统(Casher_Sys03),需要完成的功能,提示用户输入商品单价,商品数量,付款金额,当商品总价每满299元,省50元,并且抹零优惠。输出:找零金额(付款金额不足时提示:“您的付款金额不足,请补付:**”)·
解答:
package day03;
import java.util.Scanner;
public class Casher_Sys03 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入商品的单价:");
double price=input.nextDouble();
System.out.println("请输入商品的数量:");
double num=input.nextDouble();
System.out.println("请输入付款金额:");
double money=input.nextDouble();
double totalPrice=price*num;
if(totalPrice>=299){
totalPrice=(int)(totalPrice-(int)(totalPrice/299)*50);
//如果符合打折条件,进行打折处理找出满了多少个299元
}
if(money>=totalPrice){
System.out.println("找零:"+(money-totalPrice)+"元。");
}else{
System.out.println("您的付款金额不足,请补付:"+(totalPrice-money)+"元。");
}
}
}
运算结果:



