java 编译时找不到同一包中的文件_Java基础笔试练习(七)
Java基礎筆試練習(七)
1.下列程序執行后結果為( )?
class A { public int func1(int a, int b) { return a - b; }}class B extends A { public int func1(int a, int b) { return a + b; }}public class ChildClass { public static void main(String[] args) { A a = new B(); B b = new B(); System.out.println("Result=" + a.func1(100, 50)); System.out.println("Result=" + b.func1(100, 50)); }}A.Result=150Result=150
B.Result=100Result=100
C.Result=100Result=150
D.Result=150Result=100
答案:
A
解析:
其實很簡單,涉及轉型的題目,分為向上或者向下轉型。
關鍵的來了,不論向上或者向下轉型,都是一句話,“編譯看左邊,運行看右邊”。也就是編譯時候,會看左邊引用類型是否能正確編譯通過,運行的時候是調用右邊的對象的方法。就本題來說,編譯時候會發現左邊滿足條件所以編譯通過,運行時候又會調用右邊也就是 class B 的方法,所以答案都是150。
2.下列哪個類的聲明是正確的?
A.protected private number;
B.public abstract class Car{}
C.abstract private move(){}
D.abstract final class HI{}
答案:
B
解析:
抽象類的目的就是為了讓子類實現他本身的方法
final修飾的東西不能被更改或繼承
abstract存在的意義是為了讓子類實現方法而存在,final的意義是不讓子類進行修改。兩者存在互斥關系
3.關于抽象類敘述正確的是? ( )
A.抽象類不能實現接口
B.抽象類必須有“abstract class”修飾
C.抽象類必須包含抽象方法
D.抽象類也有類的特性,可以被實例化
答案:
B
解析:
A.抽象類是可以實現接口的,而且抽象類也可以繼承自抽象類
B.對
C.抽象類指有abstract修飾的class,其可以包含抽象方法,也可以不包含
D.抽象類和接口都是不能被實例化的,只有具體的類才可以被實例化
4.若有定義語句: int a=10 ; double b=3.14 ; 則表達式 'A'+a+b 值的類型是()
A.char
B.int
C.double
D.float
答案:
C
解析:
char < short < int < float < double 不同類型運算結果類型向右邊靠齊。
5.When is the text “Hi there”displayed?
public class StaticTest{ static { System.out.println(“Hi there”); } public void print() { System.out.println(“Hello”); } public static void main(String args[]) { StaticTest st1 = new StaticTest(); st1.print(); StaticTest st2 = new StaticTest(); st2.print(); }}A.Never.
B.Each time a new object of type StaticTest is created.
C.Once when the class is loaded into the Java virtual machine.
D.Only when the main() method is executed.
答案:
C
解析:
類中靜態語句塊僅在類加載時被執行一次
6.在開發中使用泛型取代非泛型的數據類型(比如用ArrayList取代ArrayList),程序的運行時性能會變得更好。
A.對
B.錯
答案:
B
解析:
泛型僅僅是java的一顆語法糖,它不會影響java虛擬機生成的匯編代碼,在編譯階段,虛擬機就會把泛型的類型擦除,還原成沒有泛型的代碼,頂多編譯速度稍微慢一些,執行速度是完全沒有什么區別的。
7.以下說法中正確的有?
A.StringBuilder是 線程不安全的
B.Java類可以同時用 abstract和final聲明
C.HashMap中,使用 get(key)==null可以 判斷這個Hasmap是否包含這個key
D.volatile關鍵字不保證對變量操作的原子性
答案:
A D
解析:
String最慢的原因:
String為字符串常量,而StringBuilder和StringBuffer均為字符串變量,即String對象一旦創建之后該對象是不可更改的,但后兩者的對象是變量,是可以更改的。
String:適用于少量的字符串操作的情況
StringBuilder:適用于單線程下在字符緩沖區進行大量操作的情況
StringBuffer:適用多線程下在字符緩沖區進行大量操作的情況
在線程安全上,StringBuilder是線程不安全的,而StringBuffer是線程安全的
8.下面關于Java package的描述,哪個是正確的:()
A.包不提供將所有類名分區為更易管理的塊的機制.
B.包提供可見性控制機制.
C.包的一個重要屬性是包內定義的所有類都可以通過該包外的代碼訪問
D.聲明為包的一部分的類的.class文件可以存儲在多個目錄中.
答案:
B
解析:
包的作用:
1、把功能相似或相關的類或接口組織在同一個包中,方便類的查找和使用。
2、如同文件夾一樣,包也采用了樹形目錄的存儲方式。同一個包中的類名字是不同的,不同的包中的類的名字是可以相同的,當同時調用兩個不同包中相同類名的類時,應該加上包名加以區別。因此,包可以避免名字沖突。
3、包也限定了訪問權限,擁有包訪問權限的類才能訪問某個包中的類。
Java使用包(package)這種機制是為了防止命名沖突,訪問控制,提供搜索和定位類(class)、接口、枚舉(enumerations)和注釋(annotation)等。
9.下面代碼執行后的結果為( )?
nt main(){int sum=0;int i=0,j=0;for(j=0;j<6;j++){if(j%2)continue;sum++;}printf("sum=%d總結
以上是生活随笔為你收集整理的java 编译时找不到同一包中的文件_Java基础笔试练习(七)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10怎么将任务栏变成白色 win1
- 下一篇: arraylist如何检测某一元素是否为