牛客网-JAVA(错题集)-1

1

Java的抽象类和接口不可以进行实例化

2

知识点:

1、不论如何 finally里面的代码是一定会执行的
2、finally里面的代码块比return早执行
3、多个return是按顺序执行的,只执行一次


public abstract class Test {
    public static void main(String[] args) {
        System.out.println(beforeFinally()); //1
    }
    
    public static int beforeFinally(){
        int a = 0;
        try{
            a = 1;
            return a;
        }finally{
            a = 2;
        }
    }
}

先执行a=2
然后a=1覆盖了a=2 此时a=1 try里面有return 所以现将a=1加入到临时栈中
然后先不return,先执行finally里面的a=2,由于finally里面没有return所以a=2不存入临时栈中
执行完毕后再return 返回的是临时栈中的a=1

public abstract class Test {
    public static void main(String[] args) {
        System.out.println(beforeFinally()); //2
    }
    
    public static int beforeFinally(){
        int a = 0;
        try{
            a = 1;
            return a;
        }finally{
            a = 2;
            return a;
        }
    }
}
先a=1存入临时栈中,再执行finally
a=2,finally里面也有一个return ,这时会把a=2更新到临时栈中
参考:
作者:贱贱的梦想
链接:https://www.nowcoder.com/exam/test/77051414/submission?examPageSource=Intelligent&pid=55063941&testCallback=https%3A%2F%2Fwww.nowcoder.com%2Fexam%2Fintelligent%3FquestionJobId%3D10%26tagId%3D21003&testclass=%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91
来源:牛客网
3 对的好题

4

重写:三同一大一小(方法名、返回值类型、形参相同;访问权限>=重写前;抛出异常<=重写前)
接口:
1、接口中的方法都是隐式抽象的,会被隐式指定为 public  abstract(只能是public abstract,其他修饰符都会报错)
2、接口中的变量会被隐式指定为 public static final


6

1.抽象类可以有构造方法,接口中不能有构造方法。 
2.抽象类中可以有普通成员变量,接口中没有普通成员变量 
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。 
4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然  eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。  5. 抽象类中可以包含静态方法,接口中不能包含静态方法 (因为静态方法不能被重写


6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。 
7. 一个类可以实现多个接口,但只能继承一个抽象类 

7
8

new的时候只是初始化声明,底层并没有扩充,添加元素时,会直接分配20,也就是有初始值传入的话不进行扩容

9
public class Test {
	public static void main(String[] args) {
		System.out.print(layer(9));
	}
	//a(11) = a(10)+a(9)
	//a(10) = a(9)+a(8)_
	public static int layer(int n ) {
		if(n<=1) {
			return 1;
		}
		if(n==2) {
			return 2;
		}
		return layer(n-1)+layer(n-2);
	}
}
10

11

12
 
13

1、基本数据类型和基本封装类型使用==进行比较的话,直接判断值即可
2、使用Integer a = 1 或者 integer b = Integer.valueOf(1) 使用==进行比较的话,会先看值是否在-128-127之间,如果是的话,则值相等,两者相等,否则不相等。
3、两个基本型的封装型进行equals()比较,首先equals()会比较类型,如果类型相同,则继续比较值,如果值也相同,返回true
4、基本型封装类型调用equals(),但是参数是基本类型,这时候,先会进行自动装箱,基本型转换为其封装类型,再进行3中的比较。

14
15
 16 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值