Java數(shù)組越界問題實例解析
Java中數(shù)組初始化和OC其實是一樣的,分為動態(tài)初始化和靜態(tài)初始化,
動態(tài)初始化:指定長度,由系統(tǒng)給出初始化值
靜態(tài)初始化:給出初始化值,由系統(tǒng)給出長度
在我們使用數(shù)組時最容易出現(xiàn)的就是數(shù)組越界問題,好了,這里有個簡單的例子
int [][] array = {{1,2,3},{1,4}};
System.out.println(array[1][2]);
這是一個二維數(shù)組,很明顯,數(shù)組越界了,控制臺中會打印如下信息:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 at demo.Array.main(Array.java:31)
很準確的定位到31行。
下面看看一個完整的代碼示例:
package home_work_4_17;
abstract class Employee{
abstract double earnings();
}
class YearWorker extends Employee{
double earnings(){
System.out.println("按年領取1000");
return 1000;
}
}
class MonthWorker extends Employee{
double earnings(){
System.out.println("按月領取100");
return 100;
}
}
class WeekWorker extends Employee{
double earnings(){
System.out.println("按星期領取10");
return 10;
}
}
class Company{
int n;
//該公司的人數(shù)
public Company(int n) {
this.n=n;
// TODO Auto-generated constructor stub
}
Employee E[]=new Employee[n];
double cal(){
//返回薪水綜合
double sum=0;
for (int j=0;j<n;j++){
sum+=E[j].earnings();
}
return sum;
}
}
public class work_2 {
public static void main(String args[]) {
Company c=new Company(3);
c.E[0]=new WeekWorker();
c.E[1]=new MonthWorker();
c.E[2]=new YearWorker();
System.out.println("總支出:"+c.cal());
}
}
編譯器顯示數(shù)組越界錯誤。
經(jīng)檢查發(fā)現(xiàn)劃線部分語句出錯
應當做如下修改:
class Company{
int n; //該公司的人數(shù)
Employee E[];
public Company(int n) {
this.n=n;// TODO Auto-generated constructor stub
E=new Employee[n];
}
double cal(){ //返回薪水綜合
double sum=0;
for(int j=0;j<n;j++){
sum+=E[j].earnings();
}
return sum;
}
}
出錯原因是:當Company構造方法中并未對數(shù)組E進行初始化操作,故而E數(shù)組大小仍然為0,發(fā)生數(shù)組越界錯誤。
利用上述錯誤方式編寫的測試程序如下:
package test_a;
class people{
int n;
Student s[]=new Student[n];
public people(int n) {
this.n=n;// TODO Auto-generated constructor stub
}
}
class Student{
int number;
}
public class Cdcs {
public static void main(String args[]) {
people p=new people(3);
System.out.println(p.s.length);
}
}
輸出結果為0。即數(shù)組大小為零。
總結
以上就是本文關于Java數(shù)組越界問題實例解析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Java異常退出條件的判斷示例代碼、Java編程異常處理最佳實踐【推薦】等。有什么問題可以隨時留言,小編會及時回復大家的。
相關文章
詳解使用SSM實現(xiàn)簡單工作流系統(tǒng)之實現(xiàn)篇
這篇文章主要介紹了使用SSM實現(xiàn)簡單工作流系統(tǒng)之實現(xiàn)篇,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12
校驗非空的注解@NotNull如何取得自定義的message
這篇文章主要介紹了校驗非空的注解@NotNull如何取得自定義的message,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
利用Java中Calendar計算兩個日期之間的天數(shù)和周數(shù)
Java 語言的Calendar(日歷),Date(日期),和DateFormat(日期格式)組成了Java標準的一個基本但是非常重要的部分。日期是商業(yè)邏輯計算一個關鍵的部分。下面這篇文章就給大家介紹了如何利用Java中Calendar計算兩個日期之間的天數(shù)和周數(shù),下面來一起看看吧。2016-12-12
SpringCloud及Nacos服務注冊IP選擇問題解決方法
這篇文章主要介紹了SpringCloud及Nacos服務注冊IP選擇問題,為什么注冊的IP和真實IP不符合呢,原因是Nacos客戶端在注冊服務時會從機器網(wǎng)卡中選擇一個IP來注冊,所以,當注冊了的是非真實IP后,另一臺機器調用時是不可能調通的,知道問題原因就是解決方法,一起看看吧2024-01-01
SpringMVC整合websocket實現(xiàn)消息推送及觸發(fā)功能
這篇文章主要為大家詳細介紹了SpringMVC整合websocket實現(xiàn)消息推送及觸發(fā)功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03
Java黑科技之通過Google Java Style 文件配置IDEA和Ecplise代碼風格
在日常開發(fā)中,多人團隊協(xié)作開發(fā)一個項目是很常見的,特別是大公司,這就會涉及到多人在一個工程上開發(fā)代碼.無規(guī)矩不成方圓,一個好的代碼風格,更加有利于團隊協(xié)作,減少代碼沖突,提高代碼可閱讀性,美觀性.本文就帶著大家仔細研究這個黑科技 ,需要的朋友可以參考下2021-05-05
關于Spring Boot WebSocket整合以及nginx配置詳解
這篇文章主要給大家介紹了關于Spring Boot WebSocket整合以及nginx配置的相關資料,文中通過示例代碼給大家介紹的非常詳細,相信對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習下吧。2017-09-09

