我是靠谱客的博主 专注飞机,最近开发中收集的这篇文章主要介绍【day3---Java流程控制】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、运算符

  • 算术运算符:+, -, *, /, %,++, –
public class Demo1 {
    public static void main(String[] args) {
        //算术运算符
        long a = 1000000000L;
        int b = 10000;
        short c = 32767;
        byte d = 127;
        System.out.println(a+b+c+d);//>>> 1000042894 long类型
        System.out.println(b+c+d); //>>> 42894  int类型
        System.out.println(c+d); // >>> 32894   int类型
        System.out.println(d*2); // >>> 254 int类型
        System.out.println("=======================================================");
        //乘除
        int num1 = 50;
        double num2 = 10.0;
        double num3 = 30;
        int num4 = 30;
        float num5 = 30;
        float num6 = 30;
        System.out.println(num1/num2); //>>> 5.0 double类型
        System.out.println(num1/num3); //>>> 1.6666666666666667  double类型
        System.out.println(num1/num4); //>>> 1 int类型
        System.out.println(num1/num5); //>>> 1.6666666 float类型
        System.out.println(num1%num3); //>>> 20.0 double类型
        System.out.println(num1%num4); //>>> 20 int类型
        System.out.println(num2/num6); //>>> 0.3333333333333333 double类型

        System.out.println("=======================================================");
        //自增(++),自减(--)
        int x = 0;
        int z = x++; //先将x的值赋值给z,然后x再进行自增;等同于z=x;x=x+1
        int y = ++x; //先x进行自增,然后再将自增以后的x的值赋值给z;等同于x=x+1;y=x
        System.out.println(x); //>>> 2
        System.out.println(y); //>>> 2
        System.out.println(z); //>>> 0

    }
}

注:

运算过程中,

  • 如果都是整型运算,且数值类型中有long类型,那么结果为long类型,否则结果都是默认的int类型;
  • 如果是整型与浮点型运算,结果也是浮点型,且浮点型中有double类型,结果为double类型,否则为float类型;
  • 浮点型与浮点型运算,结果为浮点型,浮点型中有double类型,结果为double类型,否则为float类型;
  • 自增和自减需要注意符号的位置:
    • 自增或者自减符号在变量前(++a)进行自增或自减后赋值
    • 自增或者自减符号在变量后(a–)进行赋值后自增或自减

  • 赋值运算符:=
  • 关系运算符:<,>,<=,>=,==,!=,instanceof
public class Demo2 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 30;
        System.out.println(a<b); //>>> true
        System.out.println(a>b); //>>> false
        System.out.println(a==b); //>>> false
        System.out.println(c==b+a); //>>> true
        System.out.println(c!=b+a); //>>> false
    }
}
//关系预算符返回的结果是boolean类型
  • 逻辑运算符:与(&&),或(||),非(!)
public class LogicalDemo1 {
    public static void main(String[] args) {
        //逻辑运算符
        int a = 10;
        int b = 20;
        int c = 10;
        System.out.println(a==c&&b==c); //>>>false &&两边为true才返回true,否则为false
        System.out.println(a==c||b==c); //>>>false ||两边为false才返回false,否则为true
        System.out.println(!(b==c)); //>>>false !后面结果为true,返回false;后面结果为false,返回true

        //短路运算:进行与运算时,将可能为false放在前面(符号左边)
        int d = 0;
        if(d > 1 && d++ >=1) {
            System.out.println(d);//不会输出,此时d=0
        }else if(d < 1 && ++d > 2){
            System.out.println(d); //不会输出,但是此时d=1
        }
        System.out.println(d);
        int f = 0;
        System.out.println(f++ == 1);//>>>false 先比较再自增
        int g = 0;
        System.out.println(++g == 1);//>>>true 先自增再比较
    }
}

