首页 > 代码库 > java基础知识随笔

java基础知识随笔

1.&与&&的区别

  相同:两者都可以用作逻辑与(and)运算,运算符两边都为真时表达式才为真。

      不同:&&具有短路与的功能,即第一个表达式为false时,第二个表达式不再判断,例如if(str!=null && !str.equals(""))表达式,当str为null时,由于短路与,后面的表达式不会执行,所以也不会报NullPointerException。                反之如果用 & ,则会抛NullPointerException异常

     &可用作位运算符,表达式两边不是boolean类型时,&表示按位操作。例如0x31 & 0x0f结果为0x01。

2.java中如何跳出当前的多重嵌套循环?

      break:跳出当前循环

  continue:跳出此次循环

  想要跳出多重循环,可以在整个循环语句前定义一个标号,然后在满足某条件时break至标号处即可。例如

       ok:

    for(int i=0;i<10;i++){

      for(int j=0;j<10;j++){

        if(i==5) break ok;

    }

   }

  还可以让外层的循环条件表达式的结果受到里层循环体代码的控制。例如 

    int arr[][] ={{1,2,3},{4,5,6,7},{9}};
    boolean found = false;

    for(int i=0;i<arr.length && !found ;i++){
      for(int j=0;j<arr[i].length;j++){
        if(arr[i][j]==5){
          found=true;
          break;
        }
        System.out.println(arr[i][j]);
      }
    }

3.switch语句能否作用在byte上?能否作用long上?能否作用在String上?

  switch(expr1)中,expr1只能是一个整数表达式或者枚举常量。整数表达式可以int基本类型或Integer包装类。byte,short,char都可以隐式转换为int,所有这些类型都可以

  long,String显然不符合要求。

     特殊:JDK 7 以后,switch支持String类型。例如:

    

    String str="123";
    switch(str){
      case "abc":
        System.out.println("abc");
        break;
      case "123":
        System.out.println("123");
        break;
      default:
        System.out.println("default");
   }

4.short s1=1;s1=s1+1;有什么错?short  s1=1;s1+=1;有什么错?

  s1+1运算结果为int型,再赋值给s1是short型,编译器会报强制类型转换错误。

  +=是java语言规定的运算符,编译器会进行特殊处理,因此可以正确编译。

5.char 型变量中能不能存储一个中文汉字?为什么?

  可以。因为char型变量是用来存储Unicode编码的字符的,unicode中包含中文,所以可以存储汉字

  补充:unicode编码占两个字节,所以,char型也占用两个字节

  

 

java基础知识随笔