java中相似类、方法、变量、修饰符等区别

一、copyof和arraycopy

1、copyof

   public static void main(String[] args) {
        int [] c={3,1,2,5};
        int [] d=Arrays.copyOf(c,10);
        System.out.println(Arrays.toString(d));
    }

源码:
original - 要复制的数组
newLength - 要返回的副本的长度
在这里插入图片描述
2、arraycopy
System.arraycopy(Object src,int srcPos, Object dest, int destPos,int length);
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。

  public static void main(String[] args) {
        int [] c={3,1,2,5}int [] d =new int[10];
        System.arraycopy(c,0,d,0,4);
        System.out.println(Arrays.toString(d));
    }

区别:1、copyof()是系统自动在内部新建一个数组,调用arraycopy()将original内容复制到copy中去,并且长度为newlength。返回copy。将原数组拷贝到一个长度为newLength的新数组中,并返回该数组。
2、copyof()可以看作是受限制的arraycopy(),他主要用来将原数组拷贝到一个新的数组,适用于数组扩容。
3、arraycopy()需要目标数组,将原数组拷贝到你自己定义的数组里,而且可以选择拷贝的起点和长度,放入新数组中的位置。

二、override和overload

重写和重载是java多态性的不同表现。重写实现的是运行时的多态;重载实现的是编译时的多态。
1、override(重写):方法名、参数列表相同,子类方法的权限大于或等于父类;不允许抛出比父类更多、权限更大的异常;调用子类的方法与父类的同名方法无关;在子类中完全覆盖了父类的方法。
2、overload(重载):在同一个类中,几个方法的名字相同,不同的(参数类型、顺序、个数) 同一个方法内的几个参数类型必须不一样;与返回值类型无关。

三、抽象类和接口

1、抽象类(abstract)
含有abstract修饰符的类即为抽象类,抽象类不能构建实例对象,含有抽象方法的类,必须定义为抽象类,抽象类中的方法不必是抽象类,抽象类中定于抽象方法必须在具体的子类中实现。所以,不能有抽象构造方法或抽象静态方法。如果子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为抽象类。
2、接口(interface)
可以说成抽象类的一种特例,接口中的所有方法必须是抽象的。接口中的方法默认为public abstract 类型,接口中的成员变量类型默认为public static final ,默认方法为default修饰,静态方法用static修饰。
3、区别
(1)抽象类可以有构造方法,接口中不能有构造方法。
(2)抽象类中可以有普通成员变量,接口中没有普通成员变量。
(3)抽象类可以包含非抽象的普通方法,接口中的所有方法必须是抽象的,不能有非抽象的普通方法。
(4)抽象类中的抽象方法的访问类型可以是public、protected;但接口中的抽象方法只能是public类型的,默认为public abstract 类型。
(5)抽象类中可以包含静态方法,接口中不能包含静态方法(jdk1.8之后可以有静态方法,但需要有body)。
(6)抽象类和接口中都可以包含静态成员变量,抽象中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final(默认)类型。

四、throws和throw

一、throws
1、throws,定义一个方法的时候可以用throws关键字声明,表示此方法不处理异常,而是交给方法调用处进行处理。
2、使用throws的方法,调用时必须处理声明的异常,要么使用try-catch,要么继续使用throws声明。
3、任何方法都可以使用throws关键字声明异常类型,包括抽象方法
二、throw
1、throw关键字用于显示抛出异常,抛出的时候是抛出的是一个异常类的实例化对象。
2、在异常处理中,try语句要捕获的是一个异常对象,那么此异常对象也可以自己抛出。

三、区别:
1、throws用于方法声明处,用来声明该方法可能发生的异常类型,可以是多个异常类型,用来强制调用该方法时处理这些异常。
2、throw用于方法体中,用来抛出一个实际的异常对象,使用throw后,要么用try-catch捕获异常,要么使用throws声明异常。
3、抽象方法也可以使用throws。

五、final和finally

1、final
(1)修饰变量:变量的引用地址不可变,但是地址的内容可以改变。
(2)修饰方法:方法不可以被重写,但可以被重载。
(3)修饰类:类不能被继承。
2、finally
finally在定义异常的时候出现,不管前面是在try里面执行还是在catch里面执行,一定最后在执行finally的语句。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值