首页 > 编程语言 >Java基础的运算符和程序流程控制

Java基础的运算符和程序流程控制

时间:2023-10-21 21:22:34浏览次数:43  
标签:语句 Java System 程序流程 运算符 循环 println out

1. 运算符

计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:

  • 算术运算符
  • 赋值运算符
  • 关系运算符
  • 逻辑运算符
  • 三目运算符
  • 位运算符

1.1 算术运算符

算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。

算术运算符包括:+、-、*、/、%、++、--

举个例子: a=15    b=10

注意

++、--它们在变量的位置不同是有一定的区别的。

举个例子

①++在变量后面的例子:

1 public class Demo {
2     public static void main(String[] args) {
3         int a = 15;
4         //当++在后:表示:先运算、后自增
5         int b = a++;
6         System.out.println("b = " + b);
7         System.out.println("a = " + a);
8     }
9 }

结果为:

 ②++在变量前的例子:

1 public class Demo {
2     public static void main(String[] args) {
3         int a = 15;
4         //当++在后:表示:先运算、后自增
5         int b = ++a;
6         System.out.println("b = " + b);
7         System.out.println("a = " + a);
8     }
9 }

结果:

小结:

如果++或--在变量之前,可以理解成运算符很急,要先进行运算。

反之如果++或--在变量之后,可以理解成运算符不急可以后算。

 1.2 赋值运算符

Java中常见的赋值运算符包括:=、 +=、-=、/=、*=、%=

举个例子:

1.3 关系运算符

关系运算符得出的结果都是Boolean类型。Java常见的关系运算符包括:>、<、>=、<=、!=、==

举个例子:

表格中的变量  A = 10   B  = 20

 

1.4 逻辑运算符

逻辑运算符就是将多个关系运算符连接起来的运算符。得到的结果也是Boolean类型,Java常见的关系运算符包括:&&、||、!

举个例子:

表格中A = true    B = false

在判断逻辑运算符时会存在短路逻辑运算符。

短路逻辑运算符

 短路逻辑运算符的概念是当一个参与运算的操作数足以推断该表达式的值时,另一个操作数 (可能是表达式)就不会执行。

举个例子:

1 public class Demo {
2     public static void main(String[] args) {
3         int a = 10;
4         //由于与运算符只要有一个为假,结果就是为false
5         //所以当执行到  a<5 时,发现结果已经为false 便无需操作 ++a< 10
6         boolean b = (a < 5)&&(++a< 10);
7         System.out.println("a="+a);
8     }
9 }

结果为:

 1.5 三目运算符

三目运算符语法:

表达式?  值1 :  值2(当表达式为true时返回值1,当表达式为false时返回值2)

1 public class Demo {
2     public static void main(String[] args) {
3         int age = 20;
4         String str = age<18? "未成年": "成年";
5         System.out.println("str = " + str);
6     }
7 }

 结果:

后续将讲程序流程控制,而在此之前需要补充输入对象以及其方法。

输入对象

 Scanner输入对象,里面包含next()、nextDouble()、nextInt()、nextFloat()、nextByte()、nextBoolean()等方法。

next():用来输入字符串

nextDouble():用来输入double类型的浮点数

nextInt():用来输入int类型的整数

nextFloat():用来输入float类型的浮点数

nextByte():用来输入byte类型的整数

nextBoolean():用来输入boolean类型的数

 1 import java.util.Scanner;
 2 public class Test04 {
 3     public static void main(String[] args) {
 4         Scanner sc=new Scanner(System.in);//输入对象。
 5         System.out.println("请输入姓名:");
 6         String n=sc.next(); //在控制台输入的字符串 赋值给变量s
 7         System.out.println("请输入年龄:");
 8         int a=sc.nextInt();//在控制台输入整数  赋值给变量a
 9         System.out.println("你输入的内容:"+n);
10         System.out.println("你输入的年龄:"+a);
11     }
12 }

结果:

2. 程序流程控制

程序的流程控制一般分为三种:顺序执行、分支结构、循环结构

顺序执行:不加任何控制,程序会从main方法开始从上往下执行语句

