zoukankan      html  css  js  c++  java
  • 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 }

    打印结果:

  • 相关阅读:
    10分钟教你Python+MySQL数据库操作
    10分钟教你用eclipse上传代码到GitHub
    分享几个有趣的程序代码(有些还是值得学习的哦)~
    10分钟教你生成超高逼格微信朋友圈
    1.maven中pom.xml文件中<exclusions>标签认不到问题
    2. springboot启动报错:Field userMapper in com.service.UserService required a bean of type 'com.dao.UserMapper' that could not be found.
    1. SpringBoot启动后,报异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.
    9. 一个list拆分成多个list返回
    12. myeclipse遇到Initializing java tooling(1%)终极解决办法
    42. oracle通过两张表的一个字段对应,update其中一张表的某个字段
  • 原文地址:https://www.cnblogs.com/1693977889zz/p/6965563.html
Copyright © 2011-2022 走看看