1. 程式人生 > >Java 陣列 異常 exception 及其練習

Java 陣列 異常 exception 及其練習

學習心得

一、專業課

1陣列

1.1、陣列可以看成是多個相同資料型別資料的組合,對這些資料的統一管理。

1.2、陣列變數屬引用型別,陣列也可以看成是物件,陣列中的每個元素相當於該物件的成員變量。

1.3、陣列中的元素可以是任何型別,包括基本型別和引用型別


2.一維陣列

//陣列

int[]arr = {1,2};

//引用型別物件

//==比較堆地址

/**

* equals 來自Object預設也是比較

* public boolean equals(Object obj) {

return (this ==obj);

}

但我們可以重寫hashCodeequals,使得equals可以比較數組裡的內容

hashCode相等不一定equals返回TRUE

equals不相等,hashCode不一定相等,因為重寫之後我們可以讓它們一方返回固定的值這麼狡猾

*/

Personperson = new Person("dd", 12);

Personperson2 = new Person("dd", 12);

System.out.println(person== person2);

System.out.println(person.equals(person2));

Objectobject = new Object();

Objectobject2 = new Object();

System

.out.println(object.equals(object2));

System.out.println(person.hashCode());

System.out.println(person2.hashCode());

之下結果為重寫了hashCodeequals

false

true

false

4533

4533

3.二維陣列

3.1arr.clone();可以實現陣列克隆但是值得注意的是

int[][]arr = new int[2][];

int[]a= arr[1].clone();

這時一維陣列需要先宣告空間

不然NullPointerException

    1. Arrays.

      deepEquals(arr,a);兩個都必須是二維或以上陣列

    2. Arrays.equals(a,a2);當兩個都是一維陣列時,才能準確比較出陣列內容是否相同

    3. System.arraycopy(src,srcPos,dest,destPos,length);可以實現陣列拷貝

4.異常


