Java教程

编程日记:Java学习之路(三)

本文主要是介绍编程日记:Java学习之路(三),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

3.Java分支语句

3.1数据类型转换

Java是强类型的语言,数据的类型和保存数据的变量的类型必须一致。

那么int类型的变量能不能保存byte类型的数据呢?

byte类型的变量能不能保存int类型的数据呢?

一般情况下,小的数据可以放在大的数据类型中,JVM可以实现自动类型转换。

如果要把大的数据放进小的变量中,需要手动类型转换:

变量=(变量类型)值;

int a = 10;
byte b = (byte)a;

注意:

(1)手动类型转换有可能会造成数据丢失

·大整型转变为小整型:抛弃高字节,保留低字节

·浮点转变为整型:抛弃小数部分,保留整数部分

·双精度浮点转变为单精度浮点:损失数据精度

(2)不是所有的类型都能手动进行类型转换

·boolean类型不能和其他基本类型互相转换

自动类型提升:两个数值参与运算,会发生自动类型提升

规则:参与运算的两个数值:如果有double类型,运算结果为double类型,如果有float类型,运算结果为float类型,如果有long类型,运算结果为long类型,否则运算结果为int类型

3.2运算符

运算符分为数学运算符,赋值运算符,布尔运算符,位运算符和三元运算符

数学运算符:+,-,*,/(两个整型运算的结果还是整型,小数部分被舍弃),%

赋值运算符:=:把右边的值赋给左边的变量

注意:左边必须是变量不能是表达式或者常数

赋值运算符:+=,-=,*=,/=,%=……

自增自减运算符:++,--,此类运算符不会发生自动类型提升。

布尔运算符:

==:判断两边的值是否相等,相等则值为true,否则值为false

<,<=,>,>=,!=:判断不等式是否成立

布尔运算符:

!:逻辑非:!false = true    !true = false

&&:逻辑与 同真为真

||:逻辑或 有真为真

位运算符:

QQ图片20211020181603

&、|既是位运算符,也是逻辑运算符,作用和&&、||相同。
&&、||是短路运算符
&、|是非短路运算符
短路运算:当一个子表达式的值能决定整个表达式的值时,后面的所有子表达式的值不再计算。

三元运算符:a?b:c

规则:a为布尔表达式,b和c为同一类型的表达式或值,当a为ture时,整个表达式为b的值,否则为c的值。(表达式是可以嵌套的)

3.3顺序语句

Java中的语句分为:顺序语句,分支语句,循环语句,控制语句,在Java中使用分号表示一个语句的结束。

顺序语句:

(1)赋值语句:给变量赋值

(2)输入语句:把数据传入到Java虚拟机内部

(3)输出语句:把Java虚拟机内部的数据传出

(4)函数调用语句:执行一段特定的代码

输入语句:

Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
double d = scanner.nextDouble();
String s1 = scanner.next();
String s2 = scanner.nextLine();
scanner.close();

输出语句:

System.out.println(10);
System.out.println("10");
System.out.println();
System.out.print(10);
System.out.print("10");
System.out.print();

3.4分支语句

当某个条件满足时才执行某个代码块

if语句:

if(布尔表达式){
    
}

1

if(布尔表达式){

}else{

}

2

多分支的if语句:在if和else之间,可以写若干个else if,使if语句实现多个分支:

if ( 布尔表达式 ) {……}        // 第一个分支
else if( 布尔表达式 ) {……}    // 第二个分支
else if( 布尔表达式 ) {……}    // 第三个分支
else {……}                // 第四个分支

if else语句是可以进行嵌套使用的,也就是if else语句中还可以写if else语句

switch语句:

3

if (a == 1) {
    System.out.println("a = 1");
} else if (a == 2) {
    System.out.println("a = 2");
} else if (a == 3) {
    System.out.println("a = 3");
} else {
    System.out.println("error");
}

if语句还是存在一些问题的,比如,如果所有的if/else语句中if语句中的布尔表达式都为false,会导致代码的执行效率低,这个时候我们就可以选择使用switch语句来进行选择分支

4

// ①
switch( 表达式 ) {
    case 值1: 
        // ②
    case 值2:
        // ③
    case 值3:
        // ④
}
// ⑤

switch语句表达式的类型:byte,short,int,char,java.lang.String,枚举,不能是boolean类型

case后面值的类型:必须是常量或者枚举值,不能是表达式

switch语句存在的问题:
在每一个分支中的代码块执行完以后,不会跳出switch语句,而是会继续执行下一个分支中的代码块,直到整个switch语句执行完为止。
如果想在执行完一个代码块后就跳出switch语句,需要在每个分支的代码块最后增加break语句。

如果表达式的值和case后面的值都不相等,可以使用default子句,这时会执行default后面的代码块。

switch语句总结:可以有多个case子句,最多有一个default子句,case和default子句的顺序无关紧要。

在switch语句中可以嵌套switch语句,同时也可以和if语句相互嵌套

3.5练习

(1)从键盘输入一个表示年份的正整数,输出此年份是平年还是闰年。请使用至少两种方法实现。

import java.util.Scanner;
public class Java_day03_01 {
    public static void main(String[] args){
        Scanner year = new Scanner(System.in);
        int years = year.nextInt();
        if(years%400==0){
            System.out.println("闰年");
        }
        else if (years%4==0 && years%100!=0){
            System.out.println("闰年");
        }
        else{
            System.out.println("平年");
        }
    }
}

(2)从键盘输入一个表示百分制分数的正整数,请使用switch语句实现按以下规则输出中文分数:
100~90:优 89~80:良 79~70:中
69~60:及格 59~0:不及格 其它:错误

import java.util.Scanner;

public class Java_day03_02 {
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        int num = s.nextInt();
        switch (num/10){
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:System.out.println("不及格");break;
            case 6:System.out.println("及格");break;
            case 7:System.out.println("中");break;
            case 8:System.out.println("良");break;
            case 9:
            case 10:System.out.println("优");break;
            default:System.out.println("错误");break;
        }

    }
}

(3)从键盘输入任意三个整数,请使用三元运算符找出这三个整数中的最大值并输出。

import java.util.Scanner;
public class Java_day03_03 {
    public static void main(){
        Scanner a = new Scanner(System.in);
        int q = a.nextInt();
        int w = a.nextInt();
        int e = a.nextInt();
        int max = q>w?q:w;
        max = max<e?e:max;
        System.out.println(max);
    }
}
这篇关于编程日记:Java学习之路(三)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!