Java基础之数组

来源:互联网 发布:飞剑问道好看吗 知乎 编辑:程序博客网 时间:2024/06/05 09:03

一、大数据

如果基本的整型和浮点型精度不能够满足需求,那么可以使用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-i22  * 则会发生脚标越界异常的情况,如下:23  * Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 824  */
复制代码

注意:

* 创建一个数组时,所有元素都初始化为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 }
复制代码

打印结果:

原创粉丝点击