注:

  • 逻辑与运算:&&两边为true才返回true,否则为false
    • 短路运算:进行与运算时,将可能为false放在前面(符号左边),&&运算只要遇到false就会返回false,不会再计算&&后面的那部分表达式是否为true
  • 逻辑或运算:||两边为false才返回false,否则为true
  • 逻辑非运算:!后面结果为true,返回false;后面结果为false,返回true

  • 位运算符:位与(&),位或(|),异或(^),取反(~),算术左移(<<),算术右移(>>),逻辑右移(>>>)

    • 位与(&):相同二进制位为1结果为1,否则为0
    • 位或(|):相同二进制位为0结果为0,否则为1
    • 异或(^):相同二进制位为相异时为1,否则为0
    • 取反(~):将二进制位每位都取反;~m等于 -m-1
    • 左移(<<):将二进制位整体左移,符号位不变,低位补0;m<<n 等于m×(2^n)
    • 右移(>>):将二进制位整体右移,用符号位补高位,低位丢弃;m<<n 等于m/(2^n)
    • 逻辑右移(>>>) :无符号右移,低位溢出,高位补0
public class BitwiseDemo {
    //位运算,针对二进制


    public static void main(String[] args) {
        String i = Integer.toBinaryString(10);              // i=0000 1010
        String j = Integer.toBinaryString(2);               // i=0000 0010
        System.out.println(Integer.toBinaryString(10&2));   // s=0000 0010
        System.out.println(Integer.toBinaryString(10|2));   // s=0000 1010
        System.out.println(Integer.toBinaryString(10^2));   // s=0000 1000
        System.out.println(10<<1);   // s=20
        System.out.println(10>>1);   // s=5
    }
}

  • 三元运算符: 条件 ?结果1 : 结果2
  • 扩展运算符:+=,-+,*+,/=
public class Demo{
  public static void main(String[] args){
    int a = 10;
    int b = 1;
    System.out.println(a+=b);//11 a+=b ==> a = a+b
    System.out.println(a-=b);//9  a-=b ==> a = a-b
    System.out.println(a*=b);//10 a*=b ==> a = a*b
    System.out.println(a/=b);//10 a/=b ==> a = a/b
  }
}
  • 幂运算等其他运算需要使用其他工具类来进行运算
public class Exponentiation {
    public static void main(String[] args) {
        double pow = Math.pow(2,3);
        System.out.println(pow);
    }
}

2、包机制

为了更好的组织类,java提供了包机制,用于区别类名的命名空间。

包语句语法为:

package pkg1[.pkg2[.pkg3...]];

一般是利用公司的域名倒置作为包名;例如com.baidu.www

Java中包的导入:

import package1[.package2[.package3]].classname //导出某个包里面的某个类
import package1[.package2[.package3]].* //导出某个包里面的所有类
package com.muyu.javase.operator; //package必须存在于最顶层,否则无法通过包机制导入包

//导入包com/muyu/javase/operator路径下的Demo1类
import com.muyu.javase.operator.Demo1;
//导入包com/muyu/javase/base路径下的所有类
import com.muyu.javase.base.*;
public class PackageDemo {
    public static void main(String[] args) {
        Demo1 demo1 =new Demo1();//实例化导入进来的类
    }

}

3、JavaDoc生成java的API文档

JDK帮助文档

使用javadoc来生成自己的API文档;

参数信息:

/**
 * @author  作者名
 * @version 版本号
 * @since   最早使用的JDK版本
 * @param   参数名
 * @return  返回情况
 * @throws  异常跑出情况
 */

使用DOS命名生成JavaDoc文档;

javadoc -encoding UTF-8 charset UTF-8 classname.java

使用IDEA生成JavaDoc文档:

菜单栏>>>Tools>>>Generate JavaDoc

在这里插入图片描述
在这里插入图片描述

4、Scanner(用户输入)对象

java.util.Scanner是Java5的新特征,可以通过Scanner类来获取用户输入。

基本语法:

Scanner input = new Scanner(System.in)

通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前一般需要使用hasNext()与hasNextLine()方法判断是否还有输入。

package com.muyu.javase.ProcessControl;

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入内容:");
        //如果有下一句输入就打印。
        if(scanner.hasNext()){
            System.out.println(scanner.next());
        }
        scanner.close();//IO操作结束后要记得关闭,否则会浪费资源。
    }
}

next():

  • 一定要读取到有效字符才可以结束(如果输入的是空格,next会自动将其去掉,继续等待输入);
  • 会将有效字符后面的空格作为分隔符或者结束符
  • next()不能获取带有空格的字符串
package com.muyu.javase.ProcessControl;

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入内容:"); // <<<Hello World
        //如果有下一句输入就打印。
        if(scanner.hasNext()){
            System.out.println(scanner.next());  //>>> Hello 遇到空格后进行了分隔
        }
        if(scanner.hasNext()){
            System.out.println(scanner.next());  //>>> World 输出第一次分隔后面的内容,如还有空格将继续分隔
        }
        scanner.close();//IO操作结束后要记得关闭,否则会浪费资源。
    }
}

nextLine()

  • 以Enter为结束符,输入回车键之前的所有字符都是有效字符
  • nextLine()可以输出空格
package com.muyu.javase.ProcessControl;

import java.util.Scanner;

public class ScannerDemo2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);// Hello World
        System.out.println("请输入内容:");
        if(scanner.hasNextLine()){
            System.out.println(scanner.nextLine()); // Hello World 可以输出空格
        }
       	scanner.close();//IO操作结束后要记得关闭,否则会浪费资源。
    }
}

Scanner的其他方法:

  • nextInt(),hasNextInt()
  • nextFloat(), hasNextFloat()
  • ……等等,自行查看(Ctrl + 右键 点击Scanner查看源码。在IDEA中进入源码页面后可点击左下角的Structure查看Scanner的结构。
package com.muyu.javase.ProcessControl;

import java.util.Scanner;

public class ScannerDemo3 {
    public static void main(String[] args) {
        int i = 0;
        float j = 0.0f;
        Scanner scanner = new Scanner(System.in); //输入数据
        System.out.println("请输入整数数:");
        if(scanner.hasNextInt()){
            i = scanner.nextInt();
            System.out.println("int:"+i);
        }else {
            System.out.println("error");
        }
        
        System.out.println("请输入小数:");
        //判断的是否有下一个小数
        if(scanner.hasNextFloat()){
            j = scanner.nextFloat();
            System.out.println("float:"+j);
        }else {
            System.out.println("error");
        }
        scanner.close();
    }
}

5、顺序结构

Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行;

顺序结构是最简单的算法结构

顺序结构中:语句与语句之间,框与框之间都是按照从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。

package com.muyu.javase.ProcessControl;

public class SequentialDemo {
    public static void main(String[] args) {
      //从上至下依次打印
        System.out.println(1);
        System.out.println(2);
        System.out.println(3);
        System.out.println(4);
        System.out.println(5);
    }
}
//>>>
1
2
3
4
5

6、选择结构

6.1 if选择结构
  • if 单选择结构:
if(布尔表达式){
//布尔表达式为true执行
  语句块
}
  • if双选择结构
if(布尔表达式){
  //布尔表达式为true执行
  语句块
}else{
  //布尔表达式为false执行
  语句块
}
  • if多选择结构:只会执行一个满足条件的语句块
if(布尔表达式1){
  //布尔表达式1为true执行
  语句块
}else if(布尔表达式2){
  //布尔表达式2为true执行
  语句块
}else if(布尔表达式3){
   //布尔表达式3为true执行
  语句块
}else{
  //以上布尔表达式都不为true的时候执行
  语句块
}
  • if嵌套结构(if里面嵌套if)
if(布尔表达式1){
	//布尔表达式1为true执行
	语句块
  if(布尔表达式2){
    //布尔表达式2为true执行
    语句块
  }
}
6.2 switch多选择结构

switch…case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支

switch(变量表达式){
  case value2:
  	语句
  	break;//可选
  case value2:
  	语句
  	break;//可选
  case value3: //可以有任意数量的case语句
  	语句
  	break;//可选
  default:
  	语句 //可选
}

switch 语句中的变量类型可以是

  • byte,short,int,char
  • 从javaSE7开始,变量类型支持String类型的字符串
  • case 标签必须是字符串常量或者字面量。
package com.muyu.javase.ProcessControl;

public class SwitchDemo {
    public static void main(String[] args) {
        char flag = 'A';
        switch (flag){
            case 'B':
                System.out.println(66);
                break;
            case 'A':
                // 匹配到以后,如果当前case语句没有使用break,将继续执行后面的case语句,即case穿透
                System.out.println(65);
            case 'C':
                System.out.println(67);
            default:
                System.out.println(0);
        }
    }
}

注:如需避免case穿透现象,记得在case语句后面使用break。

7、循环结构

7.1 while循环

while是一种先后测试循环结构,也是最基本的循环:

while(布尔表达式){
  //布尔表达式为true执行
  循环语句
}

只要布尔表达式为true,循环就会一直执行下去,陷入死循环。

实际业务编程要尽量避免死循环。需要一个让表达式失效的方式来结束循环。

package com.muyu.javase.ProcessControl;

public class WhileDemo {
    public static void main(String[] args) {
        //计算1+2+3+···+100的和
        int i = 0;
        int sum = 0;
        while (i <= 100){
            sum += i;
            i++;
        }
        System.out.println(sum);
    }
}

7.2 do…while 循环

do…while循环是一种后测试循环结构,相比while循环,do…while循环至少会执行一次。

对于while循环,如果满足条件就执行,不满足条件,则不进入循环。

do{
  语句块//至少执行一次,while的布尔表达式为true则继续执行。
}while(布尔表达式);

do…while循环与while循环的主要差别就是do…while循环至少会循环一次;

while循环是先判断再执行,do…while循环先执行再判断

package com.muyu.javase.ProcessControl;

public class DoWhileDemo {
    public static void main(String[] args) {
        int i = 10;
        while (i>20){
            System.out.println(i);//不输出
            i++;
        }
        System.out.println("==============");
        do {
            System.out.println(i); //10
            i++;
        }while (i>20);
    }
}

7.3 for循环

for循环语句是支持迭代 的一种通用结构,是最有效、最灵活的循环结构。

for循环执行的次数是在执行前就确定的。语法格式如下:

for(初始化变量,布尔表达式,更新变量){
  //布尔表达式为true的时候执行
  语句块
}
package com.muyu.javase.ProcessControl;

public class ForDeom {
    public static void main(String[] args) {
        //计算0-100之间的奇数和与偶数和
        int oddSum = 0;
        int eveSum = 0;
        for (int i = 0; i <= 100; i++) {
            //偶数
            if(i%2==0){
                eveSum += i;
            }else {
                //奇数
                oddSum += i;
            }
        }
        System.out.println("0-100以内的奇数和是:"+eveSum);
        System.out.println("0-100以内的偶数和是:"+oddSum);
    }
}

package com.muyu.javase.ProcessControl;

public class ForDemo2 {
    //输出1-1000之间能被5整除的数,并且每行输出3个
    public static void main(String[] args) {
        for (int i = 1; i <1000; i++) {
            if (i % 5 == 0) {
                System.out.print(i+"t");

            }
            if (i % 15 == 0) {
                System.out.println('n');
            }
            
        }
    }
}

注:

  • for 循环最先执行的是初始化步骤,可以声明一种数据类型,但是可以初始化一个或者多个循环控制的变量,也可以是空语句。
  • 之后进行布尔表达式的检测,如果为true,循环体被执行,否则循环终止,开始执行循环体后面的语句。
  • for( ; ; ){}是一个死循环。
7.4增强for循环

增强for循环是Java5引入的一种主要用于数组或集合的for循环。

语法格式:

for(声明语句:数组或者集合){
  代码块
}

如果熟悉python的,可以看出增强for循环,跟python的for循环(for i in list:)有些类似。

注:

  • 声明语句中的数据类型必须跟数组元素的数据类型匹配,且该声明的变量作用域限定在循环体内。
  • 增强for循环就是将数组中的元素逐个赋值给声明的变量进行操作,直到数组元素都遍历一遍为止。

8、break和continue

break:在任何循环语句的主体部分,均可用break控制循环的流程;break用于强行退出循环,执行break语句后,直接退出整个循环,不再进行循环操作。(break语句在switch语句中也可使用)

continue:continue语句用于提前终止某一次循环,跳过后面未执行的语句,直接进入下一次循环判断。

标签:是指后面跟一个冒号的标识符,如 lable:

java中唯一用到标签的地方就是在循环语句之前。在嵌套的循环中,在循环语句前设置标签,可以使break和continue中断指定标签的循环体。(不建议使用标签)

package com.muyu.javase.ProcessControl;

public class ForDemo4 {
    public static void main(String[] args) {
        first:for (int i = 0; i < 10; i++) {
                for (int j = 5; j > 0; j--) {
                    if (i==j){
                        System.out.println(i);
                        System.out.println(j);
                        continue first; //跳出到最外层的循环
            }
        }
        }
    }
}

最后

以上就是专注飞机为你收集整理的【day3---Java流程控制】的全部内容,希望文章能够帮你解决【day3---Java流程控制】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部