1.如果main方法被声明为private会怎么样?
能正常编译,但运行的时候会提示“main方法不是public的”。
2.java里的传引用和传值的区别是什么?
传引用是指传递的是地址而不是值本身,传值则是传递值的一份拷贝。
3.如果要重写一个对象的equals方法,还要考虑什么?
hashCode。
4.说明一下public static void main(String args[])这段声明里每个关键词的作用。
public:main方法是java程序运行调用的第一个方法。因此它必须对java环境可见,所以可见性设置为public。
static:java平台调用这个方法时不会创建这个类的一个实例,因此这个方法必须生命为static。
void:main方法没有返回值。
String:是命令行传进参数的类型。
args:是命令行传进的字符串数组。
5.如果去掉main方法的static修饰符会怎么样?
程序能正常编译,运行时会抛NoSuchMethodError异常。
6.比较==与equals的区别?
①基本数据类型比较
用==比较两个值是否相等。相等为true,否则为false。
②引用数据类型比较
用==比较在内存中存放的地址是否相等,同一个new出来的对象为true,否则为false。
Java中所有的类都继承于Object这个基类,在这个基类中定义了一个equals()方法,这个方法的初始行为是比较对象的内存地址,与==比较结果相同。但在一些类库中重写了equals()方法,如String,Integer,Date这些类中的equals()方法比较的不是内存地址,而是内容。
7.什么是javaAPI?
javaAPI是大量软件组件的集合,他们提供了大量有用的功能,比如GUI组件。
8.为什么java里没有全局变量?
全局变量破坏了引用透明性原则,全局变量导致了命名空间的冲突。
9.在System.out.println中的每个关键字分别是什么?
System是系统提供的预定义的final类Out是一个PrintStream对象
println是out对象里的一个重载方法。
10.所有类的父类是什么?
Object
11.&和&&操作符的区别?
当&表达式在求值的时候,两个操作数都会被求值。
当&&表达式在求值的时候,先计算第一个操作数,如果返回true才回计算第二个操作数,如果第一个操作数返回false,第二个操作数就不会被求值。
12.java是如何处理整型的溢出和下溢的?
Java根据类型的大小,将计算结果中的低阶字节存储到对应的值里面。
13.声明变量和定义变量的区别?
声明变量我们只是声明变量的类型和名字,并没有进行初始化。
定义包括声明和初始化两个阶段String s;这只是变量的声明,String s=new String(“ok”)或者String s=“ok”这是定义变量。
14.怎么理解变量?
变量是一块命名的内存区域,方便程序进行访问。变量可以用来存储数据,随着程序的执行,存储的数据也可能跟着改变。
15.什么是java虚拟机?
java虚拟机是能够移植到不同硬件平台上的软件系统。
16.main方法的参数里面,字符串数组的第一个参数是什么?
数组是空的,没有任何元素。不像c或者c++第一个元素默认是程序名。如果命令行没有提供任何参数的话,main方法中的String数组为空,但不是null。
17.怎么判断数组是null还是空?
输出array.length的值,如果是0说明数组为空;如果是空的话,会抛出空指针异常。
18.程序中可以允许多个类同时拥有main方法吗?
可以。当程序运行的时候,我们会指定运行的类名。JVM只会在你指定的类中查找main方法。因此多个类拥有main方法并不存在命名冲突的问题。
19.一个类中可以有多个main方法吗?
可以。但是只有一个main方法拥有以下签名:public static void main(String args[]){}否则程序将无法通过编译。编译器会警告你main方法已经存在。
20.虚拟内存是什么?
又叫延伸内存,实际上并不存在真实的物理内存。