Java【细节问题】

Java【细节问题】,第1张

文章目录
  • 1.变量不可以被重复声明
  • 2.自加自减(Python习惯)
  • 3.连用判断符(Python习惯)
  • 4.&&和&,||和|
  • 5.if循环条件里面的变量
    • 5.1 当在循环外定义了一个变量,然后放在循环条件里面做++,最后循环外输出结果会因为循环条件里面的++而改变
    • 5.2 当在循环内定义变量,那么此变量只在循环体里面有效,不可以在循环外用。

1.变量不可以被重复声明

java public class test1 { public static void main(String[] args) { int[] nums = {2, 4, 6, 7, 8, 9}; Arrays.sort(nums); int sum = 0; for (int i = nums.length - 2; 0<= i && i< nums.length - 1; i-= 2) { int b=2; int b=3; // 此时会报错,b has been declared sum+=nums[i]; // 如果上面没有声明int sum=0会报错 // 相当于sum=sum+nums[i]没有初始化怎么行?那我这样声明int sum+=nums[i]也会报错 // 相当于int sum=sum+nums[i],左边都没有初始化,当然报错。那我这样声明 int sum=int sum+nums[i] 也是没有初始化 // 反正记得 局部变量 初始化就不会报错 } System.out.println(sum); } }

2.自加自减(Python习惯)

习惯了Python里面i+=2这种写法,其实Java里面也是可以的。但是一种情况要注意,局部变量(此时i)应该提前初始化,全局变量(成员变量)。
局部变量不初始化一定会报错!!!
注意a++和++a的区别,前者是先 *** 作后赋值

3.连用判断符(Python习惯)

0 4.&&和&,||和|

一般习惯用&&和II,作用是一模一样的,只不过 *** 作机制不一样。
0>2&&(balalaad),当前面是false不管后面怎么样也不会执行,因为被短路了
java public static void main(String[] args) { int i = 23; int j = 21; if ((i == j) && (100 / 0 == 0)){ //虽然IDEA会黄色警告,但是不会报错,可以执行得到21.如果换成&编译不会报错,但是执行后会报错,"/ by zero" System.out.println(j); } System.out.println(j);
||同理,前面true后面就不执行了

5.if循环条件里面的变量

今天做了一个力扣题,出现了一些变量的问题

class Solution {
    public int[][] generateMatrix(int n) {
        // 参考https://leetcode.cn/problems/spiral-matrix-ii/solution/spiral-matrix-ii-mo-ni-fa-she-ding-bian-jie-qing-x/
        int l=0 ,r=n-1,t=0,b=n-1;
        int[][] mat=new int[n][n];
        if(n==0) return mat;
        int target=n*n;
        int count=1;

        while(count<=target){
            // for(;l<=r;l++) mat[t][l]=count++;  //从左到右
            // t++;
            // for(;t<=b;t++) mat[l][t]=count++;  //从上到下
            // r--;
            // for(;r>=l;r--) mat[t][r]=count++;  //从左到右
            // b--;
            // for(;b>=t;l++) mat[t][l]=count++;  //从左到右
            // l++;
            // 绝了,别把几个边界放循环里面啊,因为你在外面定义了的话,即使放循环里面还是会发生值的变化
            // 在循环条件里面定义的变量,循环结束之后会失效,需要重新定义
            for(int i=l;i<=r;i++) mat[t][i]=count++;  //从左到右
            t++;
            for(int i=t;i<=b;i++) mat[i][r]=count++;  //从上到下
            r--;
            for(int i=r;i>=l;i--) mat[b][i]=count++;  //从右到左
            b--;
            for(int i=b;i>=t;i--) mat[i][l]=count++;  //从下到上
            l++;
        }
        return mat;

    }
}
5.1 当在循环外定义了一个变量,然后放在循环条件里面做++,最后循环外输出结果会因为循环条件里面的++而改变
public class test1 {
    public static void main(String[] args) {
        int l=0;
        int r=3;
        for(;l<=r;l++) ; 
        // 输出结果4
        System.out.println(l);
    }
}
5.2 当在循环内定义变量,那么此变量只在循环体里面有效,不可以在循环外用。
public class test1 {
    public static void main(String[] args) {
        int r=3;
        for(int l=0;l<=r;l++) ;
        // 报错:java: 找不到符号
        System.out.println(l);
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/920556.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存