4.1Throwable有兩個重要的子類:Exception(異常)和Error(錯誤)

      1. Error(錯誤):是程式無法處理的錯誤,表示執行應用程式中較嚴重問題。

      2. Exception(異常):是程式本身可以處理的異常。

      3. Java的異常(包括ExceptionError)分為可查的異常(checkedexceptions)和不可查的異常(uncheckedexceptions

      4. 執行時異常:都是RuntimeException類及其子類異常

5.捕獲異常

try{

//可能會發生異常的程式程式碼

}catch(Type1id1){

/捕獲並處置try丟擲的異常型別Type1

}

catch(Type2id2){

//捕獲並處置try丟擲的異常型別Type2

}

一旦某個catch捕獲到匹配的異常型別,將進入異常處理程式碼。一經處理結束,就意味著整個try-catch語句結束。其他的catch子句不再有匹配和捕獲異常型別的機會

上方的異常型別不能比上方的異常

trycatch-finally語句

try{

//可能會發生異常的程式程式碼

}catch(Type1id1){

/捕獲並處置try丟擲的異常型別Type1

}

catch(Type2id2){

//捕獲並處置try丟擲的異常型別Type2

}finally{

//無論是否發生異常,都將執行的語句塊

}


二、小組PK

1.我方題目

1.以下程式碼若能執行,請輸出執行結果,若不能執行,請說明原因:

publicclass Demo01 {

publicstatic void main(String[] args) {

Demo02demo = new Demo02(3);

Demo03demo1 = new Demo03(3);

demo.method();

demo1.method();

demo1.method(3);

System.out.println(demo.a);

System.out.println(demo1.a);

}

}

classDemo02{

inta;

publicDemo02(int a){ this.a = a;}

finalvoid method(){

for(inti=0;i<10;i++){

a=i;

}

}

}

classDemo03 extends Demo02{

inta;

publicDemo03(int a){ this.a = a;}

finalvoid method(int i){

for(intj=0;j<i;j++){

a+=j;

}

}

}

答案:編譯報錯,Demo03在例項化物件時,在它自身的構造方法的第一條語句預設呼叫super()

這裡父類Demo02已經定義了帶引數的構造方法,不會自動生成無參構造方法,編譯報錯。

2.若能執行,請輸出執行結果,若不能執行,請說明原因

importjava.util.Arrays;

publicclass Test1 {

publicstatic void main(String[] args) {

int[]is = {1,2,3,4,5};

int[]is1 = is.clone();

is[1]= 10;

System.out.println(Arrays.deepEquals(is,is1));

Bugb = new Asd();

Asdc = new Asd();

b.fun1(2);

try{

c.fun("c");

}catch (Exception e) {

e.printStackTrace();

}

}

}

classBug{

Stringname;

intid;

privatevoid fun(String name) throws RuntimeException{

System.out.println("time:"+ this.name);

}

publicvoid fun1(int a){

System.out.println(a++);

}

}

classAsd extends Bug{

privateint a;

publicvoid fun1(int c){

System.out.println(c+a);

}

voidfun(String name) throws Exception{

System.out.println("time:"+ this.name);

}

}

答案:編譯錯誤,deepEquals方法的引數是二維陣列所以編譯錯誤,父類的fun()方法是私有的,所以子類的fun()方法不算重寫不會報錯

3、以下程式碼若能執行,請輸出執行結果,若不能執行,請說明原因:

publicclass Test {

staticFloat f;

publicTest(Float f){

this.f= f++;

}

static{

f= 3.0f;

}

publicstatic void main(String[] args) {

Stringstr = "ABCDCDG";

char[]ch = str.toCharArray();

inti = 0;

for(;i >= 0.0 && i<(ch.length/2);i++){

if(ch[i]!= ch[ch.length-1-i]){

System.out.print(ch[i]);

continue;

}else{

System.out.print(ch[ch.length-2-i]);

break;

}

}

Testt1 = new Test(3.3f);

Testt2 = new Test(4.3f);

System.out.println(ch[i++]);

System.out.println(f);

}

}

答案:

ABDC

4.3

解析:0在計算機中和0.0相等,計算機中輸出float型別的值不會輸出字尾f

4.以下程式能否執行

如果不能請指出錯在那裡,

如果可以請輸出程式結果:

publicclass TestA {

TestAbA = new TestA();

static{

System.out.println("static");

}

publicTestA() {

System.out.println("TestA");

}

publicstatic void main(String[] args) {

System.out.println("main");

TestAa = new TestA();

}

}

答案:

static

main

《程式死迴圈》//然後程式進入死迴圈,因為TestA的成員變數TestA bA =new TestA();從新再生成的類中又有成員變數TestAbA = new TestA();再次生成新的TestA,如此迴圈

5.程式是否能夠執行,如果能執行結果是什麼?不能請說明理由

注意輸出格式

publicclass Test04 {

staticint a;

publicstatic void main(String[] args) {

try{

System.out.println(fun(a));

}catch (Exception e) {

System.out.println(9);

}

}

static{

System.out.println(a);

}

publicstatic int fun(int a) throws Exception{

int[]arr = {1,2};

try{

for(inti=0;true;i+=3){

arr[i]/=i;

}

}catch (ArithmeticException e) {

System.out.println(2);

return3;

}catch(NullPointerException e) {

System.out.println(4);

return5;

}catch (ArrayIndexOutOfBoundsException e) {

System.out.println(6);

return7;

}finally{

System.out.println(8);

for(inti=0; i<arr.length;i++){

System.out.print(arr[i]);

}

}

}

}

答案:

0

2

8

123

2、對方題目

1packagecom.day12;

publicclass Test extends Subject{

publicint b;

publicstatic void main(String arg[]){

Subjects = new Subject();

Testt = new Test();

Subjects1 = new Subject(1, 2);

int K;

//在此處插入選項中的的程式碼

}

}

classSubject {

privateint a;

int b=100;

public Subject(int a, int b) {

super();

this.a= a;

this.b= b;

}

publicSubject() {

super();

}

publicint test(int m){return m;}

}

//下面哪些放在“在此處插入選項中的的程式碼?”行是正確的?BC E

//AK= s.a;

//B,K = s1.b;

//C,K = s.test(30);

//D,K = m;

//E,K = t.b;

答案:BCE

2classE1 extends Exception{}

classE2 extends E1{}

classTestParent{

publicvoid fun(boolean f) throws E1{}

}

public class Testzi extends TestParent{

//here

}

不定項選擇

以下方法可以放在“//here”位置,而且通過編譯的是(AD

A:publicvoid fun(boolean f) {}

B:publicvoid fun(boolean f) throws Exception{}

C:publicvoid fun(boolean f) throws E1{}

D:publicvoid fun(boolean f) throws E1,E2{}

E:publicvoid fun(boolean f) throws E2{}

正確答案

ACDE

3.publicclass Demo03 {

publicstatic void main(String[] args) {

intn = 9;

int[][]arr = new int[n][n];

for(int i = 0; i < n-1; i++) {

arr[i][0]= 1;

1. System.out.print(_arr[i][0]_+" "_______________);

2. for (int _j=0_______;___j<i_&& if(i == j){ arr[i][j] =1;System.out.print(arr[i][j] + " ");}___ ;j++ ) {

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

System.out.print(arr[i][j]+ " ");

}

System.out.println();

相關推薦

Java 陣列 異常 exception 及其練習

學習心得 一、專業課 1、陣列 1.1、陣列可以看成是多個相同資料型別資料的組合,對這些資料的統一管理。 1.2、陣列變數屬引用型別,陣列也可以看成是物件,陣列中的每個元素相當於該物件的成員變量。 1.3、陣列中的元素可以是任何型別,包括基本型別和引用型別 2.一維陣列

Java基礎 -- 異常Exception

異常層次結構: 編譯(checked)異常:指的是,程式碼在編譯的時候,JVM就檢查程式碼的正確性,從而丟擲編譯時就已能發現的異常 執行(unchecked)異常:指的是,程式碼在執行的過程中有可能丟擲的異常,我們自定義異常時都是繼承RuntimeException 自定義異常

Java異常Exception----(最簡單明瞭的總結)

1、什麼是異常?       程式開發和執行過程中會出現編譯錯誤和執行錯誤。編譯錯誤容易被發現並排除,而執行錯誤(邏輯錯誤和異常)很難預料。因此為了程式的穩定性和可靠性,就需要對程式異常處理和保護。

Java 裏的異常(Exception)詳解

告訴 ted 所有 lib string vm虛擬機 例子 nts 判斷 作為一位初學者, 本屌也沒有能力對異常談得很深入. 只不過Java裏關於Exception的東西實在是很多. 所以這篇文章很長就是了.. 一, 什麽是java裏的異常 由於java是c\c

淺談java異常[Exception]

你在 這也 一點 io操作 www. 新手 公司 manager other 淺談java異常[Exception] 一. 異常的定義 在《java編程思想》中這樣定義 異常:阻止當前方法或作用域繼續執行的問題。雖然java中有異常處理機制,但是要明確一點,決不應該

Java 檢查異常(checked exception)和未檢查異常(unchecked exception)區別理解

程序 區別 出錯 error cep eclipse 通過 要去 編寫 所有異常類型都是 Throwable 類的子類,它包含Exception類和Error類,Exception又包括checked exception和unchecked exception。 unche

java異常Exception)的定義,意義和用法。舉例

use 詳情 put 視頻下載 ati itl url index ring 1.異常(Exception)的定義,意義和用法 (視頻下載) (全部書籍) 我們先給出一個例子,看看異常有什麽用? 例:1.1-本章源碼 public class Test { publi

Java基礎 String 裸暴力演算法- 五個小練習 Java陣列直接選擇排序、sort()排序

  之間的部落格,承上啟下:    Java基礎 String/StringBuff 常用操作方法複習/記憶體分析 Java陣列直接選擇排序、sort()排序 Java基礎 String 演算法 - 五個練習題目要求: /** 1.模擬一個trim方法,去除

java異常(Exception)處理機制詳解

java異常(Exception)處理機制詳解 目錄 一. 異常的定義  二. 異常掃盲行動  三. 異常的使用 例1. 這個例子主要通過兩個方法對比來演示一下有了異常以後程式碼的執行流程。 例2. 重新丟擲異常 例3. 異常鏈的使用及異常丟失 例

Java陣列及其在記憶體中的分配

1.一維陣列 陣列概念:陣列是儲存同一種資料型別多個元素的集合。也可以看成是一個容器。它既可以儲存基本資料型別,也可以儲存引用資料型別(後面介紹)。 定義格式1: 資料型別[] 陣列名;  格式2: 資料型別 陣列名[]; 陣列的初始化動態初始化  陣列的初始化:陣列必須先初始化,然後才能使用

Java陣列練習

    基於Java語言的案例,實現陣列的反轉、擷取、拼接,求陣列的最大、最小值,求陣列元素之和。  public class ArrayUtils{     // //1.計算陣列中最大值     public stat

Hadoop-異常-Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/avro/io/DatumReader

 //maven org.apache.avr  下載不完全 ,去maven    If you are using maven to build your jar, you need to add the following depende

Java陣列練習

陣列在每個程式語言中都有著很重要的地位,以下是陣列在Java語言中的一些簡單練習題: 1.計算陣列中最大值 2.計算陣列中最小值 3.計算陣列值之和 4.陣列拼接 5.陣列擷取 6.陣列列印 7.反轉陣列 程式碼展示: public class ArrayUtils{ //1.

本地執行springboot專案的jar包或阿里雲伺服器上導致,no main異常Exception in thread "main" java.lang.ClassNotFoundException

執行打好的jar包,出現如下異常 首先開啟打好的jar包,出現如下目錄 開啟META-INF目錄,中的MANIFEST.MF檔案,如下 中是否有如下的路徑,Start-Class,如果有,確保是全限定名+啟動類嘛 例如我異常時的Start-Class路徑為

Sqoop異常:Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject

18/12/07 01:09:03 INFO mapreduce.ImportJobBase: Beginning import of staffException in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject at

多執行緒空指標異常 Exception in thread "AsyncTask2" Exception in thread "AsyncTask1" java.lang.NullPointerExce

寫了一個多執行緒方法,呼叫一個單執行緒不報錯的方法,一直在拋Exception in thread "AsyncTask2" Exception in thread "AsyncTask1" java.

Java陣列章節練習

1.計算陣列中最大值  2.計算陣列中最小值  3.計算陣列值之和  4.陣列拼接  5.陣列拼接  6.陣列列印  7.陣列反轉 public class ArrayUtils{ //1.計算陣列中最大值 public static int arrayM

java 編譯異常及其解決辦法(持續更新)

unable event stc .config configure rect spring conf version java 編譯異常及其解決辦法(持續更新) 1.解決辦法:將jar版本降低適配 低版本的jdk或tomcat 1 嚴重: ContainerBase

Java 內部類詳解及其練習

學習心得 一、專業課 1、內部類 1.內部類 1.1 是指在一個外部類的內部再定義一個類,類名不需要和文件夾相同 1.2內部類可以是靜態static的,也可用public,default,protected和private修飾(而外部類只能使用 public和default

java異常Exception)資訊的詳細記錄

下面的三個方法都是獲取異常的詳細資訊,或許的異常詳細資訊以字串的形式返回,保持棧堆載的風格 方法一: public static String getExceptionAllinformation(Exception ex){         String sOut