Java 面试题整顿
Java 面向对象
- super()与 this()的区别?
This():以后类的对象,super 父类对象。
Super():在子类拜访父类的成员和行为, 必须受类继承规定的束缚而 this 他代表以后对象, 当然所有的资源都能够拜访.
在构造函数中, 如果第一行没有写 super(), 编译器会主动插入. 然而如果父类没有不带参数
的构造函数, 或这个函数被私有化了 (用 private 润饰). 此时你必须退出对父类的实例化结构. 而 this 就没有这个要求, 因为它自身就进行实例化的结构.
而在办法中 super 和 this 应用的办法就差不多了. 只不过 super 要思考是否能拜访其父类的资源. - 作用域 public,protected,private, 以及不写时的区别?
Public: 不同包、同一包、类内都可用
Private:类内
Protected: 不同包的子类、同一包、类内都可用
不写时: 同一包内、类内 - 编程输入如下图形?
-
-
-
- *
- *
*
代码如下:
public class Print {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
for (int j = 5; j > i; j–) {
System.out.print(“*”);
}
System.out.println();
}
}
} - JAVA 的事件委托机制和垃圾回收机制
java 事件委托机制的概念, 一个源产生一个事件并将它送到一个或多个监听器那里。在这种计划中,监听器简略的期待,直到它收到一个事件。一旦事件被承受,监听器将解决这个事件,而后返回。
垃圾回收机制 垃圾收集是将调配给对象但不再应用的内存回收或开释的过程。如果一个对象没有指向它的援用或者其赋值为 null, 则次对象适宜进行垃圾回收 - 在 JAVA 中,如何跳出以后的多重嵌套循环?
用 break; return 办法。 - 什么是 java 序列化,如何实现 java 序列化?(写一个实例)
序列化:
能够将一个对象保留到一个文件,所以能够通过流的形式在网络上传输,能够将文件的内容读取,转化为一个对象。
解决对象流的机制,所谓对象流也就是将对象的内容进行流化。能够对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
序列化的实现:
将须要被序列化的类实现 Serializable 接口,该接口没有须要实现的办法,implements Serializable 只是为了标注该对象是可被序列化的,而后应用一个输入流 (如:FileOutputStream) 来结构一个 ObjectOutputStream(对象流)对象,接着,应用 ObjectOutputStream 对象的 writeObject(Object obj)办法就能够将参数为 obj 的对象写出(即保留其状态),要复原的话则用输出流。 - 一个 ”.java” 源文件中是否能够包含多个类(不是外部类)?有什么限度?
能够。如果这个类的修饰符是 public,其类名与文件名必须雷同。 - 排序都有哪几种办法?请列举。用 JAVA 实现一个疾速排序?
排序的办法有:插入排序(间接插入排序、希尔排序),替换排序(冒泡排序、疾速排序),抉择排序(间接抉择排序、堆排序),归并排序,调配排序(箱排序、基数排序)疾速排序的伪代码。 - Overload 和 Override 的区别。Overloaded 的办法是否能够扭转返回值的类型?
办法的
重写 Override,子类笼罩父类的办法,将子类传与父类的援用调用的还是子类的办法。
重载 Overloading 一个类多个办法,名称雷同,参数个数类型不同。
两者都是 Java 多态性的不同体现。Overloaded 的办法是能够扭转返回值的类型。
1,public class Ctest()
{
Public static void main()
{
System.out.prinln(8+8+”88”+8+8);
}
}
168888 - Final 类有什么特点?
属性常量
办法不能够 overridding
类不能够继承 - 继承时候类的执行程序问题,个别都是选择题,问你将会打印出什么.
答 : 父 类:
package test;
public class FatherClass
{
public FatherClass()
{
System.out.println(“FatherClass Create”);
}
}
子类:
package test;
import test.FatherClass;
public class ChildClass extends FatherClass
{
public ChildClass()
{
System.out.println(“ChildClass Create”);
}
public static void main(String[] args)
{
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
输入后果:
C:>java test.ChildClass FatherClass Create FatherClass Create ChildClass Create - 外部类的实现形式?
答:示例代码如下:
package test;
public class OuterClass
{
private class InterClass
{
Public Interlass()
{
System.out.println(“InterClass Create”);
}
}
public OuterClass()
{
InterClass ic = new InterClass(); System.out.println(“OuterClass Create”);
}
public static void main(String[] args)
{
OuterClass oc = new OuterClass();
}
}
输入后果:
C:>java test/OuterClass
InterClass Create
OuterClass Create
13. 用 JAVA 实现一种排序,JAVA 类实现序列化的办法(二种)? - 如在 COLLECTION 框架中,实现比拟要实现什么样的接口?
Collection 框架中实现比拟要实现 Comparable 接口和 Comparator 接口 - 用插入法进行排序代码如下
package test; import java.util.*; class InsertSort
{
ArrayList al;
public InsertSort(int num,int mod)
{
al = new ArrayList(num); Random rand = new Random();
System.out.println(“The ArrayList Sort Before:”); for (int i=0;i<num ;i++)
{
al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1)); System.out.println(“al[“+i+”]=”+al.get(i));
}
}
public void SortIt()
{
Integer tempInt; int MaxSize=1;
for(int i=1;i<al.size();i++)
{
tempInt = (Integer)al.remove(i); if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue())
{
al.add(MaxSize,tempInt); MaxSize++; System.out.println(al.toString());
} else {
for (int j=0;j<MaxSize ;j++)
{
if
(((Integer)al.get(j)).intValue()>=tempInt.intValue())
{
al.add(j,tempInt); MaxSize++;
System.out.println(al.toString()); break;
}
}
}
}
System.out.println(“The ArrayList Sort After:”); for(int i=0;i<al.size();i++)
{
System.out.println(“al[“+i+”]=”+al.get(i));
}
}
public static void main(String[] args)
{
InsertSort is = new InsertSort(10,100); is.SortIt();
}
}
JAVA 类实现序例化的办法是实现 java.io.Serializable 接口 - 编程:编写一个截取字符串的函数,输出为一个字符串和字节数,输入为按字节截取的字符串。然而要保障汉字不被截半个,如 ” 我 ABC”4,应该截为 ” 我 AB”,输出 ” 我 ABC 汉 DEF”,6,应该输入为 ” 我 ABC” 而不是 ” 我 ABC+ 汉的半个 ”。
public static void split(String source,int num) throws Exception
{
int k=0;
String temp=””;
for (int i = 0; i <source.length(); i++)
{
byte[] b=(source.charAt(i)+””).getBytes(); k=k+b.length;
if(k>num)
{
break;
}
temp=temp+source.charAt(i);
}
System.out.println(temp);
}
17.Java 编程,打印昨天的以后时刻
public class
YesterdayCurrent{public void
main(String[] args){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1); System.out.println(cal.getTime());
}
}
18. 文件读写,实现一个计数器
public int getNum(){ int i = -1;
try{
String stri=””;
BufferedReader in = new BufferedReader(new FileReader(f)); while((stri=in.readLine())!=null){
i = Integer.parseInt(stri.trim());
}
in.close();
}catch(Exception e){e.printStackTrace();
}
return i;
}
public void setNum(){ int i = getNum(); i++;
try{
PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter(f,false))); out.write(String.valueOf(i)); // 可能是编码的起因,如果间接写入 int 的话,将呈现 java 编码和 windows 编码的凌乱,因而此处写入的是 String
out.close() ;
}catch(Exception
e){e.printStackTrac
e();
}
19. 指出上面程序的运行后果。
class A{static{
System.out.print(“1”);
}
public A(){ System.out.print(“2”);
}
}
class B extends A{static{ System.out.print(“a”);
}
public B(){ System.out.print(“b”);
}
}
public class Hello{
public static void main(String[] ars){A ab = new B(); // 执行到此处, 后果: 1a2b ab = new B(); // 执行到此处, 后果: 1a2b2b
}
}
注: 类的 static 代码段, 能够看作是类首次加载 (被虚拟机加载) 执行的代码, 而对于类的加载, 首先要执行其基类的结构, 再执行其自身的结构 extends (2)接口只有定义, 抽象类能够有定义和实现
(3) 接口的字段定义默认为:public static final, 抽象类字段默认是 ”friendly”(本包可见)
20. 抽象类和接口的区别?
(1)接口能够被多重 implements, 抽象类只能被繁多 extends (2)接口只有定义, 抽象类能够有定义和实现
(3) 接口的字段定义默认为:public static final, 抽象类字段默认是 ”friendly”(本包可见)
当性能须要累积时用抽象类,不须要累积时用接口。
21. 什么是类的反射机制?
通过类 (Class 对象),能够得出以后类的 fields、method、construtor、interface、superClass、modified 等,同是能够通过类实例化一个实例、设置属性、唤醒办法。Spring 中一切都是返射、struts、hibernate 都是通过类的返射进行开发的。
22. 类的反射机制中的包及外围类?
u java.lang.Class
u java.lang.refrection.Method
u java.lang.refrection.Field
u java.lang.refrection.Constructor
u java.lang.refrection.Modifier
u java.lang.refrection.Interface
23. 失去 Class 的三个过程是什么?
对象.getClass()
类.class 或 Integer.type(int) Integer.class(java.lang.Integer) Class.forName();
24. 如何唤起类中的一个办法?
产生一个 Class 数组,阐明办法的参数
通过 Class 对象及办法参数失去 Method
通过 method.invoke(实例, 参数值数组)唤醒办法
25. 如何将数值型字符转换为数字(Integer,Double)?
Integer.parseInt(“1234”)
Double.parseDouble(“123.2”)
26. 如何将数字转换为字符?
1+””
1.0+””
27. 如何取小数点前两位,并四舍五入。
double d=1256.22d;
d=d/100;
System.out.println(Math.round(d)*100);
有须要全副文件的麻烦关注点赞私信我