Java基础面试

1.面试题

byte b1=3,b2=4,b;

b=b1+b2;

b=3+4;

哪句是编译失败的呢?为什么呢?

答:第二句,byte不能转换为int整型。

思考题

    byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?

    byte b3 = (byte)130;

    System.out.println(b3);-126

    练习:byte b = 300;

    结果为44;byte 的范围-127 ~ 127

2.面试题

short s=1, s = s+1; short s=1,s+=1;

上面两个代码有没有问题,如果有,那里有问题

short s = 1;

s = s + 1;//出错,int 型不能转换为short

short s1 = 1;

s1+=1;

3.面试题

3.1请用最有效率的方式写出计算2乘以8的结果

    int a = 2 << 3;

    System.out.println(a); // a =16

3.2请自己实现两个整数变量的交换

    int a = 3;

    int b = 5;

    //方式一位异或

     a=a^b;

     b=a^b;

     a=a^b;

    System.out.println("a="+a+"   b="+b);

    //优先级

    b=(a+b)-(a=b);

   System.out.println("a="+a+"   b="+b);

3.3^的特点:

相同二进制位为0,不同为1

4.常见数组的操作:

4.1数组遍历(依次输出数组中的每一个元素)

 public static void  printArray(int [] arr) {

    for(int x = 0;x<arr.length;x++){

            System.out.print(arr[x]+"\t");

   }

}

4.2数组获取最值(获取数组中的最大值最小值)

public  static int getMax(int [] arr) {

    int max = arr[0];

    for(int x = 1;x<arr.length;x++) {

        if(arr[x]>max){

            max= arr[x];

        }

    }

    return max;

}

4.3数组元素反转 (就是把元素对调)

 public static void reverse( int [] arr) {

    for(int start = 0,end = arr.length - 1;start <= end;start++,end--) {

        int temp = arr[start];

        arr[start]= arr[end];

        arr[end]= temp;

    }

}

4.4数组查表法( //查表法

String [] strArray ={"","星期一","星期二","星期三","星期四","星期五"};

int index;
 System.out.println(strArray[index]);

4.5根据键盘录入索引,查找对应星期)

public static int getIndex(int[] arr,int key) {

    int index = -1;
 for(int x=0; x<arr.length;x++) {

        if(arr[x] == key) {

            index = x;

            break;

        }

    }



    return index;

}

5.面试题:

5.1 Overload和Override的区别。Overload的方法是否可以改变返回值的类型?

Overload:重载 Override:重写

重载: 同一个类中,方法名相同,参数列表不同。与返回值类型无关。 

重写: 存在于子父类,或者子父接口中,方法声明相同。

 Overload的方法可以改变返回值的类型,因为它与返回值类型无关。

5.2 this关键字和super关键字分别代表什么?以及他们各自的使用场景和作用。

1.成员变量和局部变量重名时,可以用this来区分。 

 2.this可以用在构造函数中,调用其它构造函数(只能定义在构造函数的第一行,因为初始化时必须被先执行)。super可以直接调用父类的属性、方法、构造方法。但在调用构造方法时,两者不能同时使用,因为只要是调用构造方法,就必须放在构造方法的首
 1.super()从子类中调用父类的构造方法,this()在同一类内调用其它法。 
 2.this和super不能同时出现在一个构造函数里面。 
 3.super()和this()均需放在构造方法内第一行。 
 4.this()和super()都指的是对象,所以,均不可以在static环境中使用

6.面试题:

    A:final修饰局部变量

        a:基本类型 值不能发生改变

        b:引用类型 地址值不能发送改变,对象的内容是可以改变的

    B:final的初始化时机

        a:在定义时就赋值

        b:在构造方法完毕前赋值

7.面试题:

        num

        this.num

        Outer.this.num

8.面试题(局部内部类)

局部内部类访问局部变量,必须加final修饰

9.面试题

9.1补齐程序(注意:内部类和外部类没有继承关系)

class Outer {

    public int num = 10;

    class Inner {

        public int num = 20;

        public void show() {

            int num = 30;

            System.out.println(?);

            System.out.println(??);

            System.out.println(???);

        }

    }

}

public class OuterDemo {

public int num = 10;

class Inner{

    public int num = 20;

    public void show() {

        int num = 30;

        System.out.println(num);

        System.out.println(this.num);

        System.out.println(new OuterDemo().num);

    }

}

}
OuterDemo.Inner od = new OuterDemo().new Inner();

    od.show();

在控制分别输出:30,20,10

9.2补齐代码,在控制台输出HelloWorld

     按照要求,补齐代码

    interface Inter { void show();}

    class Outer { //补齐代码 }

    class OuterDemo {

        public static void main(String[] args) {

              Outer.method().show();

          }

    }

要求在控制台输出”HelloWorld”

    interface Inter {

        public abstract void show();

 }

class Outer {

        //补齐代码

        public static Inter method() {

            return new Inter(){

                public void show(){

                    System.out.println("helloworld");

                }

            };

        }

    }
    class OuterDemo {

        public static void main(String[] args) {

            Outer.method().show();

        }

    }

10.面试题(Import)

10.1package,import,class有没有顺序关系

package,import,class 如果要给一个类定义归属包,使用package关键字  ,此关键字必须在文件的最开始位置。

11.面试题:(掌握)

    ==和equals()的区别?

    A:==

        基本类型:比较的是基本类型的值是否相同

        引用类型:比较的是引用类型的地址值是否相同

    B:equals()

        只能比较引用类型,默认比较的是对象的地址值是否相同。

        但是,可能被重写,一定要根据实际的情况来看。

12.面试题(String类的特点)

12.1 字符串是常量,它的值在创建之后不能更改

String s = “hello”; s += “world”; 问s的结果是多少?

helloworld

12.2  String s = new String(“hello”)和String s =“hello”;的区别?

    字符串比较之看程序写结果

        一个是对象,一个是变量,不相等。

    字符串拼接之看程序写结果

    String s = new String(“hello”)和String s =“hello”;的区别?



    有。前者会创建2个对象,后者创建1个对象。



==:比较引用类型比较的是地址值是否相同

equals:比较引用类型默认也是比较地址值是否相同,而String类重写了equals()方法,比较的是内容是否相同。 

public class StringDemo2 { 

public static void main(String[]args) { 

String s1 = new String(“hello”); 

String s2 = “hello”;

System.out.println(s1 == s2);//false 

System.out.println(s1.equals(s2));//true 

未完待整理。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值