2.Java中运算符与流程控制语句

976-沈同学

发表文章数:64

热门标签

首页 » Java » 正文

1.运算符

算数运算符

四则运算   加:'+' 	减:'-'   乘:'*'   除:'/' 	取余:'%'

字符参与加法运算:
其实是用该字符在计算机中存储所表示的数据值来运算的。
'a' = 97
'A' = 65
'0' = 48
字符串参与加法运算:
其实这里不是加法,而是字符串的拼接。如果数字在前可能会先进行加法运算

自增/自减运算符

单独使用一个变量时,"i++"与"++i"效果一样。
参与其他操作时:++在变量后,先把变量做赋值后++。

赋值运算符

基本的赋值运算符:=
扩展的赋值运算符号: += ,-= 等
short s = 1;
s = s +1;
System.out.println("s:"+s); 报错
-----------------------
short s = 1;
s += 1;
// 等价于 s = (short)(s+1);
System.out.println("s:"+s); 值为2
扩展的赋值运算符隐含了强制类型转换所以可以实现不变类型的自加操作

关系运算符

关系运算符: "==" "!=" ">" ">=" "<" "<="

逻辑运算符

逻辑运算符: 判断关系运算符。
	逻辑与("&&")------>有false则false
	逻辑或("||")------>有true则true
	逻辑非("!")------->true则false

三元运算符

三元运算符:
	关系表达式?表达式1:表达式2;
执行流程:
	1.计算关系表达式的值
	2.如果值是true表达式1就是结果。如果是false表达式2就是结果

2.流程控制语句

选择结构(if/switch)

流程控制语句的分类:
	1.顺序结构:从上往下依次执行。
	2.选择结构(if):
// 选择结构(if)
1: if (关系表达式) {
	语句体;
}
// A:计算关系表达式的值
// B:true执行语句体
---------------------------
2. if (关系表达式) {
	语句体1;
	}
	else{
	语句体2;
	}
---------------------------
3. if (关系表达式) {
	语句体1;
	}
	else if (表达关系式){
	语句体2;
	}
	...
	else{
	语句体n;
	}
	
---------------------------
// 例子
public class IfDemo {
    public static void main(String[] args) {
        int x = 5;
        x = 0;
        x = -5;
        int y;
        if(x>=3){
            y = 2*x+1;
        }
        else if(x<3){
            y = 7*x;
        }
        else {
            y = 0;
            System.out.println("不存在这样的x");
        }
        System.out.println("y:"+y);
    }
}
//if 练习题1需求:根据键盘录入的两个值比较,并把数值较大的那个输出
package com.scy;
import java.util.Scanner;

public class If_Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入第一个需要比较的数");
        int a = sc.nextInt();
        System.out.println("输入第一个需要比较的数");
        int b = sc.nextInt();
        if (a>b) {
            System.out.println("较大值为a");
        }
        else if (a==b){
            System.out.println("a等于b");
        }
        else {
            System.out.println("较大值为b");
        }
    }
}
// if 练习题2 需求:键盘录入学生考试成绩,请根据成绩判断该学生属于哪个级别。
//90 -100 优
//80 -90 好
//70 -80 良
//60 -70 及格
//60以下不及格
package com.scy;
import java.util.Scanner;
public class If_Test1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int score = sc.nextInt();
        if (score>100 || score<0){
            System.out.println("输入成绩有误");
        }
        else if (score>=90 && score<=100){
            System.out.println("优秀");
        }
        else if (score>=80 && score<90){
            System.out.println("好");
        }
        else if (score>=70 && score<80){
            System.out.println("良");
        }
        else if (score>=60 && score<70){
            System.out.println("及格");
        }
        else {
            System.out.println("不及格");
        }
    }
}
练习小结:代码需要测试边界数据,错误数据,正确数据,保证代码的严谨。
switch语句格式:
switch(表达式){
	case 值1:
		语句体1;
		break;
	case 值2:
		语句体2;
		break;
	case 值3:
		语句体3;
		break;
		...
	default:
		语句体 n+1;
		break;
}
// 格式解析:
	表达式:byte,short,int,char
		JDK5以后可以是枚举,JDK7以后可以是字符串。
		case后面值:用来和表达式进行匹配
		break: 中断
		default:所有都不匹配执行default内语句。

代码格式化 CTRL + shift +f

