面试题
1.main方法的参数里面,字符串数组的第一个参数是什么?
数组是空的,没有任何元素。不像C或者C++, 第一个元素默认是程序名。如果命令行没有提供任何参数的话,main方 法 中的String数 组为空,但不是null。
2.怎么判断数组是null还是为空?
输出array.length 的值,如果是0,说明数组为空。如果是null的 话,会抛出空指针异常。
3静态变量在什么时候加载?编译期还是运行期?静态代码块加载的时机呢?
静态变量、静态代码块、静态方法都是在编译期
4.一个类能拥有多个main方法吗?
可以,但只能有一个main方 法拥有以下签名:
public static void main(String[] args) {}
否则程序将无法通过编译。编译器会警告你main方 法已经存在。
5.简单的介绍下JVM是如何工作的?
JVM是 一台抽象的计算机,就像真实的计算机那样,它们会先将.java文 件编译成.class文件(.class文件就是字节码文 件),然后用它的解释器来加载字节码。
6.是否可以从一个static方法内部直接发出对非static方法的调用?
不可以。因为非static方 法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而 static方 法调用时不需要创建对象,可以直接调用。所以,一个static 方法内部不可以发出对非static方 法的调用。
7.shorts1=1;s1=s1+1;有什么错?shorts1=1;s1+=1;有什么错?
对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算 时会自动提升表达式的类型,所以结果是int型 ,再赋值给short类 型s1时,编译器将报告,需要强制转换类型 的错误。对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算 符,java编 译器会对它进行特殊处理,因此可以正确编译。
8.构造器Constructor是否可被override?
构造器Constructor 不能被继承,因此不能重写Override ,但可以被重载Overload 。
9.什么是OOP?
面向对象编程
10. 什么是隐式转换,什么是显式转换
显示转换就是类型强转,把一个大类型的数据强制赋值给小类型的数据;隐式转换就是大范围的变量能够接受小 范围的 数据;隐式转换和显式转换其实就是自动类型转换和强制类型转换。
网友评论