[JAVA] 2. Java中的控制流

Posted modai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[JAVA] 2. Java中的控制流相关的知识,希望对你有一定的参考价值。

1. 比较运算符

与大多数的编程语言中的比较运算符一样,主要包含了== != >= <= < >这六种比较运算符。

2. 逻辑运算符

与大多数的编程语言中的比较运算符一样,主要包含了! && ||这三种逻辑运算符,非,并,或。

这些逻辑运算符拥有截断的效果,即当前者满足一定条件,后者就不去考虑了。

3. 条件语句

在条件语句中,如果代码块中只有一条语句的话,就不需要使用花括号了,这时,可以将else if;else等放在与if同缩进的位置。

简化编码

  1. 当定义了一个逻辑变量的时候,可以直接通过比较运算符定义逻辑变量的值。如isHot = (tmep>30)
  2. 三元运算符:和其他编程语言一样。

项目:FizzBuzz

自己的实现:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        //FizzBuzz
        Scanner scanner = new Scanner(System.in);
        System.out.print("输入一个数字: ");
        byte inputNumber = scanner.nextByte();
        final byte THREE = 3;
        final byte FIVE = 5;
        final byte FIFTEEN = 15;

        String result = inputNumber % FIFTEEN == 0 ? "FizzBuzz" : (inputNumber % FIVE == 0 ? "Buzz" : (inputNumber % THREE == 0 ? "Fizz" : String.valueOf(inputNumber)));
        System.out.println(result);
    }
}

要注意的是,把特殊的放在首位进行判断,如果把对15整除放在后面,会导致,Fizz或Buzz的首先输出。

//Mosh的解决方法
//这里对FizzBuzz这一情况是通过&&进行的判断
//然后为了让代码更DRY,将FizzBuzz的判断放在了Fizz判断之后,将其当作了子判断。
//by the way,个人认为这样不够DRY,我们可以这么写
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        //FizzBuzz
        Scanner scanner = new Scanner(System.in);
        System.out.print("输入一个数字: ");
        int inputNumber = scanner.nextInt();
        final byte THREE = 3;
        final byte FIVE = 5;
        String result = "";
        if(inputNumber%THREE==0)
            result+="Fizz";
        if (inputNumber%FIVE==0)
            result+="Buzz";
        if (result.equals(""))
            result = String.valueOf(inputNumber);
        System.out.println(result);
    }
}

个人觉得,这样写更为DRY。

4. 循环语句

自然就是我们大家所熟知的forwhile,在我们知道循环次数的时候,最好使用for循环,反之使用while循环。

当然,提到了while,在Java中还有do...while...,它可以保证循环体至少执行一次

在while循环中,我们可以通过continuebreak来控制循环,特别是,while循环中的条件为True的时候(老生常谈)。

tip:String是一个引用类型的数据,当使用!=进行比较的时候,在JAVA中,并不会比较两者的值是否一致,它比较的是地址或是字符串对象。比较字符串的时候要使用.equals进行比较。
by the way,当然有些时候 == 起作用,是因为两个字符串为简单声明的,即通过 String a = "balabala"进行的声明,其相同的字符串共享空间。

在Java中还有一种循环,叫For-Each循环:

虽然这么叫,但是并没有像javascript一样,新增了关键字,这里依旧使用的是For作为关键字,不同的是,对于数组而言,如果要遍历数组中的每一项,可以这样写

for(TYPE item: itmes)
    do something with item.

在数组遍历上,如果不考虑数组的序号,则使用For-Each,否则,使用For


以上是关于[JAVA] 2. Java中的控制流的主要内容,如果未能解决你的问题,请参考以下文章

java缓冲字符字节输入输出流:java.io.BufferedReaderjava.io.BufferedWriterjava.io.BufferedInputStreamjava.io.(代码片段

java题 任选一个文件,使用文件输入流,将其数据读取出来,并打印到控制台!! 代码简单能够有注释

LockSupport.java 中的 FIFO 互斥代码片段

Java8 Stream流

解析 Java 源代码

(转) Java中的负数及基本类型的转型详解