java
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 简答题(写概念,思原理)
1.1 char类型能否存储一个中文字符?为什么?
参考答案:
可以。一个char是两个字节,而一个中文也是两个字节。
1.2 String a=null; if (a!=null && a.length()>10) {...}
上面的代码,如果你用“&”替换“&&”将发生什么错误?
参考答案:
会抛出空指针异常。
&&会短路,如果&&左边的表达式值为false,a!=null刚好为false,那么&&右边的表达式就不再执行了;而&则是会把两边的表达式都执行完。
1.3 已知x,y,z的取值依次为5,6,7,写出执行下面运算后x,y,z的取值:x+=--y*z++;
参考答案:
x=40,y=5,z=8
1 简答题(写概念,思原理)
1.1 什么是类。
参考答案:
类是一个概念(名词)抽象的定义。
类定义了该类型对象的数据结构,称之为“成员变量”,同时,也定义了一些可以被调用的功能,称之为“方法”。
类是用于构建对象的模板,对象的实质就是内存中一块存储区域,其数据结构由定义它的类来决定。
1.2 请简述JVM内存结构堆,栈和方法区分别存储的内容。
参考答案:
JVM会在其内存空间中开辟一个称为“堆”的存储空间,这部分空间用于存储使用new 关键字创建的对象。
栈用于存放程序运行过程当中所有的局部变量。一个运行的Java程序从开始到结束会有多次方法的调用。JVM会为每一个方法的调用在栈中分配一个对应的空间,这个空间称为该方法的栈帧。一个栈帧对应一个正在调用中的方法,栈帧中存储了该方法的参数、局部变量等数据。当某一个方法调用完成后,其对应的栈帧将被清除。
方法区该空间用于存放类的信息。Java程序运行时,首先会通过类装载器载入类文件的字节码信息,经过解析后将其装入方法区。类的各种信息都在方法区保存。
1.3 什么是方法的重载(overload)。
参考答案:
在Java语言中,允许多个方法的名称相同,但参数列表不同,称之为方法的重载(overload)。
编译器在编译时会根据其参数的不同,绑定到不同的方法。
1.4 请说出你对null的理解。
答案:
引用类型变量用于存放对象的地址,可以给引用类型赋值为null,表示不指向任何对象。如下所示:
当某个引用类型变量为null时无法对对象实施访问(因为它没有指向任何对象)。此时,如果通过引用访问成员变量或调用方法,会产生NullPointerException 异常。
1.5 什么是构造方法。
参考答案:
在Java语言中可以通过构造方法实现对对象成员变量的初始化。构造方法是在类中定义的方法。但不同于其他的方法,构造方法的定义有如下两点规则:
1.构造方法的名称必须与类名同名。
2.构造方法没有返回值,但也不能写void。
1 简答题(写概念,思原理)
1.1 什么是方法重写(Overwirte)。
参考答案:
子类可以重写(覆盖)继承自父类的方法,即方法名和参数列表与父类的方法相同;但方法的实现不同。
当子类对象的重写方法被调用时(无论是通过子类的引用调用还是通过父类的引用调用),运行的是子类的重写后的版本。
1.2 重写和重载的区别
参考答案:
重载遵循所谓“编译期绑定”,即在编译时根据参数变量的类型判断应该调用哪个方法。
重写遵循所谓“运行期绑定”,即在运行的时候根据引用变量指向的实际对象类型调用方法。
1 简答题(写概念,思原理)
1.1 关键字final可以修饰一个类,一个方法,一个变量,各起什么作用。
参考答案:
final修饰类是不能被继承
final修饰方法不能在子类中被覆盖
final修饰变量,称为常量,初始化以后不能改变值。
1.2 什么是对象数组。
参考答案:
所谓对象数组,是对象的元素不是基本类型,而是引用类型。
1.3 什么是抽象类。
用abstract关键字修饰的类称为抽象类。抽象类不能实例化,抽象类的意义在于“被继承”。抽象类为其子类“抽象”出了公共的部分,通常也定义了子类所必须具体实现的抽象方法。
1 简答题(写概念,思原理)
1.1 abstract class和interface有什么区别。
参考答案:
1.从语法角度
abstract class方法中可以有自己的数据成员,也可以有非abstract的成员方法,并赋予方法的默认行为,而在interface方式中一般不定义成员数据变量,所有的方法都是abstract,方法不能拥有默认的行为
2. 从编程的角度
abstract class在java语言中表示的是一种继承关系,一个类只能使用一次继承关系。而一个类可以实现多个interface
3. 从问题域角度
abstract class在Java语言中体现了一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is a"关系,即父类和派生类在概念本质上应该是相同的。对于interface 来说则不然,并不要求interface的实现者和interface定义在概念本质上是一致的,仅仅是实现了interface定义的契约而已。
1.2 接口是否可继承接口? 抽象类是否可实现接口? 抽象类是否可继承实体类。
第一问:接口是可以继承接口的并且可以继承多个其它接口。
第二问:抽象类可以实现接口中的方法。
第三问:抽象类可以继承实体类。
1.3 nonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)。
参考答案:
匿名内部类是可以继承其它类,同样也可以去实现接口的,用法为:
这样的用法在swing编程中是经常使用的,就是因为它需要用到注册监听器机制,而该监听类如果只服务于一个组件,那么将该类设置成内部类/匿名类是最方便的。
1.4 什么是回调模式。
参考答案:
回调模式是指——如果一个方法的参数是接口类型,则在调用该方法时,需要创建并传递一个实现此接口类型的对象;而该方法在运行时会调用到参数对象中所实现的方法(接口中定义的)。
1 简答题(写概念,思原理)
1.1 equals和==的区别
参考答案: