Java语言中要特别注意的地方

在循环控制中不要使用浮点数据类型来比较大小


double item = 1.0;
double sum = 0;
while(item == 0){  // 当item变为0的时候就会终止。但是实际上item只会无限接近于0成为一个死循环。
	item -= 0.1; // 变量item从1.0开始,每执行一次循环体就会减去0.1。
	sum += item;
}
System.out.println("The sum is : " + sum);

在计算机中无法使用二进制精确描述十进制整数所以只能使用近似值来表示。

取余操作; 取整操作

int i = 1 / 2; // i = 0
int i = 1 / 2.0; // 0.5  ★
int i = 1.0 / 2; // 0.5  ★
int i = 1 % 2; // 1    ★
int i = 1 % 2.0; // 1.0  ★

System.out.println(i++); 和 System.out.println(++i); 都会都本身的i造成印象,Java中是值传递

int i = 2;
System.out.println(i++); // 2 
System.out.println("i = " + i); // 3

"()"并不会对 i++ 造成优先级上的影响

  int i = 2;
  System.out.println(i++); // 2

  int num = 2;
  System.out.println((num++)); // 2

for循环的执行顺序

  for(【Initial Operation】;【Loop Condition】; 【Operation After Loop Body】){
        【Loop Body】
  }

🌈 Sequence:
1. 【Initial Operation】
2. 【Loop Condition】
3. 【Loop Body】
4. 【Operation After Loop Body】    for(【】;【】;【最后一步】){ 【】}

示例:

       Scanner input = new Scanner(System.in);
       int number, sum = 0, count;

       for(count  = 0; count < 5; System.out.println("=》 count: " + count), count++, System.out.println("-> count: " + count)){
           number = input.nextInt();
           sum += number;
       }
       System.out.println("sum is " + sum); // 14
       System.out.println("count is " + count); // 5

循环中continue注意事项

保证循环起始之后和continue之间存在sentinel卫变量的更迭,但更迭造成的结果要考虑到不要出现越界情况

    private static void getInfo01(){
        int sum = 0;
        for(int i = 0; i < 4; i ++){
            if(i % 3 == 0) continue;
            sum += i;
        }
        System.out.println("The sum is : " + sum); // The sum is : 3
    }
    
    private static void getInfo03(){  【🍎】
        int i = 0, sum = 0;
        while(i < 4){ // 最后一步 i = 3仍然会进入该循环
            i++;  // 此时 i = 3 + 1 = 4; 但是按照题目要求i是不可能取到4的
            if(i % 3 == 0) continue;;
            sum += i; // 此时结果将i=4也计算在内
        }
        System.out.println("The sum is : " + sum); // The sum is : 7
    }

   // 对于【🍎】正确改动如下
    private static void getInfo02(){
        int i = 0, sum = 0;
        while(++i < 4){  // 将++i考虑在内 不要写成 i++ 否则和【🍎】一致 
            if(i % 3 == 0) continue;
            sum += i;
        }
        System.out.println("The sum is : " + sum); // The sum is : 3
    }

分支语句同时满足只会满足首先满足的语句

        int num = 10;
        int bestG = 0;
        int secondG = 0;
        if(num > bestG){
            bestG = num;
        }else if(num > secondG){
            secondG = num;
        }
        System.out.println("bestG: " + bestG + ", secondG: " + secondG); // bestG: 10, secondG: 0

示例:

    private static void getBestAndSecondStudentInfo(){
        Scanner input = new Scanner(System.in);
        System.out.println("the number of students( >=2 ): ");
        int num = input.nextInt();

        String bestStuName = "";
        String secondStuName = "";
        int bestGrade = 0;
        int secondGrade = 0;

        String tempStuName = "";
        int tempGrade = 0;
        for(int i = 1; i <= num; i++){
            System.out.println("student's name and grade: ");
            tempStuName = input.next();
            tempGrade = input.nextInt();
            if(i == 1){
                bestGrade = tempGrade;
                bestStuName = tempStuName;
            }else if(i == 2){
                if(tempGrade > bestGrade){
                    String tn = bestStuName;
                    int tg = bestGrade;
                    bestGrade = tempGrade;
                    bestStuName = tempStuName;
                    secondStuName = tn;
                    secondGrade = tg;
                }else{
                    secondGrade = tempGrade;
                    secondStuName = tempStuName;
                }

            }else{
                if(tempGrade > bestGrade){
                    bestGrade = tempGrade;
                    bestStuName = tempStuName;
                }else if(tempGrade > secondGrade){
                    secondGrade = tempGrade;
                    secondStuName = tempStuName;
                }
            }

        }
        System.out.println("bestStudentName: " + bestStuName + ", bestGrade: " + bestGrade);
        System.out.println("secondStudentName: " + secondStuName + ", secondStudentName: " + secondGrade);
    }

//    the number of students( >=2 ):
//            4
//    student's name and grade: 
//    wangzz 91
//    student's name and grade: 
//    wangyt 99
//    student's name and grade: 
//    Felix 92
//    student's name and grade: 
//    Marry 100
//    bestStudentName: Marry, bestGrade: 100
//    secondStudentName: Felix, secondStudentName: 92

成员变量在定义之后系统会给予初始值而局部变量需要手动赋予初始值🍎

对带有返回值的方法,return语句是必须的


删除if(n < 0)即可, 这样编译器将发现不管if语句如何执行,总可以执行到return语句。

posted @ 2021-03-02 18:19  Felix_Openmind  阅读(68)  评论(0)    收藏  举报
*{cursor: url(https://files-cdn.cnblogs.com/files/morango/fish-cursor.ico),auto;}