Java基础——数组

一、大数据

如果基本的整型和浮点型精度不能够满足需求,那么可以使用java.math包含中的两个类:BigInteger和BigDecimal。

这两个类处理包含任意长度数字序列的数值。BigInteger类实现了任意精度的整型运算,BigDecimal实现了任意精度的浮点数运算。

使用静态的valueOf方法可以讲欧通的数值转换为大数据:

BigInteger a=BigInteger.valueOf(700);

还有,人们不能用加(+)或减(-)等来处理大数值。而必须用类中的add和multiply方法。

BigInteger c=a.add(b);//c=a+b

BigInteger d=c.multiply(b.add(BigInteger.valueOf(2)));//d=c*(b+a)

二、数组

数组是一种数据结构,用来储存同一类型值的集合

1.声明了一个整型数组a:    int [] a;

2.创建数组a:    int [] a=new int[100];

 1 import java.util.Arrays;
 2 public class Test2 {
 3     public static void main(String[]args){
 4         int [] a=new int[]{5,-1,-88,2,4,44,12,-90};
 5     Arrays.sort(a);
 6     for(int i=0;i<a.length;i++){
 7         System.out.println(a[i]);
 8         }
 9     }
10 }
 1 public class Test1 {
 2     public static void main(String[]args){
 3         int [] a={5,-1,-88,2,4,44,12,-90};//用冒泡的方法把它由小到大的排序
 4         sort(a);
 5         for(int i=0;i<a.length;i++){
 6             System.out.println(a[i]);
 7         }//函数执行完,再数一遍
 8     }
 9     static void sort(int[]a){
10         for(int i=0;i<a.length-1;i++){
11             for(int j=0;j<a.length-1-i;j++)
12                 if(a[j]>a[j+1])
13                 {
14                     int temp=a[j];
15                     a[j]=a[j+1];
16                     a[j+1]=temp;
17                 }
18             } 
19         }
20     }
21 /*如果上面i<a.length-1和j<a.length-1-i都填上等号变成 i<=a.length-1和j<=a.length-1-i
22  * 则会发生脚标越界异常的情况,如下:
23  * Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
24  */

注意:

* 创建一个数组时,所有元素都初始化为0;

* boolean数组的元素会初始化为false;

* 对象数组的元素则初始化为一个特殊值null,这表示这些元素还未存放任何对象。(比如:for(int i=0;i<100;i++)names[i]="";

三、数组的拷贝

要使用Arrays类的copyOf方法:

int [] a=Arrays.copyOf(a,a.length);

四、多维数组

多维数组将使用多个下标访问数组元素,它适用于表示表格或更复杂的排列形式。

格式类似如下:

int [] [] a={{.......},{.......},{.......},{.......},{.......}}

提示:如果想要打印一个二维数组的数据元素列表,可以调用:

System.out.println(Arrays.deepToString(a));

输出格式为:

[[1,2,3,3],[4,5,7,65],[7,5,7,8]]

例子:

 1 /*This program show how to store tabular data in a 2D array.
 2  * @version 1.40 2004-02-10
 3  * @author Cay Horstmann
 4  */
 5 public class CompoundInterest {
 6     public static void main(String[] args) {
 7         final double STARTRATE = 10;
 8         final int NRATES = 12;
 9         final int NYEARS = 10;
10 
11         double[] interestRete = new double[NRATES];
12         for (int j = 0; j < interestRete.length; j++)
13             interestRete[j] = (STARTRATE + j) / 100.0;
14 
15         double[][] balances = new double[NYEARS][NRATES];
16         for (int j = 0; j < balances[0].length; j++)
17             balances[0][j] = 120000;
18 
19         for (int j = 1; j < balances.length; j++) {
20             for (int j1 = 0; j1 < balances[j].length; j1++) 
21             {
22                 double oldBalance = balances[j-1][j1];
23 
24                 double interest = oldBalance * interestRete[j1];
25                 balances[j][j1] = oldBalance + interest;
26             }
27         }
28         for (int j = 0; j < interestRete.length; j++)
29             System.out.printf("%9.0f%%",100*interestRete[j]);
30         System.out.println();
31         for (double[] row : balances) {
32             for (double b : row)
33                 System.out.printf("%10.2f", b);
34             System.out.println();
35         }
36     }
37 }

打印结果:

五:不规则数组

例子:

 1 /**
 2  * This program demonstrates a triangular array.
 3  * 
 4  * @version 1.20 2004-02-10
 5  * @author Cay Horstmann
 6  */
 7 public class LotterArray {
 8     public static void main(String[] args) {
 9         final int NMAX = 10;
10 
11         int[][] odds = new int[NMAX + 1][];
12         for (int n = 0; n <= NMAX; n++)
13             odds[n] = new int[n + 1];
14 
15         for (int n = 0; n < odds.length; n++)
16             for (int k = 0; k < odds[n].length; k++) {
17                 int lotteryOdds = 1;
18                 for (int i = 1; i <= k; i++)
19                     lotteryOdds = lotteryOdds * (n - i + 1) / i;
20                 odds[n][k] = lotteryOdds;
21             }
22         for (int[] row : odds) {
23             for (int odd : row)
24                 System.out.printf("%4d", odd);
25             System.out.println();
26         }
27     }
28 
29 }

打印结果:

 

posted @ 2017-06-09 00:15  江河湖泊  阅读(363)  评论(2编辑  收藏  举报