暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

day03 运算符和分支结构

amazingweiwei 2020-08-29
240
  1. 运算符:+ - *  / % ++ --

  • 算数:

%:取余

++、--:自增1,自减1

单独使用时,在前后无差别;

a++

a--

被使用时,在前后有差别

a++的值为a的值

++a的值为a+1

  • 关系:>, <, >=, <=, ==, !=

关系运算的结果为boolean型,true/false

  • 逻辑:&&, ||, !

1>    &&:短路与(并且),两边都为真,则为真,见false则false

第一个数为false时,发生短路(后面的不执行了)

||: 短路或(或者),有一边为真,则为真,见true则true

第一个数为true时,发生短路(后面不执行了)

!: 逻辑非(取反),非真则假,非假则真


2>逻辑运算符是建立在关系运算符之上

逻辑运算的结果也是boolean型

  • 赋值:=,+=, -=, *=, =, %=

简单赋值运算符:=

扩展赋值运算符:+=, -=, *=, =, %=

扩展赋值运算,自动强转

//常见面试题:
short s1 = 5;
//s1 = s1 + 10; 编译错误,必须手动强转 s1 = (short)(s1 + 10)
s1 += 10; //正确,扩展赋值运算,自动强转
  • 字符串拼接:+

1>若两边为数字,则做加法运算

2>若有一边为字符串,则做字符串拼接

String a = "" + 10 + 20 + 30;
System.out.println(a); //102030 若有一边为字符串,则做字符串拼接
  • 三目/条件运算符:

1>语法:

boolean ? 数1 : 数2;

2>执行过程

计算Boolean的值:

若为true,则整个的结果为数1;

若为false,则整个的结果为数2;

int a = 5, b = 8;
int max = a>b ? a:b;
System.out.println(max); //8 代码可读性要好
/*
闰年的判断公式:
1.能被4整除并且不能被100整除 year%4==0 && year%100!=0;
或者
2.能被400整除 year%400=0;
(year%4==0 && year%100!=0) || year%400=0;
*/
package day03;
import java.util.Scanner;
public class LeapYear {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入年份:");
int year = scan.nextInt();
System.out.println("年份: " + year);

String str = ((year%4==0 && year%100==0) || year%400 ==0) ? year+"是闰年" : year+"非闰年";
System.out.println(str);
}
}
  1. 分支结构

  • if结构:1条路

  • if...else结构:2条路

  • if...else if结构:多条路

package day03;
import java.util.Scanner;
public class ScoreLevel {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入成绩:");
int score = scan.nextInt();
System.out.println("成绩为:" + score);

if(score<0 || score >100){
System.out.println("成绩不合法");
}else if(score >=90){
System.out.println("A-优秀");
}else if(score >=80){
System.out.println("B-良好");
}else if(score >=60){
System.out.println("C-中等");
}else{
System.out.println("D-不及格");
}
}
}
  • switch..case结构:多条路

优点:效率高、结构清晰

缺点:整数、相等

break:跳出switch

package exercisesAfterClass;
import java.util.Scanner;
public class CommandBySwitch {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请选择功能: 1.显示全部记录 2.查询登录记录 0.退出");
int command = scan.nextInt();
/*
if(command == 1){
System.out.println("显示全部记录");
}else if(command == 2){
System.out.println("查询登录记录");
}else if(command == 0){
System.out.println("退出");
}else{
System.out.println("输入错误");
}
*/
switch(command){
case 1:
System.out.println("显示全部记录");
break;

case 2:
System.out.println("查询登录记录");
break;

case 0:
System.out.println("退出");

default:
System.out.println("输入参数非法");
}
}
}

任何负责的程序逻辑,都可以通过三种结构来实现:

1>顺序结构:从上往下逐行执行,每句必走

2>分支结构:有条件的执行某语句,并非每句必走

3>循环结构:


/*
任务:当日事当日毕
1.将5个经典案例重做1次
Age年龄判断程序
LeapYear闰年判断程序
Cashier收银程序
ScoreLevel成绩成绩判断程序
CommandBySwitch命令解析程序
2.课后作业
1>第二天的第10/11题
2>第三天的所有(除了第8题)
*/
package day04;
//作业讲解
public class HomeWork {
public static void main(String[] args) {
//6.根据年份和月份算天数
int years = 2000;
int month = 3;
int days = 0;
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println("days = 31");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println("days = 30");
case 2:
if((years%4==0 && years%100!=0) || years%400==0){
System.out.println("days = 29");
}else{
System.out.println("days = 28");
}
}


//5.个人所得税
double salary = 10000.0;


//4.闰年判断
int year = 2000;
if((year%4 == 0 && year%100 != 0) || year%400 ==0){
System.out.println(year + "是闰年");
}else{
System.out.println(year + "不是闰年");
}


/*
* 补充:
*1. 变量的作用域/范围:
* 从变量的声明开始,到包含它的最近的大括号结束
*2. 变量的重名问题
* 最用于重叠时,变量不能重名
*/

//2.编写三个数的排序程序
int a=8, b=4, c=1;
if(a>b){
int t = a;
a = b;
b = t;
}

if(a>c){
int t = a;
a = c;
c = t;
}

if(b>c){
int t = b;
b = c;
c = t;
}

System.out.println(a);
System.out.println(b);
System.out.println(c);
/*
//1.求两个数中的最大值
int a=5, b=8;
int max = a>b ? a:b;
System.out.println("max="+max);
*/


}
}


文章转载自amazingweiwei,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论