JAVA编程基础&面试题

编程基础

短路运算符和位运算

  • 1.解释运算符&和&&、|和||的区别
  • 2.用最有效率的方法计算2乘以8:2<<3
    原理:将一个数左移n位,相当于乘以2的n次方。

常见的JDK源码里面HashMap的默认容量是16

int DEFAULT_INITIAL_CAPACITY=1<<4

讲解异或的考察点与分析

  • 1.写个方法,传递两个非0的int数值进去,实现变量的交换方式有几种?
public class SwapNum {
    //方法一
    public static void swap_01(int a,int b){
        a=a+b;
        b=a-b;
        a=a-b;
        System.out.printf("
a=%d,b=%d",a,b);
    }
    //方法二
    public static void swap_02(int a,int b){
        a=a^b;
        b=b^a;//b=b^a^b=a
        a=a^b;//a=a^b^b^a^b=a^0^a^b=a^a^b=0^b=b
        System.out.printf("
a=%d,b=%d",a,b);
    }
    //方法三:借助第三变量(略)
    public static void main(String args[]){
        int a=3,b=4;
        System.out.printf("a=%d,b=%d",a,b);//注意printf和println的区别,一个是可以格式化输出,一个不行的
        swap_01(a,b);
        swap_02(a,b);
    }
}

Java基础语法

  • 1.Java数据类型的划分和运算
    基础数据类型:byte、short、int、long、float、double、char、boolean
    引用数据类型:除了八个基础数据类型,其余的全部都是引用数据类型(如String、Enum)
  • 2.运算
    return的优先级大于自增/自减运算符的优先级
public static int test1(){
        int i=0;
        return i++;//返回值为0
    }
    public static int test2(){
        int i=0;
        return ++i;//返回值为1
    }
  • 3.==与equals的区别

    基本数据类型:比较使用==判断是否相等
    引用数据类型:==比较的是内存地址是否一样,不同对象的内存地址不一样;equals比较的是具体的内容,可以自定义比较的规则。


try-catch-finally执行顺序

  • 1.观察下列代码,说说执行结果
public class TRY {
    public static int test1(){
        int a=1;
        try {
            System.out.println(a/0);
            a=2;
        }catch (ArithmeticException e){
            a=3;
            return a;
        }finally {
            a=4;
        }
        return a;
    }
    public static int test2(){
        int a=1;
        try {
            System.out.println(a/0);
            a=2;
        }catch (ArithmeticException e){
            a=3;
            return a;
        }finally {
            a=4;
            return a;
        }
    }
    public static void main(String args[]){
        System.out.println(test1());
        System.out.println(test2());
    }
}

在执行try、catch中的return之前一定会执行finally中的代码(若finally存在),如果finally中有return语句,就会直接执行finally中的return方法,所以finally中的return语句是一定会被执行的。
执行流程:finally执行前的代码里包含有return,则会先确定return的返回值,然后再执行finally中的代码,最后在执行return
需要注意的是:在try-catch内确定好return的值之后,无论finally如何对该值怎么修改,只要finally内不含return,都是对返回值无效的修改。

try-with-resource (JDK9)

原文地址:https://www.cnblogs.com/mirage-mc/p/14285991.html