//案例: 根据键盘录入1-7,输出对应的星期一到星期日
package com.scy;
import java.util.Scanner;
public class SwitchTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入1-7整数");
        int day = sc.nextInt();
        switch (day) {
            case 1:
                System.out.println("周一");
                break;
            case 2:
                System.out.println("周二");
                break;
            case 3:
                System.out.println("周三");
                break;
            case 4:
                System.out.println("周四");
                break;
            case 5:
                System.out.println("周五");
                break;
            case 6:
                System.out.println("周六");
                break;
            case 7:
                System.out.println("周日");
                break;
            default:
                System.out.println("输入无效");
        }
    }
}

循环结构(for/while)

循环语句的组成:
	1.初始化语句:
		# 一条或者多条语句,这些语句完成一些初始化操作。
	2.判断条件语句:
		# 这是一个boolean表达式,这个表达式决定是否执行循环体
	3.循环体语句:
		# TODO
	4.控制条件语句:
		# 在一次循环结束后,下一次循环判断条件执行前。
		# 通过控制变量值来控制循环什么时候结束。
	Java中提供三种循环结构语句:
		1.for
		2.while
		3.do ... while
		
for 循环语句格式:

for (初始化语句;判断条件语句;控制条件语句){
	循环体语句;
}
// for循环的执行流程:执行初始化语句->执行判断条件语句
// ->true执行循环体语句 or 结束循环 ->执行控制条件语句
// ->执行判断条件语句。

练习1:求出1-5数据和
public class Test09 {
    public static void main(String[] args) {
        int sum = 0;
        for (int i=1; i<=5; i++){
            sum +=i;
        }
        System.out.println(sum);
    }
}
练习2:求出1-100之间数据偶数和
public class Test09 {
    public static void main(String[] args) {
        int sum = 0;
        for (int i=1; i<=100; i++){
            if (i%2==0){
                sum +=i;
            }
        }
        System.out.println(sum);
    }
}
练习3:1.控制台上输出"水仙花数” (每个位置数的立方和等于他本身)。
	  2.打印水仙花数。
public class Test09 {
    public static void main(String[] args) {
       int num = 0;
       for (int i=100;i<1000;i++){
            int ge = i%10;
            int shi = (i/10)%10;
            int bai = i/100;
            if (ge*ge*ge + shi*shi*shi + bai*bai*bai == i){
                System.out.println(i);
                num += 1
            }
       }
       System.out.println("水仙花个数:"+num);

    }
}
while循环语句格式:
	初始化语句;
	while(判断条件语句) {
		循环体语句;
		控制条件语句;
	}								//可以与for循环语句等价转换


(do...while先执行后,经过控制语句后再判断条件语句)
do .. while循环语句格式:
	初始化语句
	do {
	循环体语句;
	控制条件语句;
	}while(判断条件语句);

三种循环语句区别:
	"do..while"语句至少执行一次, 其他两个根据判断条件语句决定。
	for循环结束后,初始化的变量已经被回收,不能再次使用。(推荐使用)
	while循环结束后,初始化变量可以使用。

循环嵌套语句:(外层控制行数,内层控制列数)
例子:
public class Test09 {
    public static void main(String[] args) {
      for (int i =1;i<=5;i++){
          for (int a = 1; a<=5;a++){
              System.out.print("*");
          }
          System.out.println();
      }
    }
}
//练习1:输出如下图形
// *
// * *
// * * *
public class Test09 {
    public static void main(String[] args) {
      for (int i =1;i<=5;i++){
          for (int a = 1; a<=i;a++){
              System.out.print("*");
          }
          System.out.println();
      }
    }
}
//练习2:输出9*9乘法口诀表
public class Test09 {
    public static void main(String[] args) {
      for (int i =1;i<=9;i++){
          for (int a =1; a<=i;a++){
              System.out.print(a + "*" + i + "=" + (a*i));
              System.out.print(" ");
          }
          System.out.println();
      }
    }
}

跳转控制语句

1.break:
	switch中用于结束switch语句。
	循环语句中结束(当前)循环。
	也可以使用内层break跳出外层循环。(需要对循环体打标签)
		例子:
wc : for (int i =1;i<=9;i++){
      nc : for (int a =1; a<=i;a++){
         		if (a ==2){
               		break wc;
               			  }
			}
}
2.continue:
	这次操作不执行,继续执行下次循环操作。

异常

异常:异常就是Java程序出现了不正常的情况
案例演示异常 :
java.lang.ArithmeticException:当出现异常的运算条件时,抛出此异常。例如,一个整数“除以零”时,
抛出此类的一个实例。

Throwable 类是 Java 语言中所有错误或异常的超类。

