1、abstract class 和interface 有什么区别?
定义不同:
接口:interface 接口名{}
抽象类:abstract class 类名{}
成员变量不同:
接口中:只能是常量,不能是变量
抽象类:可以定义变量,也可以定义常量,但是不能被实例化
有无构造方法不同:
接口中没有构造方法(因为不需要定义变量)
抽象类中有构造方法(仍然无法创建对象,主要用于被子类重写)
成员方法不同:
接口中只能是抽象方法,1.8以后可以定义非抽象方法了
抽象类中既可以是抽象方法,又可以是非抽象方法。
抽象类主要是用来被子类继承进行扩展的,有构造方法,不能被实例化。有构造方法可以放一些初始化的公共流程,供子类调用。不能被实例化,如果可以被实例化,实例化的是所有子类还是具体哪一个?
2、静态内部类和内部类的不同?
静态内部类,它可以不依赖于外部类实例被实例化。
而普通的内部类需要在外部类实例化后才能实例化。
3、静态变量和局部变量的区别?
定义位置不同
局部变量:定义在方法中,或者方法声明上(方法的形式参数)
成员变量:定义在类中方法外
内存中位置不同
局部变量:属于方法,和方法的位置相同,在栈内存的方法的栈帧中
成员变量:属于对象,和对象的位置相同,在堆内存的对象中
生命周期不同
局部变量:随着方法的调用而存在,随着方法的调用结束而消失
成员变量:随着对象的创建而存在,随着对象的消失而消失
初始化状态不同
局部变量:没有默认值,必须手动初始化赋值,才能使用
静态变量:有默认值(在堆里的东西,会有默认值),所以不用初始化也能用
4、数据类型之间的转换:
1)如何将数值型字符转换为数字?
2)如何将数字转换为字符?
3)如何取小数点前两位并四舍五入? 【基础】
答:1)调用数值类型相应包装类中的方法parse***(String)或valueOf(String)即可返回相应基本类型或包装类型数值;
2)将数字与空字符串相加即可获得其所对应的字符串;另外对于基本类型数字还可调用String 类中的valueOf(…)方法返回相应字符串,而对于包装类型数字则可调用其toString()方法获得相应字符串;
3)可用该数字构造一java.math.BigDecimal 对象,再利用其round()方法进行四舍五入到保留小数点后两位,再将其转换为字符串截取最后两位。
5、字符串操作:如何实现字符串的反转及替换
答:可用字符串构造一StringBuffer 对象,然后调用StringBuffer 中的reverse方法即可实现字符串的反转,调用replace 方法即可实现字符串的替换。
6、编码转换:怎样将GB2312 编码的字符串转换为ISO-8859-1 编码的字符串?
答:示例代码如下:
String s1 = “你好”;
String s2 = new String(s1.getBytes(“GB2312”), “ISO-8859-1”);
7、error 和exception 有什么区别?
error 表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;exception 表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的情况。
8、关键字:throws,throw,try,catch,finally分别代表什么意义?
一般情况下是用try 来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理;try 用来指定一块预防所有“异常”的程序;catch 子句紧跟在try 块后面,用来指定你想要捕捉的“异常”的类型;throw 语句用来明确地抛出一个“异常”;throws 用来标明一个成员函数可能抛出的各种“异常”;Finally 为确保一段代码不管发生什么“异常”都被执行一段代码;
9、运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java 编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
10、final, finally, finalize 的区别
final:修饰符(关键字);如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。被声明为final 的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改;被声明为final 的方法也同样只能使用,不能重载。
finally:再异常处理时提供finally 块来执行任何清除操作;如果抛出一个异常,那么相匹配的catch 子句就会执行,然后控制就会进入finally 块(如果有的话)。常用来释放资源
finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。