WEB开发网
开发学院软件开发Java 使用 IBM 静态工具优化 Java 代码,第 2 部分: 分... 阅读

使用 IBM 静态工具优化 Java 代码,第 2 部分: 分析错误报告

 2010-01-11 00:00:00 来源:WEB开发网   
核心提示: intindex=2;String[]names=newString[]{"developer","Works"};System.out.println(names[index]);index 为 2,而数组只有两个元素,使用 IBM 静态工具优化 Jav

 int index = 2; 
 String[] names = new String[] { "developer", "Works" }; 
 
 System.out.println( names[index] ); 

index 为 2,而数组只有两个元素,最后一个元素的下标索引是 1,所以导致数组访问越界。注意,如果 index 为负数,仍然是数组访问越界。

清单 8. 越界访问 Vector

 Vector<String> vec = new Vector<String>(); 
 
 for ( int i = 0; i <= vec.size(); i ++ ) { 
 System.out.println( vec.get(i) ); 
 } 

Vector 和 ArrayList 的起始索引是 0,所以用其数组大小作为索引会导致数组访问越界,其数组最后一个元素的索引应该是“数组大小 -1 ”。

清单 9. 越界访问 String 数组元素 2

 int a = 0; 
 String[] names = null; 
 StringBuffer buf = new StringBuffer(); 
 
 if ( a > 0 ) { 
   names = new String[] { "developer", "Works" }; 
 } else { 
   names = new String[] { "developerWorks" }; 
 } 
   
 buf.append( names[0] ).append( names[1] ); 

程序员调用 append 时以为数组 names 中有两个元素,其实只有一个。

清单 10. 越界访问 ArrayList

 ArrayList<String> arrList = new ArrayList<String>(); 
 int len = 5; 
 
 for( int i = 0; i < len; i++ ) { 
 arrList.add( String.valueOf(i) ); 
 } 
 
 arrList.remove( len - 1 ); 
 System.out.println(arrList.get( len - 1 )); 

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:使用 IBM 静态

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接