Error 是 Throwable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。
	也就是说针对程序发生了Error的情况,Java程序本身是无能为力的,比如说:硬件层面,内存不足等
	所以针对Error的问题我们不处理

Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。
	针对程序发生了Exception的情况,是我们需要处理的问题

Exception异常分为:运行期和编译期:
	运行期异常:在编译期是不处理的,在程序运行时出现了问题,需要我们回来修改代码。
	编译期异常:在编译期就必须处理,否则就不能通过编译,就更不能正常执行了。

RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。

异常的继承体系:
Throwable
	Error:严重问题,不需要处理
	Exception:
		RuntimeException:在编译期是不处理的,在程序运行时出现了问题,需要我们回来修改代码。
		非RuntimeException:在编译期就必须处理,否则就不能通过编译,就更不能正常执行了。
public class ExceptionDemo {
    public static void main(String[] args) {
        System.out.println("程序开始执行");
        method();		//java.lang.ArithmeticException:--------访问到此中止
        System.out.println("程序结束执行");
    }
    public static void method(){
        int a = 10;
        int b = 0;
        System.out.println(a/b);
    }
}

异常的默认处理方式

Exception in thread "main" java.lang.ArithmeticException: / by zero
at com.scy13.ExceptionDemo.method(ExceptionDemo.java:12)
at com.scy13.ExceptionDemo.main(ExceptionDemo.java:5)

java.lang.ArithmeticException:异常的类名,包括包名。

/ by zero: 异常的原因,除以0

at com.scy13.ExceptionDemo.method(ExceptionDemo.java:12) :描述的是异常的位置
如果程序出现了问题,我们没有做任何处理,最终JVM会做出默认的处理。
处理方案:
	a:把异常的类名,异常的原因,异常出现的位置等信息在控制台上输出
	b:让程序

异常的处理方式1-try…catch

异常处理:
方案1:try...catch..
格式:
	try{
		可能出现的代码;
	}catch(异常类名 变量名){
		异常的处理代码;
	}
public void printStackTrace():把异常的错误信息输出在了控制台
在实际开发中,我们遇到了异常,会给出一个页面进行提示,而我们目前做不了,所以就用printStackTrace()就可以了
public class ExceptionDemo {
    public static void main(String[] args) {
        System.out.println("程序开始执行");
        method();
        System.out.println("程序结束执行");
    }
    public static void method(){
        try {
            int a = 10;
            int b = 0;
            System.out.println(a/b);
            System.out.println("你们猜猜这里可以执行么");
        }catch (ArithmeticException e){
            //System.out.println("被除数不能为0");
            e.printStackTrace();
        }
        System.out.println("你们再猜猜这里可以执行么");
    }
}

编译时异常和运行时异常区别

编译时异常:Java程序必须显示处理,否则程序就会发生错误的一个提示,无法完成编译
package com.scy13;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ExceptionDemo {
    public static void main(String[] args) {
        System.out.println("程序开始");
        method();
        System.out.println("程序结果");
    }
    public static void method(){
        try {
            String s = "2088-08-08";
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date d = sdf.parse(s);
            System.out.println(d);
        }catch (ParseException e ){
            e.printStackTrace();
        }
    }
}
运行时异常:Java程序无需显示处理,也可以和和编译时异常一样处理。不处理就执行后再处理

异常的处理方式2-throws

我们通过try...catch可以对异常进行处理了,但是并不是所有的时候我们都有权限进行异常处理。
也就是说,有些时候我们处理不了,但是这个异常是存在的,不处理也不行
Java提供了throws的处理方案

格式:
	throws 异常类名
	注意:这个格式必须跟在方法的括号后面
	注意:编译时异常是必须要进行处理的,两种处理方案:try...catch...或者throws
	
		如果你采用了throws这种方案,将来调用还要进行编译期的异常处理;
		运行时异常可以后面修改
package com.scy13;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ExceptionDemo {
    public static void main(String[] args) {
        System.out.println("程序开始");
        try{
        	method();
        }catch(ParseException e){
        	e.printStackTrace();
        }
        method2();
        System.out.println("程序结果");
    }
    //编译时异常
    public static void method() throws ParseException{
            String s = "2088-08-08";
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date d = sdf.parse(s);
            System.out.println(d);
    }
    //运行时异常
    public static void method2() throws ArithmeticException{
    	int a=10;
    	int b=0;
    	System.out.println(a/b);
    }
}
标签:

拜师教育学员文章:作者:976-沈同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《2.Java中运算符与流程控制语句》 发布于2020-03-05

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录