2018-06-05
2018-06-05 本文已影响7人
Arroganter
1、 在Java中,方法覆盖(重写)的规则:
- 在子类中的覆盖方法与父类中被覆盖的方法应具有:
- 相同的方法名
- 相同的参数列表(参数数量、参数类型、参数顺序都要相同)
- 相同的返回值类型
- 子类覆盖方法的访问权限要不小于父类中被覆盖方法的访问权限
2、简述Java中数组的概念和特点
- 数组是存储多个相同类型变量的对象。数组的所有元素保存在堆内存中。
- 创建一个数组就是在堆中创建一个数组对象。
- 数组创建后立即拥有默认值。
- 索引从0开始。
- 连续分配
- 有固定的空间大小
3、 在Java中什么是接口,描述接口及类的继承关系
- 1.接口:只包含常量和抽象方法,而没有变量和方法的实现
- 2.接口可以实现多继承
- 3.多个无关的类可以实现一个接口,一个类可以实现多个无关的接口。
- 一个类可以在继承一个父类的同时,实现一个或多个接口
- 一个类要实现一个接口,那么这个类就必须实现接口中所有抽象方法。否则这个类只能声明为抽象类
4、在Java中,简述垃圾回收机制原理
- Java的垃圾回收机制是自动的,实际上是JVM内部运行的一个优先级比较低的后台线程。
- 垃圾回收机制仅仅作用于堆内存,与栈内存无关。
- 确定对象为垃圾需要回收的条件如下:
- 对象的引用被赋值为null
- 一次性使用的匿名对象
- 超出生命周期
5、 在Java中,简述this关键字概念及使用this关键字的情况
this关键字:
- 代表对象自身的引用,通常在类的方法定义中使用
- 用this关键字的情况:
- 方法中的变量与成员变量重名
- 在一个构造器中,调用其它重载的构造器
- 返回当前对象的引用
6、在Java中,讲述子类实例化的过程中,子类创建构造器要求有什么?
- 在子类中创建构造器时,必须调用父类的构造器
- 子类可以在自己的构造器中使用super关键字来调用父类的构造器,代码如下:
- super (参数1,参数2,…);
- 如果使用super关键字调用父类构造器,必须写在该子类构造器的第一行
- 如调用的是父类中无参的构造器,则可以不写super( )
- 如果子类中调用了父类无参的构造器,而父类中没有无参构造器则系统编译出错
7.在Java中,数据类型如何转换(上溯和下溯):
1、基本数据类型转换:
- 1.1 自动转换规则
boolean类型不可以转换为其他的数据类型
整型、字符型、浮点型的数据在混合运算中相互转换,转换时遵守以下原则:
byte、short、char之间不会相互转换,他们三者在计算时首先会转换为int类型- 1.2 强制类型转换
容量大的数据类型转换为容量小的数据类型时,需要使用强制类型转换,其格式如下:
变量 = (目标类型) 值
在强制类型转换过程中,源类型的值可能大于目标类型,因此可能造成精度降低或溢出
2、引用数据类型的转换:
- 1.1 向上转型(Upcasting)
子类转换为父类(具有继承或实现关系) — 自动转换
向上转换损失了子类新扩展的属性和方法,仅可以使用从父类中继承的属性和方法
- 1.2 向下转型(Downcasting)
将父类对象显示的转换成子类类型 — 强制转换
曾经向上转换过的对象,才能再向下转换。对象不允许不经过上溯造型而直接下溯造型
8.在Java中,static关键字可以修饰的元素有哪些?说明静态变量(类变量)的特点和访问形式,说明静态方法(类方法)的特点、访问形式、作用和使用的注意事项,什么是静态代码块,静态代码块中的代码什么时候执行,静态代码块作用
- static可以修饰的元素:
属性、方法、代码块
1)静态变量特点:- 所有对象共享
- 在类被载入时创建,只要类存在,static变量就存在
- 两种方式访问:
- 直接访问:类名.属性;
- 实例化后访问:对象名.属性
2)静态方法特点:
不需要实例化,可以直接访问
- 两种方式访问:
直接访问:类名.方法名()
实例化后访问:对象名.方法名()
- static方法的作用:
简化方法的使用;
便于访问静态属性;
- 注意事项
静态方法里只能直接访问静态成员,而不能直接访问类中的非静态成员
静态方法中不能使用this、super关键字
静态方法不能被非静态方法覆盖,静态方法不能修饰构造器
3)静态代码块: 一个类中由static关键字修饰的,不包含在任何方法体中的代码块
- 当类被载入时,静态代码块被执行,且只被执行一次
- 静态块经常用来进行静态属性的初始化
9.在Java中,final关键字修饰的元素有哪些,及final元素的特点。
final可以修饰的元素:
- 1)类:不能被继承
- 2)变量(属性和局部变量):不能被重新赋值
在声明时赋值,或在构造器中赋值
系统不会对final属性默认的赋初始值- 3)方法:不能在子类中被覆盖,即不能修改。