分支结构:根据条件判断语句,有选择性地执行代码,在Java中提供if、switch两种格式

循环结构:重复执行某段代码。在Java中提供for、while、do......while三种格式

2.1 分支结构

 2.1.1 if分支

if分支是对条件语句进行判断,结果只可能是true或false,根据条件语句的结果不同,执行的代码语句也不相同。

2.1.2 if分支的格式

 1 第一种格式:
 2 if(条件语句){
 3     代码块;
 4 }
 5 
 6 第二种格式:
 7 if(条件语句){
 8    代码块;
 9 }else{
10    代码块;
11 }
12 
13 第三种格式:
14 if(条件语句){
15    代码块;
16 }else if(条件语句){
17    代码块; 
18 }else{
19    代码块;
20 }

①第一种分支格式:

执行流程如下图:

if 第一种形式执行流程如下:
如果 条件表达式 为true,就执行下面的语句体
如果 条件表达式 为false,就不执行

举个例子:

 1 import java.util.Scanner;
 2 
 3 public class Demo {
 4     public static void main(String[] args) {
 5        //需求:当一个人的体温大于37℃时输出体温异常
 6         Scanner sc = new Scanner(System.in);
 7         System.out.println("请输入你的体温");
 8         int temperature = sc.nextInt();
 9         if(temperature > 37){
10             System.out.println("体温异常");
11         }
12     }
13 }

当输入的体温大于37℃时的结果(即条件为trrue的结果):

当输入的体温小于37℃时的结果(即条件为false的结果):

②第二种分支格式:

 

if 第二种形式执行流程如下:
如果 条件表达式 为true,就执行下面的语句体1
如果 条件表达式 为false,就执行else下面的语句体2

举个例子:

 1 import java.util.Scanner;
 2 public class Demo {
 3     public static void main(String[] args) {
 4         // 需求:发红包,输入你钱包余额,现在要发出90元
 5         // 如果钱够触发发红包的动作,如果钱不够,则提示:余额不足。
 6         System.out.println("输入你的余额");
 7         Scanner sc = new Scanner(System.in);
 8         int money = sc.nextInt();
 9         if (money >= 90) {
10             System.out.println("发红包");
11         } else {
12             System.out.println("余额不足");
13         }
14     }
15 }

结果:

当输入的余额大于90时,会触发发红包的语句。

当输入的余额小于90时,会触发余额不足的语句。

 ③第三种格式:

if 第三种形式执行流程如下:
如果 条件表达式1 为true,就执行下面的代码1;
如果 条件表达式1 为false,就继续判断条件表达式2;

如果 条件表达式2 为true,就执行下面的语句体;
如果 条件表达式2 为false,就继续判断条件语句体3;

如果 条件表达式3 为true,就执行下面的语句体3
如果 条件表达式3 为false,就继续判断后面的表达式;

....
如果前面所有条件表达式判断都为false,就执行最后的else语句中的代码

举个例子:

 1 import java.util.Scanner;
 2 public class Demo {
 3     public static void main(String[] args) {
 4         //输入自己的考试成绩,显示所获奖励
 5         /*成绩==100分,爸爸给我买辆车
 6          成绩>=90分,妈妈给我买MP4
 7          90分>成绩>=60分,妈妈给我买本参考书
 8         成绩<60分,什么都不买*/
 9         Scanner sc = new Scanner(System.in);
10         int score = sc.nextInt();
11         if (score == 100) {
12             System.out.println("爸爸给我买辆车");
13         } else if (score >= 90) {
14             System.out.println("妈妈给我买MP4");
15         } else if (score >= 60) {
16             System.out.println("妈妈给我买本参考书");
17         } else {
18             System.out.println("什么都不买");
19         }
20     }
21 }

2.1.2 switch分支

 switch分支的作用是,通过比较值来执行决定执行哪个语句

switch执行流程:

①先执行表达式的值,再通过表达式的值与case后的值进行匹配

②与哪个case匹配时为true就执行哪个case代码,知道遇见break就跳出switch分支。

③如果全部case的值与之匹配都是false,则执行default块的代码。

switch分支循环语句:

