Java 中只有值传递。值传递的含义是将实参的值传递给形参,当参数类型是基本数据类型时,传递的是实参的值,当参数类型是对象时,传递的是对象的引用,但是不能让实参引用新的对象。
面向过程将问题分解成步骤,按照步骤实现函数,并依次调用,数据和对数据的操作是分离的。面向对象将问题分解成对象,描述事物的行为,对象与属性和行为是关联的。
面向过程的优点是性能高,缺点是不容易维护、复用和扩展。面向对象的优点是具有封装、继承、多态的特性,因而容易维护、复用和扩展,缺点是性能低。
虚拟机栈可能出现的两种异常是 StackOverflowError 和 OutOfMemoryError。
如果虚拟机栈不可以动态扩展,当线程请求的栈深度大于虚拟机所允许的深度时,将抛出 StackOverflowError 异常;
如果虚拟机栈可以动态扩展,当无法申请到足够的内存时,将抛出 OutOfMemoryError 异常。
进程和线程最大的区别是,各进程是独立的,而各线程则不一定独立,因为同一进程中的多个线程极有可能会相互影响。线程执行开销小,但不利于资源的管理和保护,进程则相反。
NullPointerException:空指针异常。
ArrayIndexOutOfBoundsException:数组下标越界异常。
ArithmeticException:算术运算异常。
NumberFormatException:数字格式异常。
IOException:输入输出异常。
本篇内容节选自《Java 面试突击》