Java编程精选试题解析

1 下载量 71 浏览量 更新于2024-09-01 收藏 90KB PDF 举报
表现,发生在子类继承父类的时候。当子类中有一个方法与父类中相同名称、相同参数列表的方法时,若子类的方法完全覆盖了父类的方法,这就是覆盖。覆盖要求子类方法的访问权限不低于父类方法,返回类型必须与父类完全相同,参数列表也要完全一致,并且不能改变被覆盖方法的静态/非静态属性。 重载(Overloading)则是指在一个类中可以有多个同名方法,但这些方法的参数列表必须不同(参数个数、参数类型或参数顺序不同)。重载方法的返回类型可以不同,但是主要区别在于参数列表。 在Java中,`float f = 3.4` 是不正确的,因为3.4是double类型,需要强制转换为float,正确的写法是`float f = 3.4f`。 对象作为参数传递时,Java总是进行引用传递。这意味着方法可以改变对象的内部状态,但不能改变传递的对象引用本身。 声明为`final`的类不能被继承,`final`方法不能被重写,`final`变量一旦赋值后不能再次赋值。`finally`块在异常处理中用于确保某些代码一定会被执行,无论是否发生异常。 `Error`和`Exception`都是Java的异常类型,但`Error`通常表示系统级错误,如内存不足,是程序无法恢复的错误;`Exception`是程序中可预见的异常,可以通过try-catch-finally结构进行捕获和处理。 `new Character('a')`创建了一个字符对象,`Character.valueOf('a')`创建了一个字符引用对象。两者的区别在于前者直接实例化了一个新的对象,而后者可能复用已存在的对象,根据字符池的机制。 `short s1 = 1; s1 = s1 + 1;` 和 `short s1 = 1; s1 += 1;` 都会导致错误,因为`+1`操作会将结果转换为int类型,需要强制类型转换回short才能赋值给`s1`。 数组的长度是通过`.length`属性获取,而不是`length()`方法,而`String`类确实有一个`length()`方法用于获取字符串的长度。 `@Override`注解用于标记子类方法覆盖父类方法,确保编译器检查方法是否真正覆盖了父类的方法,避免因方法签名不匹配导致的错误。而没有`@Override`的情况下,即使方法签名不正确,编译也能通过,但在运行时可能会抛出`AbstractMethodError`。 这些Java试题涵盖了基本类型转换、对象传递、访问修饰符、异常处理、多态性、对象创建以及方法重写等多个核心概念,这些都是Java程序员必须掌握的基础知识。通过这些试题,可以检验和提升对Java语言的理解。