java内部类常见面试题汇总
2016-04-18 17:13
369 查看
1.根据注释填写(1),(2),(3)处的代码
public class Test{
public static void main(String[] args){
// 初始化Bean1
(1)
bean1.I++;
// 初始化Bean2
(2)
bean2.J++;
//初始化Bean3
(3)
bean3.k++;
}
class Bean1{
public int I = 0;
}
static class Bean2{
public int J = 0;
}
}
class Bean{
class Bean3{
public int k = 0;
}
}
从前面可知,对于成员内部类,必须先产生外部类的实例化对象,才能产生内部类的实例化对象。而静态内部类不用产生外部类的实例化对象即可产生内部类的实例化对象。
创建静态内部类对象的一般形式为: 外部类类名.内部类类名 xxx = new 外部类类名.内部类类名()
创建成员内部类对象的一般形式为: 外部类类名.内部类类名 xxx = 外部类对象名.new 内部类类名()
因此,(1),(2),(3)处的代码分别为:
// 1
Test t=new Test();
Test.Bean1 b1=t.new Bean1();
// 2
Test.Bean2 b2=new Test.Bean2();
// 3
Bean b=new Bean();
Bean.Bean3 b3=b.new Bean3();
2.下面这段代码的输出结果是什么?
public class Test {
public static void main(String[] args) {
Outter outter = new Outter();
outter.new Inner().print();
}
}
class Outter
{
private int a = 1;
class Inner {
private int a = 2;
public void print() {
int a = 3;
System.out.println("局部变量:" + a);
System.out.println("内部类变量:" + this.a);
System.out.println("外部类变量:" + Outter.this.a);
}
}
}结果:
内部类详细学习:
点击打开链接
public class Test{
public static void main(String[] args){
// 初始化Bean1
(1)
bean1.I++;
// 初始化Bean2
(2)
bean2.J++;
//初始化Bean3
(3)
bean3.k++;
}
class Bean1{
public int I = 0;
}
static class Bean2{
public int J = 0;
}
}
class Bean{
class Bean3{
public int k = 0;
}
}
从前面可知,对于成员内部类,必须先产生外部类的实例化对象,才能产生内部类的实例化对象。而静态内部类不用产生外部类的实例化对象即可产生内部类的实例化对象。
创建静态内部类对象的一般形式为: 外部类类名.内部类类名 xxx = new 外部类类名.内部类类名()
创建成员内部类对象的一般形式为: 外部类类名.内部类类名 xxx = 外部类对象名.new 内部类类名()
因此,(1),(2),(3)处的代码分别为:
// 1
Test t=new Test();
Test.Bean1 b1=t.new Bean1();
// 2
Test.Bean2 b2=new Test.Bean2();
// 3
Bean b=new Bean();
Bean.Bean3 b3=b.new Bean3();
2.下面这段代码的输出结果是什么?
public class Test {
public static void main(String[] args) {
Outter outter = new Outter();
outter.new Inner().print();
}
}
class Outter
{
private int a = 1;
class Inner {
private int a = 2;
public void print() {
int a = 3;
System.out.println("局部变量:" + a);
System.out.println("内部类变量:" + this.a);
System.out.println("外部类变量:" + Outter.this.a);
}
}
}结果:
3 2 1
内部类详细学习:
点击打开链接
相关文章推荐
- Android面试及使用技术点总结
- 65、一个优秀程序员具备的15个特性
- 程序员需要具备的基本技能
- 一个优秀程序员具备的15个特性
- 推荐PHP程序员进阶的好书
- android面试题1
- 剑指offer之面试题10:二进制中1的个数
- 剑指offer-----面试题4(替换空格)
- 面试中一些问题
- iOS 面试题小总结
- 程序员需谨记的8条团队开发原则
- 剑指offer之面试题9-4:矩形覆盖
- 剑指offer之面试题9-3:变态跳台阶
- 【小松教你手游开发】【面试必读(编程基础)】C#委托浅析与漫谈
- 多线程的40个面试题总结(上)
- 剑指offer之面试题9-2:跳台阶
- 栈的java实现和栈的应用举例(华为面试)
- 面试题88:二叉树中结点的最大距离
- 剑指offer之面试题9:斐波那契数列
- 一名优秀程序员具备的15个特质