switch (表达式){
   case "值1":
      执行代码;
      break;
   case "值2":
      执行代码;
      break;
   case "值3":
      执行代码;
      break;
   default:
      执行代码;
}

举个例子:

/*
需求:输入数字返回对应的星期
    1:星期一              
    2:星期二             
    3:星期三      
    4:星期四
    5:星期五
    6:星期六
    7:星期天
*/
 1 public class Test04 {
 2     public static void main(String[] args) {
 3         int num = 1;
 4         switch (mun){
 5             case 1:
 6                 System.out.println("星期一");
 7                 break;
 8             case 2":
 9                 System.out.println("星期二");
10                 break;
11             case 3:
12                 System.out.println("星期三");
13                 break;
14             case 4:
15                 System.out.println("星期四");
16                 break;
17             case 5:
18                 System.out.println("星期五");
19                 break;
20             case 6:
21                 System.out.println("星期六");
22                 break;
23             case 7":
24                 System.out.println("星期日");
25                 break;
26             default:
27                 System.out.println("输入的数字不对");
28         }
29     }
30 }

switch分支中容易出错的地方:

①switch中表达式是只能是byte、short、int、char类型,再jdk5后支持字符串类型(String)。

②case给出的值不允许重复,且不能是变量

③正常使用switch时,case后面不要忘记break,如果没有break语句switch会具有穿透性

这里详细讲讲switch中的穿透性:

switch穿透性:

 当switch语句执行匹配到case语句后,进入case语句发现后续没有break语句,程序会直接进入下一个case语句中,直到遇见break语句结束,或者执行完default语句也会结束。

这种语法设计也是有它的用处的,当多个case语句想要执行同一段代码时,可以利用case穿透现象,提高代码复用性。

比如:在程序中,我们想让周周二、周三、周四,都请大牛程序员来写代码。

小结:

在开发中if语句常用于范围进行判断的场景,而switch语句常用于一个值与一个值进行匹配的场景。

2.2 循环结构

循环语句用于重复执行某一段代码语句。

为什么需要循环结构?

当程序需要重复执行多次某段代码语句时,如果不运用循环结构的方法就会显得十分繁琐,并且对于管理这些代码语句也是十分不方便的,所以这时就需要使用循环结构一方面可以简化操作并且可以提高代码的复用性,提高开发效率。

Java中提供三种循环结构:for循环、while循环、do......while循环

 2.2.1 for循环

循环四要素:

①初始化部分

②循环条件部分

③循环体部分

④迭代部分

for循环语句的一般形式:

for(初始化部分;循环条件部分;迭代部分){
循环体部分
}

执行的过程为:①--->②--->③--->④--->②--->③--->④---.......---->②

练习:

使用for循环打印出:
1 2 3 4 5 6 7 8 9 10

代码:

public class Test{
    public static void main(String[] args){
         for(int i = 1; i<=10;i++){
               System.out.print(i+"\t");
         }
    }
}

2.2.2 while循环

 

循环四要素:

①初始化部分

②循环条件部分

③循环体部分

④迭代部分

while循环语句的一般形式:

初始化部分
while(循环条件部分){ 循环体部分 迭代部分 }

执行过程:① ----> ② ---> ③ ---> ④ ---> ② ---> ③ ---> ④ ---> .....---> ②

练习:

 

使用while循环打印出
1    2    3    4    5    6    7    8    9    10

 

代码:

public class Test{
    public static void main(String[] args){
         int i = 1;
         while(i <= 10){
              System.out.print(i+"\t");
              i++;
         }
    }
}

2.2.3 do......while循环

循环四要素:

①初始化部分

②循环条件部分

③循环体部分

④迭代部分

do......while循环语句一般形式:

初始化部分
do{
循环体部分
迭代部分
}while(循环条件部分); 

执行顺序:① ---> ③ ---> ④ ---> ② ---> ③ ---> ④ ---->...---> ②

练习:

使用do......while循环打印出
1    2    3    4    5    6    7    8    9    10

代码:

public class Test06 {
    public static void main(String[] args) {
        int i = 1;
        do {
            System.out.print(i+"\t");
            i++;
        }while(i<=10);
    }
}

小结:

