分析:我们可以发现,这道题,每次循环的时候都是给i减去2,即7-2n永不可能等于0,所以循环会一直执行下去。
分析:通过这道题,我们需要记住的是:取模运算,余数的符号跟被除数符号相同。
所以(-12)%(-5)=-2。
分析:方法重载的概念:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
即就是同一个类、相同方法名,参数列表不同:参数个数不同,参数类型不同。
跟方法的权限修饰符、返回值类型、形参变量名、方法体都没关系!
分析:这道题我做到最后一步时,执行完catch,忽略了里面的return语句,即不执行finally后面的语句。
首先是foo(0),在try代码块中未抛出异常,除了几种特殊情况除外,finally无论是否抛出异常都要执行;
所以执行output += “3”;然后执行output += “4”;
接下来是foo(1),i=1,try代码块抛出异常,进入catch代码块,执行output += “2”;
finally是必执行的,即使return也会执行output += “3”;
但是由于catch代码块中有return语句,所以最后一个output += “4”不会执行。
所以结果是3423。
try-catch-finally块中,finally块在以下几种情况将不会执行。
(1)finally块中发生了异常;
(2)程序所在线程死亡;
(3)在前面的代码中用了System.exit();
(4)关闭了CPU。
分析:
A.方法的重写。但是由于子类重写的方法的权限修饰符不能小于父类被重写的方法的权限修饰符,所以A错误。
B.方法的重载。只跟参数列表有关系,参数列表不同,满足重载的条件,所以B正确。
C.方法的重写。方法的声明和父类完全相同,满足重写的条件,所以C正确。
D.方法的重载。参数列表不同,满足重载的条件,D正确。
分析:
我们首先要先明白类的加载顺序:
(1) 父类静态代码块(不包括静态方法);
(2) 子类静态代码块(不包括静态方法 );
(3) 父类非静态代码块( 包括非静态初始化块,非静态属性 );
(4) 父类构造函数;
(5) 子类非静态代码块 ( 包括非静态初始化块,非静态属性 );
(6) 子类构造函数;
其次,在创造子类对象时,首先要执行父类的构造方法,然后再去执行子类构造方法,未写时默认有无参的构造方法。
父类构造方法中调用callName()方法,由于子类中重写了此方法,所以会去调用子类的callName()方法,但子类的baseName此时还并未赋值,所以变量baseName的值为null。
分析:关于接口:
JDK7及以前:接口中只能定义全局常量和抽象方法
>全局常量:public static final的,但是书写时可以省略不写。
>抽象方法:public abstract的。
JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法和默认方法。
还有就是接口中不能定义构造方法,即就是接口不可以实例化。
关于抽象类:
> 抽象类不能实例化。
> 抽象类中一定有构造方法,便于子类实例化时调用。
> 开发中,都会提供抽象类的子类,让子类对象实例化,完成相关的操作。
PS:1.abstract不能用来修饰:属性、构造方法。
2.abstract不能用来修饰私有方法、静态方法、final的方法、final的类。
一个类可以实现多个接口,但只能继承一个抽象类,因为Java是单继承。还有就是接口与接口之间也可以继承,而且可以多继承。
分析:
同步代码块(synchronized(this),synchronized(类实例对象),锁是实例对象)。
同步非静态方法(synchronized method),锁的是当前对象的实例对象。
获取类锁
同步代码块(synchronized(类.class)),锁是类对象(Class对象)。
同步静态方法(synchronized static method),锁是当前对象的类对象(Class 对象)。
分析:类方法即静态方法,属于当前类,静态方法中没有this。
本文地址:https://blog.csdn.net/Agonyq/article/details/109630282
希望与广大网友互动??
点此进行留言吧!