• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. java期末考試試題及答案

        時間:2025-09-22 17:00:44 賽賽 SUN認證 我要投稿
        • 相關推薦

        java期末考試試題及答案(精選3套)

          在平時的學習、工作中,我們都可能會接觸到考試題,考試題是命題者根據一定的考核需要編寫出來的。你知道什么樣的考試題才算得上好考試題嗎?下面是小編幫大家整理的java期末考試試題及答案,歡迎大家分享。

        java期末考試試題及答案(精選3套)

          java期末考試試題及答案 1

          1.請看下列代碼:

          class ClassA {}

          class ClassB extends ClassA {}

          class ClassC extends ClassA {}

          public class Test{

          public static void main(String[] args) {

          ClassA p0 = new ClassA();

          ClassB p1 = new ClassB();

          ClassC p2 = new ClassC();

          ClassA p3 = new ClassB();

          ClassA p4 = new ClassC();

          <插入代碼>

          }

          }

          可以在<插入代碼>處,填入的代碼正確的是()

          A.p0 = p1;

          B.p1 =p2;

          C.p2 = p4;

          D.p2 = (ClassC)p1;

          正確答案:A

          2.運行下面程序:

          public class Foo {

          public static void main(String[] args) {

          StringBuffer a=new StringBuffer("A");

          StringBuffer b=new StringBuffer("B");

          operator(a,b);

          System.out.println(a+","+b);

          }

          public static void operator(StringBuffer x,StringBuffer y){

          x.append(y);

          y=x;

          }

          }

          輸出的結果是:()。

          A.A,B

          B.A,A

          C.B,B

          D.AB,B

          正確答案:D

          3.下列代碼的輸出結果是: ()。

          public class A {

          public void info(){

          System.out.println("A info");

          }

          }

          public class B extends A{

          public void info(){

          System.out.println("B info");

          }

          public static void main(String[] args) {

          B b=new B();

          A a=b;

          a.info();

          }

          }

          A.B info

          A info

          B.A info

          B info

          C.A info

          D.B info

          正確答案:D

          4.下列代碼運行的結果是()。

          public class Base {

          public static final String FOO = "foo";

          public static void main(String[] args) {

          Base b = new Base();

          Sub s = new Sub();

          System.out.print(Base.FOO);

          System.out.print(Sub.FOO);

          System.out.print(b.FOO);

          System.out.print(s.FOO);

          System.out.print(((Base) s).FOO);

          }

          }

          class Sub extends Base {

          public static final String FOO = "bar";

          }

          A.foofoofoofoofoo

          B.foobarfoobarbar

          C.foobarfoofoofoo

          D.foobarfoobarfoo

          正確答案:D

          5.執行下列語句:

          int a = 0x9af700; // 00 00 00 10 01 10 10 1111 0111 0000 0000 00

          a <<= 2;

          變量a的值為:()。

          A. 0x26bdc00

          B. 0xc6bdc00

          C. 0x3fa0000

          D. 0x7e02ffff

          正確答案:A

          6. 下面的代碼用于對數組arr實現冒泡排序:【1,2,3,4,5】

          for (int i = 0; i < arr.length - 1; i++) {

          boolean isSwap = false;

          空白處

          if (!isSwap)

          break;

          }

          下列選項中,空白處可以填入的代碼是:()。//每輪比較結束把最小的放在前面

          A. for (int j = arr.length - 1; j > i; j--) {

          if (arr[j] < arr[j - 1]) {

          int temp = arr[j];

          arr[j] = arr[j - 1];

          arr[j - 1] = temp;

          isSwap = true;

          }

          }

          B. for (int j = arr.length - 1; j > 0; j--) {

          if (arr[j] < arr[j - 1]) {

          int temp = arr[j];

          arr[j] = arr[j - 1];

          arr[j - 1] = temp;

          isSwap = true;

          }

          }

          C. for (int j = i + 1; j< arr.length; j++) {

          if (arr[j] < arr[j - 1]) {

          int temp = arr[j];

          arr[j] = arr[j - 1];

          arr[j - 1] = temp;

          isSwap = true;

          }

          }

          D. for (int j = i; j< arr.length; j++) {

          if (arr[j] < arr[j - 1]) {

          int temp = arr[j];

          arr[j] = arr[j - 1];

          arr[j - 1] = temp;

          isSwap = true;

          }

          }

          正確答案:A

          7.下列語句創建對象的總個數是:()。

          String s=”a”+”b”+”c”+”d”+”e”;

          A.1

          B.2

          C.3

          D.4

          正確答案:A

          8.運行下列程序:

          String str = "**oracle***oracle*****oracle***";

          String str1 = "oracle";

          int index = 0;

          while ((index = str.indexOf(str1, index)) != -1) {

          System.out.print(index+””);

          index += str1.length();

          }

          控制臺輸出的結果是:()。

          A.1 10 21

          B.2 11 22

          C.3 13 23

          D.5 13 22

          正確答案:B

          9. 下列表達式中,可以得到精確結果的是()。

          A. double d1 = 3.0 - 2.6; 0.4

          B. double d4 = 2.5 * 1.5;

          C. double d2 = 30/300;

          D. double d3 = 1/2 + 0.5;

          正確答案:B

          10.類Super及Sub定義如下:

          public class Super {

          private void f() {

          System.out.println("Super.f()");

          }

          public void g() {

          f();

          }

          public void k() {

          f();

          }

          }

          public class Sub extends Super {

          private void f() {

          System.out.println("Sub.f()");

          }

          public void k() {

          f();

          }

          }

          運行下列語句:

          Super obj = new Sub();

          obj.g();

          obj.k();

          輸出的結果是:()。

          A. Sub.f()

          Sub.f()

          B. Sub.f()

          Super.f()

          C. Super.f()

          Sub.f()

          D. Super.f()

          Super.f()

          正確答案:C

          11. 下列數組聲明語句中,錯誤的是:()。

          A.int[] arr = new int[8];

          B.int[] arr = new int[8]{};

          C.int[] arr = {};

          D.int[] arr = new int[]{};

          正確答案:B

          12.執行下列語句:

          int num=~3+2; 變量num的值為()。

          A.-3

          B.3

          C.-2

          D.-1

          正確答案:C

          13.請看下列代碼:

          interface Data { public void load(); }

          abstract class Info { public abstract void load(); }

          下列選項中,能正確使用Data接口和Info類的是()。

          A.public class Employee extends Info implements Data {

          public void load() { /*do something*/ }

          }

          B.public class Employee implements Info extends Data {

          public void load() { /*do something*/ }

          }

          C.public class Employee implements Info extends Data {

          public void Data.load() { /*d something */ }

          public void load() { /*do something */ }

          }

          D.public class Employee extends Info implements Data {

          public void load() { /*do something */ }

          public void Info.load() { /*do something*/ }

          }

          正確答案:A

          14.下列代碼編譯和運行的結果是()。

          public class A {

          public void start() {

          System.out.println("TestA");

          }

          }

          public class B extends A {

          public void start() {

          System.out.println("TestB");

          }

          public static void main(String[] args) {

          ((A) new B()).start();

          }

          }

          A.輸出:TestA

          B.輸出:TestB

          C.輸出:TestA TestB

          D.編譯錯誤

          正確答案:B

          15.類A,B的定義如下:

          class A {

          private int a = 100;

          A() {

          System.out.print("A()");

          System.out.println(a);

          }

          }

          class B extends A {

          private int a = 200;

          B() {

          System.out.print("B()");

          System.out.println(a);

          }

          }

          運行下面的代碼:new B();

          輸出的結果是:()。

          A. A() 100

          B() 200

          B. A() 200

          B() 200

          C. B() 200

          A() 100

          D. B() 200

          A() 200

          正確答案:A

          16.下列代碼的輸出結果是()

          public static void main(String[] args) {

          String test = "a1b2c3";

          String[] tokens = test.split("\\d");

          for (String s : tokens)

          System.out.print(s + " ");

          }

          A.a b c

          B.1 2 3

          C.a1b2c3

          D.a1 b2 c3

          正確答案:A

          17. 關于Java線程說法錯誤的是()。

          A.創建線程的有2種方式,方式1是繼承Thread類,方式2是實現 Runnable 接口

          B.解決線程安全使用問題 synchronized關鍵字,使得同一時間只有一個線程執行該關鍵字限定的代碼段

          C.線程間通信所使用的方法有,wait,notify,notifyAll,它們都是 Thread 的方法

          D.Java線程包括5個狀態,線程的創建,可運行,運行,阻塞和消亡

          正確答案:C

          18.下列代碼的輸出結果是()。

          boolean b=true?false:true==true?false:true;//b=tuer?false:false

          System.out.println(b);

          A.true

          B.false

          C.null

          D.空字符串

          正確答案:B

          19.請看下列代碼編譯和運行的結果是()。

          interface DeclareStuff {

          public static final int EASY = 3;

          void doStuff(int t);// public rabstract

          }

          public class TestDeclare implements DeclareStuff {

          public static void main(String[] args) {

          int x = 5;

          new TestDeclare().doStuff(++x);

          }

          void doStuff(int s) {

          s += EASY + ++s;

          System.out.println("s=" + s);

          }

          }

          A.s=14

          B.s=16

          C.s=10

          D.編譯失敗

          正確答案:D

          20. 運行下面的程序:

          String[] fileNames = { "abc.txt", "bcd.exe", "cde.exe", "def.dat","efg.exe" };

          for (String fileName : fileNames) {

          if (fileName.endsWith(".exe")) {

          System.out.print(fileName.substring(0, fileName

          .lastIndexOf(".exe"))+" ");

          }

          }

          控制臺的輸出結果是:()。

          A. bcd. cde. efg.

          B. bc cd ef

          C. bcd.exe cde.exe efg.exe

          D. bcd cde efg

          正確答案:D

          21.下列代碼的作用說法不正確的是:()。

          class Card implements java.io.Serializable{}

          A.開啟序列化功能,使得Card類的對象可以存儲到文件中

          B.開啟序列化功能,使得Card類的對象可以在網絡上傳輸

          C.使得Card類的子類的對象可以被序列化

          D.導致Card的子類的對象不可以被反序列化

          正確答案:D

          22. 運行下列代碼,輸出為false的是:()。

          A. String st1 = "abc";

          System.out.println("abc" == st1);

          B. String st2 = "abc";

          System.out.println(st2.equals(new String("abc")));

          C. Integer i = 100; //

          System.out.println(100 == i);

          D. ArrayList list = new ArrayList();

          System.out.println(list.contains(null));

          正確答案:D

          23.運行下列程序:

          String str = "**java***java*****java*";

          String str1 = "java";

          int index = 0;

          while ((index = str.indexOf(str1, index)) != -1) {

          System.out.print(index+””);

          index += str1.length();

          }

          控制臺輸出的結果是:()。

          A. 1 8 17

          B. 2 9 18

          C. 5 12 21

          D. 6 13 22

          正確答案:B

          24. 下列代碼中不能正確獲取到Class類的對象的是:()。

          A.String sub = "hello";

          Class c1 = sub.getClass();

          B.Class c2 = int.TYPE;

          C.Class c1 = Class.forName ("java.lang.Integer");

          D.Button b = new Button();

          Class c1 = b.getClass();

          Class c2 = c1.getSuperclass();

          正確答案:B

          25.URLEncoding是一種應用于HTTP協議的編碼方式,字符串“你好”基于UTF-8的URLEncoding編碼為: “%E4%BD%A0%E5%A5%BD”

          其中E4、BD、A0為字符“你”的UTF-8編碼的十六進制形式(3個字節),而E5、A5、BD為字符“好”的UTF-8編碼的十六進制形式。

          下面的代碼用程序的方式輸出字符串“你好”的基于UTF-8的URLEncoding序列:

          String msg = "你好";

          空白處1

          StringBuilder sb = new StringBuilder();

          for (int i = 0; i < bs.length; i++) {

          空白處2

          sb.append("%").append(str);

          }

          System.out.println(sb.toString());

          空白處1及空白處2分別應填入的代碼是()。

          A. byte[] bs = msg.getChars("utf-8");

          和 String str = Integer.toHexString(bs[i]& 0xff).toUpperCase();

          B. byte[] bs = msg.getBytes("utf-8");

          和 String str = Integer.toHexString(bs[i]).toUpperCase();

          C. byte[] bs = msg.getBytes("utf-8");

          和 String str = Integer.toHexString(bs[i] & 0xff).toUpperCase();

          D. byte[] bs = msg.getBytes();

          和 String str = Integer.toHexString(bs[i]).toUpperCase();

          正確答案:C

          26.程序執行的結果是()。

          public class Test {

          String name="Tom";

          public Test(String name){

          name=name;

          }

          public static void main(String [] args){

          Test t = new Test("Jack");

          System.out.println(t.name);

          }

          }

          A.null

          B.Tom

          C.Jack

          D." "

          正確答案:B

          27. 下列屬于不合法Java標識符的是()。

          A._avaj

          B.5save

          C.Avaj

          D.$80

          正確答案:B

          28.下列代碼的輸出結果是()。

          public static void main(String[] args) {

          Runnable r = new Runnable() {

          public void run() {

          System.out.print("Cat");

          }

          };

          Thread t = new Thread(r) {

          public void run() {

          System.out.print("Dog");

          }

          };

          t.start();

          }

          A.Cat

          B.Dog

          C.沒有任何輸出

          D.拋出運行時異常

          正確答案:B

          29. 下面關于final說法正確的是:()。

          A.final修飾類時,該類能被繼承。

          B.final修飾方法時,該方法能被重寫。

          C.當使用static final 修飾的常量時,將采用編譯期綁定的方式。

          D.當使用final和abstract共同修飾一個類時,final應至于abstract之前。

          正確答案:C

          30. 下面關于final說法錯誤的是:()

          A. final修飾類時,該類不能被繼承。

          B. final修飾方法時,該方法不能被重寫。

          C. 當引用到使用static final 修飾的常量時,將采用編譯期綁定的方式。

          D. 當使用final和abstract共同修飾一個類時,final應至于abstract之前。

          正確答案:D

          31.請看下列代碼:

          public static void main(String[] args) {

          <插入代碼>

          System.out.println(s);

          }

          如果程序輸出的結果是4247,那么在<插入代碼>處應該填入代碼是()。

          A.String s = "123456789";

          s = (s-"123").replace(1,3,"24") - "89";

          B.StringBuffer s = new StringBuffer("123456789");

          s.(0,3).replace( 1,3, "24").(4,6);

          C.StringBuffer s = new StringBuffer("123456789");

          s.substring(3,6).( 1 ,3).( 1, "24");

          D.StringBuilder s = new StringBuilder("123456789");

          s.substring(3,6).( 1 ,2).( 1, "24");

          正確答案:B

          32. 下面關于interface,敘述錯誤的是:()

          A.一個interface可以繼承多個interface

          B.接口中的方法可以由private修飾

          C.interface中可以定義static final 常量

          D.interface中可以無任何方法定義

          正確答案:B

          33.分析如下代碼,輸出結果為()。

          public static void main(String[] args) {

          int i = 0;

          boolean re = false

          re = ((++i) + i == 2) ? true : false;

          System.out.println("i=" + i + ",re="+re);

          }

          A.i=1,re=true

          B.i=0,re=true

          C.i=1,re=false

          D.i=0,re=false

          正確答案:A

          34. 下列數組聲明語句中,錯誤的是:()。

          A. int[] arr = new int[]{};

          B. int[] arr = new int[];

          C. int[] arr = {};

          D. int[][] arr = new int[2][]

          正確答案:B

          35.下列代碼的'運行結果是()

          public static void main(String[] args) {

          String str = "420";

          str += 42;

          System.out.print(str);

          }

          A.42

          B.420

          C.462

          D.42042

          正確答案:D

          36.所謂“水仙花”數是一個整數等于各位數字立方的和,例如:153 = 1*1*1+5*5*5+3*3*3,下面的程序用于輸出2~1000內的水仙花數:

          for (int n = 2; n <= 1000; n++) {

          空白處

          if (s == n) {

          System.out.println(n);

          }

          }

          下列選項中,空白處可以填入的代碼是:()。

          A. int s = 0, n1 = n;

          while (n1 > 0) {

          int t = n1 % 10;

          s += t * t * t;

          n1 /= 10;

          }

          B. int s = 0, n1 = n;

          while (n1 > 0) {

          int t = n1 / 10;

          s+= t * t * t;

          n1 %= 10;

          }

          C. int s = 0;

          for(int n1 = n; n1>0; n1 /= 10) {

          int t = n1%10;

          s += t * t * t;

          }

          D.int s = 0;

          for(int n1 = n; n1>0; n1 %= 10) {

          int t = n1 / 10;

          s += t * t * t;

          }

          正確答案:AC

          37. 下面的方法屬于StringBuffer的是:()。

          A. size

          B.

          C.

          D. length

          正確答案:BCD

          38.類Super的定義如下:

          class A {

          protected void f() throws IOException {

          ………

          }

          }

          下列代碼段中,沒有編譯錯誤的是:()。

          A. class B extends A {

          public void f() throws Exception {

          ………

          }

          }

          B. class B extends A {

          public void g() throws IOException {

          f();

          }

          }

          C. class B extends A {

          public void g() {

          try {

          f();

          ………

          }catch(Exception e) {

          ………

          }catch(IOException e1) {

          ………

          }

          }

          }

          D. class B extends A {

          public void g() {

          try {

          f();

          }catch(IOException e) {

          throw new RuntimeException(e);

          }

          }

          }

          正確答案:BD

          39.查看如下代碼:

          public class Foo {

          public void method(String str,int age){}

          }

          下列選項中,和 Foo 類中 method 方法重載的方法是()。

          A.public int method(String str,int age){}

          B. public void method(int year,String s){}

          C. public int method(int year,String s){}

          D. public int method(String str){}

          正確答案:BCD

          40. 下列關于Java的說法,錯誤的是()。

          A. Java語言是純粹的面向對象的語言。

          B. Java程序的運行必須有Java虛擬機(JVM)的支持。

          C. Java語言支持指針。

          D. Java語言支持多重繼承。

          正確答案:CD

          41.矩陣是指縱橫排列的數據表格,最早來自于方程組的系數及常數所構成的方陣,如:

          a11 a12... a1n

          a21 a22... a2n

          ... ... ...

          am1 am2... amn

          矩陣乘積規則示例如下:

          兩個矩陣a和b可以相乘的條件是a矩陣的列數和b矩陣的行數相同,例如:

          假設矩陣a為“2行3列”:

          a11 a12 a13

          a21 a22 a23

          矩陣b為“3行2列”:

          b11 b12

          b21 b22

          b31 b32

          a和b可以相乘,乘積矩陣為:

          a11*b11+a12*b21+a13*b31 a11*b12+a12*b22+a13*b32

          a21*b11+a22*b21+a23*b31 a21*b12+a22*b22+a23*b32

          Matrix類的定義如下:

          public class Matrix {

          private double[][] data;

          private int rows;

          private int cols;

          public Matrix(int rows, int cols) {

          if (rows <= 0 || cols <= 0)

          throw new IllegalArgumentException("");

          this.rows = rows;

          this.cols = cols;

          data = new double[rows][cols];

          }

          public Matrix(int rows, int cols, String line) {

          if (rows <= 0 || cols <= 0 || line == null)

          throw new IllegalArgumentException("");

          String[] dataStr = line.split(",");

          if ( 空白處1 ) {

          throw new IllegalArgumentException("");

          }

          this.rows = rows;

          this.cols = cols;

          data = new double[rows][cols];

          for (int i = 0; i < dataStr.length; i++) {

          ( 空白處2 )

          }

          }

          public Matrix mul(Matrix ma) {

          if ( 空白處3 ) {

          throw new IllegalArgumentException();

          }

          Matrix mc = new Matrix(rows, ma.cols);

          for (int i = 0; i < mc.getRows(); i++) {

          for (int j = 0; j < mc.getCols(); j++) {

          for ( 空白處4 ) {

          空白處5

          }

          }

          }

          return mc;

          }

          public int getRows() {

          return rows;

          }

          public int getCols() {

          return cols;

          }

          public String toString() {

          StringBuilder sb = new StringBuilder();

          for (int i = 0; i < rows; i++) {

          for (int j = 0; j < cols - 1; j++) {

          sb.append(data[i][j]).append(",");

          }

          sb.append(data[i][cols - 1]).append("\n");

          }

          return sb.toString();

          }

          }

          (1). 空白處1()

          A. dataStr.length != (rows-1) * (cols-1)

          B. dataStr.length != (rows-1) * cols

          C. dataStr.length != rows * cols

          D. dataStr.length != rows * (cols-1)

          正確答案:C

          (2). 空白處2()

          A. data[i % cols][i / cols] = Double.parseDouble(dataStr[i]);

          B. data[i/cols][i % cols] = Double.parseDouble(dataStr[i]);

          C. data[i/ rows][i % rows] = Double.parseDouble(dataStr[i]);

          D. data[i % rows][i /rows] = Double.parseDouble(dataStr[i]);

          正確答案:B

          (3). 空白處3()

          A. cols != ma.cols

          B. rows != ma.cols

          C. rows != ma.rows

          D. cols != ma.rows

          正確答案:D

          (4). 空白處4()

          A. int k = 0; k < cols; k++

          B. int k = 0; k

          C. int k = 0; k

          D. int k = 0; k

          正確答案:A

          (5). 空白處5()

          A. mc.data[i][j] += data[k][j] * ma.data[i][k];

          B. mc.data[i][j] += data[k][i] * ma.data[j][k];

          C. mc.data[i][j] += data[j][k] * ma.data[k][i];

          D. mc.data[i][j] += data[i][k] * ma.data[k][j];

          正確答案:D

          42.下面的程序用于從54張撲克牌中,隨機選出13張不同的撲克牌。

          public static void main(String[] args) {

          String[] cards = { "紅桃3", "紅桃4", "紅桃5", "紅桃6", "紅桃7",

          "紅桃8","紅桃9","紅桃10","紅桃J","紅桃Q","紅桃K","紅桃A",

          "黑桃3", "黑桃4", "黑桃5", "黑桃6", "黑桃7","黑桃8","黑桃9",

          "黑桃10","黑桃J","黑桃Q","黑桃K","黑桃A","紅方塊3", "紅方塊4",

          "紅方塊5", "紅方塊6", "紅方塊7","紅方塊8","紅方塊9","紅方塊10",

          "紅方塊J","紅方塊Q","紅方塊K","紅方塊A","黑方塊3", "黑方塊4",

          "黑方塊5", "黑方塊6", "黑方塊7","黑方塊8","黑方塊9","黑方塊10",

          "黑方塊J","黑方塊Q","黑方塊K","黑方塊A"};

          int len=cards.length;

          空白處1

          while (true) {

          Random rd = new Random();

          空白處2

          cardThirteen.add(cards[index]);

          if ( 空白處3 == 13) {

          break;

          }

          }

          空白處4

          while ( 空白處5 ) {

          System.out.println(it.next());

          }

          }

          (1).下列選項中,能填入空白處1的代碼是( )

          A.Set cardThirteen = new HashSet();

          B.Set cardThirteen = new Set();

          C.List cardThirteen = new List();

          D.List cardThirteen = new ArrayList();

          正確答案:A

          (2).下列選項中,能填入空白處2的代碼是( )

          A.index = rd.nextInt();

          B.index = rd.nextInt(5);

          C.index = rd.nextInt(len + 1);

          D.index = rd.nextInt(len);

          正確答案:D

          (3).下列選項中,能填入空白處3的代碼是( )

          A.cardThirteen.size

          B.cardThirteen.length

          C.cardThirteen.length()

          D.cardThirteen.size()

          正確答案:D

          (4).下列選項中,能填入空白處4的代碼是( )

          A.Iterator it = cardThirteen.iterator();

          B.Iterator it = cardThirteen.next();

          C.Iterators it = cardThirteen.iterator();

          D.Iterators it = cardThirteen.nexts();

          正確答案:A

          (5).下列選項中,能填入空白處5的代碼是( )

          A.it.hasNext()

          B.it.hasNexts ()

          C.it.next ()

          D.it.nexts()

          正確答案:A

          java期末考試試題及答案 2

          1. 下面哪些是Thread類的方法()

          A start() B run() C exit() D getPriority()

          答案:ABD

          解析:看Java API docs吧:http://docs.oracle.com/javase/7/docs/api/,exit()是System類的方法,如System.exit(0)。

          2. 下面關于java.lang.Exception類的說法正確的是()

          A 繼承自Throwable B Serialable CD 不記得,反正不正確

          答案:A

          解析:Java異常的基類為java.lang.Throwable,java.lang.Error和java.lang.Exception繼承 Throwable,RuntimeException和其它的Exception等繼承Exception,具體的RuntimeException繼承RuntimeException。

          擴展:錯誤和異常的區別(Error vs Exception)

          1) java.lang.Error: Throwable的子類,用于標記嚴重錯誤。合理的應用程序不應該去try/catch這種錯誤。絕大多數的錯誤都是非正常的,就根本不該出現的。

          java.lang.Exception: Throwable的子類,用于指示一種合理的程序想去catch的條件。即它僅僅是一種程序運行條件,而非嚴重錯誤,并且鼓勵用戶程序去catch它。

          2) Error和RuntimeException 及其子類都是未檢查的異常(unchecked exceptions),而所有其他的Exception類都是檢查了的異常(checked exceptions).

          checked exceptions: 通常是從一個可以恢復的程序中拋出來的,并且最好能夠從這種異常中使用程序恢復。比如FileNotFoundException, ParseException等。檢查了的異常發生在編譯階段,必須要使用try…catch(或者throws)否則編譯不通過。

          unchecked exceptions: 通常是如果一切正常的話本不該發生的異常,但是的確發生了。發生在運行期,具有不確定性,主要是由于程序的邏輯問題所引起的。比如ArrayIndexOutOfBoundException, ClassCastException等。從語言本身的角度講,程序不該去catch這類異常,雖然能夠從諸如RuntimeException這樣的異常中catch并恢復,但是并不鼓勵終端程序員這么做,因為完全沒要必要。因為這類錯誤本身就是bug,應該被修復,出現此類錯誤時程序就應該立即停止執行。 因此,面對Errors和unchecked exceptions應該讓程序自動終止執行,程序員不該做諸如try/catch這樣的事情,而是應該查明原因,修改代碼邏輯。

          RuntimeException:RuntimeException體系包括錯誤的類型轉換、數組越界訪問和試圖訪問空指針等等。

          處理RuntimeException的原則是:如果出現 RuntimeException,那么一定是程序員的錯誤。例如,可以通過檢查數組下標和數組邊界來避免數組越界訪問異常。其他(IOException等等)checked異常一般是外部錯誤,例如試圖從文件尾后讀取數據等,這并不是程序本身的錯誤,而是在應用環境中出現的'外部錯誤。

          3. 下面程序的運行結果是()

          String str1 = "hello";

          String str2 = "he" + new String("llo");

          System.err.println(str1 == str2);

          答案:false

          解析:因為str2中的llo是新申請的內存塊,而==判斷的是對象的地址而非值,所以不一樣。如果是String str2 = str1,那么就是true了。

          4. 下列說法正確的有()

          A. class中的constructor不可省略

          B. constructor必須與class同名,但方法不能與class同名

          C. constructor在一個對象被new時執行。

          D.一個class只能定義一個constructor

          答案:C

          解析:這里可能會有誤區,其實普通的類方法是可以和類名同名的,和構造方法唯一的區分就是,構造方法沒有返回值。

          5. 具體選項不記得,但用到的知識如下:

          String []a = new String[10];

          則:a[0]~a[9] = null

          a.length = 10

          如果是int []a = new int[10];

          則:a[0]~a[9] = 0

          a.length = 10

          6. 下面程序的運行結果:()

          public static void main(String args[]) {

          Thread t = new Thread() {

          public void run() {

          pong();

          }

          };

          t.run();

          System.out.print("ping");

          }

          static void pong() {

          System.out.print("pong");

          }

          #FormatImgID_0#

          A pingpong B pongping C pingpong和pongping都有可能 D 都不輸出

          答案:B

          解析:這里考的是Thread類中start()和run()方法的區別了。start()用來啟動一個線程,當調用start方法后,系統才會開啟一個新的線程,進而調用run()方法來執行任務,而單獨的調用run()就跟調用普通方法是一樣的,已經失去線程的特性了。因此在啟動一個線程的時候一定要使用start()而不是run()。

          7. 下列屬于關系型數據庫的是()

          A. Oracle B MySql C IMS D MongoDB

          答案:AB

          解答:IMS(Information Management System )數據庫是IBM公司開發的兩種數據庫類型之一;

          一種是關系數據庫,典型代表產品:DB2;

          另一種則是層次數據庫,代表產品:IMS層次數據庫。

          非關系型數據庫有MongoDB、memcachedb、Redis等。

          8. GC線程是否為守護線程?()

          答案:是

          解析:線程分為守護線程和非守護線程(即用戶線程)。

          只要當前JVM實例中尚存在任何一個非守護線程沒有結束,守護線程就全部工作;只有當最后一個非守護線程結束時,守護線程隨著JVM一同結束工作。

          守護線程最典型的應用就是 GC (垃圾回收器)

          9. volatile關鍵字是否能保證線程安全?()

          答案:不能

          解析:volatile關鍵字用在多線程同步中,可保證讀取的可見性,JVM只是保證從主內存加載到線程工作內存的值是最新的讀取值,而非cache中。但多個線程對

          volatile的寫操作,無法保證線程安全。例如假如線程1,線程2 在進行read,load 操作中,發現主內存中count的值都是5,那么都會加載這個最新的值,在線程1堆count進行修改之后,會write到主內存中,主內存中的count變量就會變為6;線程2由于已經進行read,load操作,在進行運算之后,也會更新主內存count的變量值為6;導致兩個線程及時用volatile關鍵字修改之后,還是會存在并發的情況。

          10. 下列說法正確的是()

          A LinkedList繼承自List

          B AbstractSet繼承自Set

          C HashSet繼承自AbstractSet

          D WeakMap繼承自HashMap

          答案:AC

          解析:下面是一張下載的Java中的集合類型的繼承關系圖,一目了然。

          #FormatImgID_1#

          11. 存在使i + 1 < i的數嗎()

          答案:存在

          解析:如果i為int型,那么當i為int能表示的最大整數時,i+1就溢出變成負數了,此時不就

          擴展:存在使i > j || i <= j不成立的數嗎()

          答案:存在

          解析:比如Double.NaN或Float.NaN,感謝@BuilderQiu網友指出。

          12. 0.6332的數據類型是()

          A float B double C Float D Double

          答案:B

          解析:默認為double型,如果為float型需要加上f顯示說明,即0.6332f

          13. 下面哪個流類屬于面向字符的輸入流( )

          A BufferedWriter B FileInputStream C ObjectInputStream D InputStreamReader

          答案:D

          解析:Java的IO操作中有面向字節(Byte)和面向字符(Character)兩種方式。

          面向字節的操作為以8位為單位對二進制的數據進行操作,對數據不進行轉換,這些類都是InputStream和OutputStream的子類。

          面向字符的操作為以字符為單位對數據進行操作,在讀的時候將二進制數據轉為字符,在寫的時候將字符轉為二進制數據,這些類都是Reader和Writer的子類。

          總結:以InputStream(輸入)/OutputStream(輸出)為后綴的是字節流;

          以Reader(輸入)/Writer(輸出)為后綴的是字符流。

          14. Java接口的修飾符可以為()

          A private B protected C final D abstract

          答案:CD

          解析:接口很重要,為了說明情況,這里稍微啰嗦點:

          (1)接口用于描述系統對外提供的所有服務,因此接口中的成員常量和方法都必須是公開(public)類型的,確保外部使用者能訪問它們;

          (2)接口僅僅描述系統能做什么,但不指明如何去做,所以接口中的方法都是抽象(abstract)方法;

          (3)接口不涉及和任何具體實例相關的細節,因此接口沒有構造方法,不能被實例化,沒有實例變量,只有靜態(static)變量;

          (4)接口的中的變量是所有實現類共有的,既然共有,肯定是不變的東西,因為變化的東西也不能夠算共有。所以變量是不可變(final)類型,也就是常量了。

          (5) 接口中不可以定義變量?如果接口可以定義變量,但是接口中的方法又都是抽象的,在接口中無法通過行為來修改屬性。有的人會說了,沒有關系,可以通過 實現接口的對象的行為來修改接口中的屬性。這當然沒有問題,但是考慮這樣的情況。如果接口 A 中有一個public 訪問權限的靜態變量 a。按照 Java 的語義,我們可以不通過實現接口的對象來訪問變量 a,通過 A.a = xxx; 就可以改變接口中的變量 a 的值了。正如抽象類中是可以這樣做的,那么實現接口 A 的所有對象也都會自動擁有這一改變后的 a 的值了,也就是說一個地方改變了 a,所有這些對象中 a 的值也都跟著變了。這和抽象類有什么區別呢,怎么體現接口更高的抽象級別呢,怎么體現接口提供的統一的協議呢,那還要接口這種抽象來做什么呢?所以接口中 不能出現變量,如果有變量,就和接口提供的統一的抽象這種思想是抵觸的。所以接口中的屬性必然是常量,只能讀不能改,這樣才能為實現接口的對象提供一個統 一的屬性。

          通俗的講,你認為是要變化的東西,就放在你自己的實現中,不能放在接口中去,接口只是對一類事物的屬性和行為更高層次的抽象。對修改關閉,對擴展(不同的實現 implements)開放,接口是對開閉原則的一種體現。

          所以:

          接口的方法默認是public abstract;

          接口中不可以定義變量即只能定義常量(加上final修飾就會變成常量)。所以接口的屬性默認是public static final 常量,且必須賦初值。

          注意:final和abstract不能同時出現。

          15. 不通過構造函數也能創建對象嗎()

          A 是 B 否

          答案:A

          解析:Java創建對象的幾種方式(重要):

          (1) 用new語句創建對象,這是最常見的創建對象的方法。

          (2) 運用反射手段,調用java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實例方法。

          (3) 調用對象的clone()方法。

          (4) 運用反序列化手段,調用java.io.ObjectInputStream對象的 readObject()方法。

          (1)和(2)都會明確的顯式的調用構造函數 ;(3)是在內存上對已有對象的影印,所以不會調用構造函數 ;(4)是從文件中還原類的對象,也不會調用構造函數。

          坐完筆試后,很多人都希望能提前預知面試題目,最好的方法就是整理一些經典的面試題,java面試的專業性比較強,如果你的基礎不夠扎實,那么最好找些經典的java面試題及答案分析,提前參透一下吧!

          java面試題1、說說HashMap和Hashtable的差別

          答案分析:

          都屬于Map接口的類,實現了將惟一鍵映射到特定的值上。

          HashMap類沒有分類或排序。他允許一個null鍵和多個null值。

          Hashtable類似于HashMap,不過不允許null鍵和null值。他也比HashMap慢,因為他是同步的。

          java面試題2、Anonymous Inner Class (匿名內部類)是否能extends(繼承)其他類,是否implements(實現)interface(接口)?

          答案分析:

          匿名的內部類是沒有名字的內部類。不能extends(繼承)其他類,但一個內部類能作為一個接口,由另一個內部類實現。

          java面試題3、STRING與STRINGBUFFER的區別是什么?

          答案分析:

          STRING的長度是不可變的,STRINGBUFFER的長度是可變的。如果你對字符串中的內容經常進行操作,特別是內容要修改時,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法。

          java面試題4、什么時候用assert

          答案分析:

          斷言是個包含布爾表達式的語句,在執行這個語句時假定該表達式為true。如果表達式計算為false,那么系統會報告一個AssertionError,他用于調試目的。

          java面試題5、Set里的元素是不能重復的,那么用什么方法來區分重復和否呢?是用==還是equals()?他們有何差別?

          答案分析:

          Set里的元素是不能重復的,那么用iterator()方法來區分重復和否。equals()是判讀兩個Set是否相等。

          equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是當兩個分離的對象的內容和類型相配的話,返回真值。

          java面試題6、List, Set, Map是否繼承自Collection接口?

          答案分析:

          List,Set是

          Map不是

          java期末考試試題及答案 3

          選擇題

          1). 下面( )是合法的標識符。

          A.$persons

          B.2Users

          C.*poi nt

          D.this

          正確答案:A

          答案解析:本題考查Java 標識符的命名,屬于考試重點內容,應該掌握。Java 中標識符的命名規則是:標識符以字母、下畫線或美元符作為首字符的字符串序列;標識符是區分大小寫的;標識符的字符數沒有限制。由此可見,Java 中標識符不能以數字開頭,所以選項B錯誤;不能以“*”開頭,選項C錯誤;this 是專用標識符,具有專門的意義和用途,選項D 錯誤,只有選項A 正確。

          2). 設有一個已按各元素的值排好序的順序表(長度大于2),現分別用順序查找法和二分查找法查找與給定值k相等的元素,比較的次數分別是s和b,在查找不成功情況下s和b的關系是( )。

          A.s =b

          B.s>b

          C.s

          D.s>=b

          正確答案:B

          答案解析:順序查找的基本思想是:從表的一端開始,順序掃描線性表,依次將掃描到結點的關鍵字和給定值k進行比較,若當前掃描到結點的關鍵字與k相等,則查找成功;若掃描結束后,仍未找到關鍵字等于k的結點,則查找失敗。二分查找法是一種效率較高的查找方法,要求線性表是有序表。基本思想是:首先將待查的k值和有序表R[O]~R[n -1]的中間位置mid上的結點的關鍵字進行比較,若相等,則查找完成;否則,若R[mi d]. key>k,則說明待查找的結點只可能在左子表R[O]~R[mi d -1]中,我們只需在左子表中繼續進行折半查找,若R[mi d]. key

          3). 定義一個表示10個值為null的字符串數組,下面選項正確的是( )。

          A.String []a;

          B.String a[];

          C.char a[10][];

          D.String a[]=new String[10];

          正確答案:D

          答案解析:本題考查字符串數組變量的聲明。選項A和選項B的效果是一樣的,都是用來定義一個字符串數組,但沒有指明數組個數,不滿足題目要求;選項C是一個二維的字符數組,在C語言中,一個二維的字符數組就可以表示一個一維的字符串數組,而在Java中,字符char是基本類型,字符串String則是以對象的形式來表示的;選項D正確,它定義了一個含有10個元素的字符串數組,如果沒有給字符串數組賦值,則默認為null。

          4). Thread類中能運行線程的方法是( )。

          A.resume()

          B.start()

          C.run()

          D.init()

          正確答案:C

          答案解析:resume()是Thread類提供的用于線程控制的方法;start()是Thread類中的方法,新建的線程不會自動運行,必須調用線程的start()方法才能運行該線程;run()是Thread類中的方法,在該方法中定義了線程的具體行為,線程開始執行時,就是從它的run()方法開始執行的,就像Java應用程序從main()開始、Applet從init()開始一樣;init()不是Thread類中的`方法。

          5). 在面向對象的方法中,一個對象請求另一個對象為其服務的方式是通過發送

          A.調用語句

          B.命令

          C.口令

          D.消息

          正確答案:D

          6). 下列的( )原始類型在使用流時可以互換。

          A.byte和boolean

          B.char和int

          C.byte和char

          D.String和char

          正確答案:B

          答案解析:本題考查Java語言中字節類型的概念。在Java語言中,byte是字節類型,用1字節表示.boolean是布爾類型,用true和false表示,它們的表示方法并不一樣,也不提供它們之間的轉換,選項A錯誤。Java內部用整數來表示char,通常可以在方法調用和其他語句中互換使用char和int,選項B正確。char用2字節表示,byte字節類型用l字節表示,Java內部也不允許互換使用它們,選項C錯誤。String在Java語言中是一個類,它提供對字符串的一系列操作,而char是Java語言中的一個基本類型,它不是一個類,兩者有本質的區別,故而它們是不能互換使用的,選項D錯誤。需要注意的是,在Java語言中提供的類都是以大寫字母開頭,基本類型都用小寫字母表示。

          7). 下列說法中,不屬于數據模型所描述的內容是( )。

          A.數據結構

          B.數據操作

          C.數據查詢

          D.數據約束

          正確答案:C

          答案解析:數據模型所描述的內容包括三個部分

        【java期末考試試題及答案】相關文章:

        java試題及答案07-04

        JAVA模擬試題及答案10-18

        java考試試題及答案10-25

        java面試題及答案11-01

        java基礎筆試題及答案10-18

        2017年Java試題及答案11-09

        JAVA編程面試題及答案05-16

        java面試題2017及答案06-08

        2024年Java筆試題及答案10-29

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 伊人久久大香线蕉成人综合网 | 在线不卡日本ⅴ一区v二区 亚洲成aV人片在线不卡 | 一级AV大片久久久久久 | 亚欧乱色熟女一区二区 | 五月天Av在线进入不卡 | 亚洲欧洲精品污网站在线观看 |