经典java面试题

来源:互联网 发布:iphone 加入不安全网络 编辑:程序博客网 时间:2024/05/19 13:07

1、面向对象的特征有哪些方面?

面向对象的三个主要特征是封装、继承、多态。

2、作用域public,private,protected,以及不写时的区别?

public修饰的方法和变量:当前类、子类、同包类、不同包类都可以访问。

private修饰的方法和变量:当前类可以访问。

protected修饰的方法和变量:只有所在类本身、子类、同包类。

不写(default):类本身、同包类

3、float类型float f = 3.5;正确么?

这个是错误的,float类型的数据后面都会有一个F后缀,如果没有说明是double类型。

float f = (float)3.5;//需要强制转换成float类型。

4、short s = 1;s = s+1有什么错;

s = s+1是int类型,需要强制转换 s=(short)(s+1);java编译器会认为“1”是一个int类型数据,java的自动类型转换是将占用内存小的数据类型自动转换为占用内存大的类型,反之就是强制转换,所以short+int,所得的类型是int型,需要强制转换为short类型。

s+=1可以编译通过,由于“+=”执行优先级是从右往左,自动被转换为short类型(个人感觉。。)

5、编程题: 用最有效率的方法算出2乘以8等於几?

2<<3

2的二进制是10 在32位存储器里面是0000 0000 0000 0010
左移三位后变成 0000 0000 0001 0000 也就是16(这类题型太变态了。。)

6、构造器constructo能否被overriding?

不能,因为构造器constructor不能被继承,但是可以overloading

7、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 【基础】
不对,有相同的hash code。

8、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

值传递,java语言只支持值最为参数传递,当一个对象被作为参数传递到一个方法中,实际是传递的参数的值该对象的引用,对象的内容可以被方法改变,但是对象的引用是永远不变的。

例:public class Test {
 
 public static void change(String str){
  str = "abcd";
 }
 public static void main(String[] args){
  String s = "1234";
  Test.change(s);
  
  System.out.println(s);
 }
}

 

原创粉丝点击