赋值运算符
符号: =
(1)当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
(2)支持连续赋值。
扩展赋值运算符: +=, -=, *=, /=, %=
//赋值运算符:= += -= *= /= %=
class GetValue{
public static void main(String[] args) {
int i1 = 10;
i1 += 3;//i1 = i1 + 3;
short s = 10;
//s = s + 3;编译不通过
s = (short)(s + 1);//不建议如此实现
s += 1;//既可以实现运算,又不会更改s的数据类型。
int i2 = 12;
i2 %= 5;//i2 = i2 % 5;
System.out.println(i1);
System.out.println(s);
System.out.println(i2);//2
boolean b1 = false;
//区分好==和=的区别。
if(b1=true)
System.out.println("结果为真");
else
System.out.println("结果为假");
int i = 1;
i *= 0.1;
System.out.println(i);//0
}
}
比较运算符
比较运算符的结果都是boolean型,也就是要么是true,要么是false。
比较运算符“==”不能误写成“=” 。
逻辑运算符
&—逻辑与 | —逻辑或 !—逻辑非
&& —短路与 || —短路或 ^ —逻辑异或
逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
理解:异或,追求的是“异”!
//逻辑运算符: & && | || ! ^
class TestLogic{
public static void main(String[] args){
boolean a = true;
boolean b = false;
System.out.println(a & b);
System.out.println(a && b);
System.out.println(a | b);
System.out.println(a || b);
System.out.println(a & !b);
System.out.println(a^b);
//& 与 && 的区别:&:不管左边是true还是false,右端都会进行运算。
// &&:当左端为false时,右端不再进行运算
//以后使用时,建议使用 &&
int i1 = 10;
if(b & (i1++) > 0){
System.out.println("今天天气很晴朗");
}else{
System.out.println("难得没有雾霾");
}
System.out.println(i1);//11
int i2 = 10;
if(b && (i2++) > 0){
System.out.println("今天天气很晴朗");
}else{
System.out.println("难得没有雾霾");
}
System.out.println(i2);//10
//| 与 || 的区别:|:当左端为true时,右端照样做运算。
// ||:当左端为true时,右端不再进行运算。
//我们在使用时,选择:||
int i3 = 10;
if(a | i3++ > 0){
System.out.println("今天天气很晴朗");
}else{
System.out.println("难得没有雾霾");
}
System.out.println(i3);//11
int i4 = 10;
if(a || i4++ > 0){
System.out.println("今天天气很晴朗");
}else{
System.out.println("难得没有雾霾");
}
System.out.println(i4);//10
}
}
三元运算符
表达式1和表达式2为同种类型
三元运算符与if-else的联系与区别:
1)三元运算符可简化if-else语句
2)三元运算符要求必须返回一个结果。
3)if后的代码块可有多个语句
练习: 获取两个数中的较大数
获取三个数中的较大数
/*
三元运算符:(条件表达式)? 表达式1 : 表达式2;
要求:表达式1与表达式2为同种数据类型。
既然是运算符,就一定会有运算的结果,结果的数据类型与表达式1,2的类型一致。
三元运算符在一定程度上可以与if-else互换。(三元运算符一定可以转换为if-else,反之不成立。)
*/
案例:
class TestSanYuan{
public static void main(String[] args){
int i = 10;
int j = 20;
//此时max记录了i与j的较大值
int max = (i > j)? i : j;
//String str = (i > j)? "i大" : "j大";
String str = (i > j)? "i大" : (i == j)? "相等" : "j大";
//String str1 = (i > j)? i : "j大";
System.out.println(max);
System.out.println(str);
//互换
if(i >= j){
System.out.println("较大值为:" + i);
}else{
System.out.println("较大值为:" + j);
}
//练习:如何使用三元运算符,输出三个数中的较大值。
int m = 12;
int n = 23;
int k = -9;
int max1 = (m > n)? m : n;
int max2 = (max1 > k)? max1 : k;
System.out.println(max2);
}
}
程序流程控制
案例:
/*
1.格式:三种
2.执行if-else语句时,一定会选择其中的一个路径执行,而且也仅会选择一条路径。
*/
class TestIf1 {
public static void main(String[] args){
int age = 28;
if(age > 18){
System.out.println("你已经成年了!");
}else{
System.out.println("你还不能看成人电影!");
}
if(age > 130 || age < 0){
System.out.println("你估计不是人");
}else if(age < 30){
System.out.println("人家还很年轻,只有" + age + "岁的啦~~么么");
}else{
System.out.println("别追我了,我都有两个娃了!");
}
if(age < 30){
//1.
}else if(age < 60){
//2.
}else if(age < 100){
//3.
}else{
//4.
}
}
}
怎么获取键盘输入:
//1.导包
import java.util.Scanner;
class TestScanner{
public static void main(String[] args){
//2.创建一个Scanner类的对象
Scanner s = new Scanner(System.in);
System.out.println("请输入一个字符串:");
//3.调用此对象的相应的方法,完成键盘输入的值的获取
//next():表示从键盘获取一个字符串
String str = s.next();
System.out.println(str);
}
}
案例:if语句例题1
从键盘输入小明的期末成绩。
当成绩为100分时,奖励一辆BMW;
当成绩为(80,99]时,奖励一个台iphone5s;
当成绩为[60,80]时,奖励一本参考书;
其它时,什么奖励也没有。
/*
从键盘输入小明的期末成绩。
当成绩为100分时,奖励一辆BMW;
当成绩为(80,99]时,奖励一个台iphone5s;
当成绩为[60,80]时,奖励一本参考书;
其它时,什么奖励也没有。
1.条件判断之间可以嵌套
2. ①如果多个条件之间是“互斥”关系,多个条件语句上下顺序是自由的。
②如果多个条件之间存在“包含”关系,要求范围小的写在范围大的上面。
*/
import java.util.Scanner;
class TestIf2{
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入小明的期末成绩:(分)");
int score = s.nextInt();
if(score >100 || score < 0){
System.out.println("你输入的数值有误!");
}else{
if(score == 100){
System.out.println("奖励一辆BMW");//be my wife! MSN!
}else if(score > 80){
System.out.println("奖励一个台iphone5s");
}else if(score >= 60){
System.out.println("奖励一本参考书");
}else{
System.out.println("什么也没有");
}
}
}
}
编写程序:由键盘输入三个整数分别存入变量num1、num2、num3,对它们进行排序(使用 if-else if-else),并且从小到大输出。
/*
编写程序:由键盘输入三个整数分别存入变量num1、num2、num3,
对它们进行排序(使用 if-else if-else),并且从小到大输出。
说明:如果if-else if-else条件的执行语句块{}只有一条语句的话,那么这一对{}可以省略
建议:不要省略{}
*/
import java.util.Scanner;
class TestIf3{
public static void main(String[] args) {
//1.从键盘获取三个整数
Scanner s = new Scanner(System.in);
System.out.println("请输入第一个整数:");
int num1 = s.nextInt();
System.out.println("请输入第二个整数:");
int num2 = s.nextInt();
System.out.println("请输入第三个整数:");
int num3 = s.nextInt();
//2.对num1,num2,num3从小到大排序
System.out.println("从小到大的排序为:");
if(num1 > num2){
if(num3 > num1)
System.out.println(num2 + "," + num1 + "," + num3);
//System.out.println("helloworld");
else if(num3 < num2)
System.out.println(num3 + "," + num2 + "," + num1);
else
System.out.println(num2 + "," + num3 + "," + num1);
}else{
if(num3 > num2)
System.out.println(num1 + "," + num2 + "," + num3);
else if(num3 < num1)
System.out.println(num3 + "," + num1 + "," + num2);
else
System.out.println(num1 + "," + num3 + "," + num2);
}
}
}