三种循环的区别:

①执行的次数不同:对于do....while循环语句至少要执行一次,而for循环与while循环可以一次都不执行。

②初始化的语句不同:do...while循环与while循环它们初始化是在循环语句之前,而for循环是在循环语句中的。

③循环的次数不同:对于for循环来讲循环的次数是明确的,而while循环,do....while循环循环的次数是不明确的。

④判断与执行的先后顺序不同:对于for循环与while循环是先判断后执行的,而do.....while语句是先执行后判断的。

 

标签:语句,Java,System,程序流程,运算符,循环,println,out
From: https://www.cnblogs.com/gzyhrc/p/17777984.html

相关文章

  • 学习一年java思想总结
    如果你迷茫不妨看看我的思想总结java这门语言是一门非常厉害的,期初我是学python的越往后学,我就感觉不是特别喜欢。然后某天晚上我打开以前的java的一个简单项目。突然就喜欢上了,下定决心去学java。我先开始学的java基础。还是那就话java入门简单深入难,刚开始学基础语法......
  • Java基础 File 常见的成员方法(获取并遍历)—— listFiles ()
    public File[] listFiles()  →  获取当前该路径文件夹下所有内容,把所有的内容放到数组中返回Filef=newFile("E:\\Java基础资料");File[]files=f.listFiles();for(Filefile:files){//file依次表示Java基础资料文件夹里面的每一个文件或者文件夹Sys......
  • C/C++ C2679 二元“<<”: 没有找到接受“XXX”类型的右操作数的运算符(或没有可接受的
    今天在做一个C++项目时遇到了如下问题: 找了好久的百度,结果发现只要把这段报错的程序换一下位置,放到运算符重载函数的下面就可以了,因为编译器是按顺序执行的。。。 ......
  • Java基础 File 常见的成员方法(创建、删除)
     createNewFile() 方法:细节一:如果当前路径表示的文件不存在,则创建成功,方法返回true;如果当前路径表示的文件已经存在,则创建失败,方法返回false细节二:如果父级路径是不存在的,那么方法会有IOException异常细节三:createNewFile() 方法创建的一定是文件。如果路径当中不......
  • Java拾贝第八天——多线程的创建
    Java拾贝不建议作为0基础学习,都是本人想到什么写什么进程与线程多线程是实现并发机制的一种有效手段,进程和线程一样都属于并发的一个单位。(线程比进程更小)。所谓多线程是指一个进程在执行过程中可以产生多个线程。这些线程可能同时存在、同时运行。一个进程可以包含一个或多......
  • Java基础 File 常见的成员方法(判断、获取)
     length()方法的细节:只能获取文件的大小,单位是字节。如果我们想要的单位是M,G等,可以不断地除以1024       len/1024:KB  len/1024/1024:MB  len/1024/1024/1024:G如果我们要获取一个文件夹的大小,需要把这个文件夹里面所有的文件大小都累加在......
  • java Intellij IDEA
    com/shop//││├─java.f97016ab│││└─.generated││├─sell.20409de3│││└─.generated││└─sell.f9743bdb││└─.generatedDOA层:定义实体.即有哪此字段及getter、setter等方法.数据库的curdcont......
  • Java基础 File
    File对象就表示一个路径,可以是文件的路径,也可以是文件夹的路径。甚至这个路径可以是存在的,也可以是不存在的 File类常见的构造方法有三个:public File(String pathname)  →  根据文件路径创建文件对象。把字符串表示的路径变成File对象public File(String......
  • Java基础 自定义异常
    自定义异常的意义:让控制台的报错信息更加见名知意 步骤:1.定义异常类,类名要见名知意2.写继承关系。如果定义的异常是运行时异常,要继承RuntimeException;如果是编译时异常,直接继承Exception3.写空参构造4.写带参构造......
  • JavaWeb-初识Spring
    目录Spring简介Spring项目Bean管理基于xml的Bean管理创建对象属性注入基于xml+注解的Bean管理创建对象属性注入基于纯注解的Bean管理内容Spring简介Spring是什么Spring是于2003年兴起的一个轻量级的Java的开放源代码的设计层面框架......