1.循环结构是如何结束循环的?
(1).循环条件返回false
(2).在循环体内,一旦执行到break,跳出循环
注:continue是跳过当前循环,不是结束循环
2.break和continue有什么区别?
(1).break是结束当前循环,可以在switch-case和循环结构中
(2).continue是结束当次,只能在循环结果中使用
注:不可以在break和continue后面写执行语句
3.如何衡量一段代码的优劣?
(1).正确性
(2).可读性
(3).健壮性
(4).高效率与低存储:时间复杂度、空间复杂度(衡量算法的好坏)
4.如何获取一个随机的两位数?
10-99 (int) (Math.random() * 90 + 10)
公式:[a,b]:(int) (Math.random() * (b - a + 1) + a)
5.权限访问修饰符
注意:protected和private不能修饰类本身。
权限修饰符 | 同一个类 | 同一个包 | 不在同一个包中的子类 (必须在子类自己这个类中) |
不在同一个包中的类 |
---|---|---|---|---|
private | √ | |||
default | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
6.我们程序设计追求“高内聚,低耦合
高内聚 :类的内部数据操作细节自己完成,不允许外部干涉;
低耦合 :仅对外暴露少量的方法用于使用。
7.重写有哪些的规定
约定俗称:子类中的叫重写的方法,父类中的叫被重写的方法
1)子类重写的方法的方法名和形参列表与父类被重写的方法的方法名和形参列表相同
2)子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符
3)子类不能重写父类中声明为private权限的方法
4) 返回值类型:
父类被重写的方法的返回值类型是void,则子类重写的方法的返回值类型只能是void
父类被重写的方法的返回值类型是A类型,则子类重写的方法的返回值类型可以是A类或A类的子类
父类被重写的方法的返回值类型是基本数据类型(比如:double),则子类重写的方法的返回值类型必须是相同的基本数据类型(必须也是double)
5)子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型
注;子类和父类中的同名同参数的方法要么都声明为非static的(可以重写),要么都声明为static的(不可以被重写)。
8.abstract 能修饰哪些结构? 修饰以后,有什么特点?
只能修饰类和方法
修饰类:抽象类不能实例化,只能提供子类实例化
修饰方法:抽象方法,只定义了一种功能的标准。具体的执行,需要子类去重写实现。
9.接口是否能继承接口? 抽象类是否能实现(implements)接口? 抽象类是否能继承非抽象的类?
接口可以多继承接口
抽象类可以实现接口
抽象类可以继承非抽象类
10.如何创建继承抽象类的匿名子类的对象?
AA aa = new AA() {
@Override
public void a() {
}
};
11.抽象类和接口有哪些共同点和区别?
相同点:不能实例化,都可以被继承(接口只能继承接口,不能继承抽象类和类)
不同点:抽象类:有构造器。 接口:不能声明构造器
多继承vs 单继承 (接口可以多继承,类只能单继承)
11.如何创建静态成员内部类和非静态成员内部类的对象?
public class Person {
static class Dog {}
class Bird {}
public static void main(String[] args) {
Person.Dog dog = new Person.Dog();
Person p = new Person();
Person.Bird bird = p.new Bird();
}
}
网友评论