Java基本程序设计结构(3)


  • Java基本程序设计结构(3)
  • 大数值运算
  • 数组
  • 数组声明
  • for each循环
  • 数组初始化以及匿名数组
  • 数组拷贝
  • 多维数组


大数值运算

我们在运算的时候,总会遇到提供的基本数据类型不够用的情况,但是好在Java在java.math包内提供了两个很好用的类: BigIntegerBigDecimal。分别处理任意整数精度的运算和任意浮点数精度的运算

使用静态的valueOf()将普通的大整数转换成大数值

BigInteger bigInteger=BigInteger.valueOf(100);
BigDecimal bigdecimal=BigDecimal.valueOf(100);

注意:
与C++不同的是,Java并不能对运算符进行重载,所以对于大数值的运算,我们只能使用类方法进行运算,比如:addmultiply
常用API如下 :
- BigDecimal add(BigDecimal other)
- BigDecimal subtract(BigDecimal other)
- BigDecimal multipiy(BigDecimal other)
- BigDecimal divide(BigDecimal other RoundingMode mode)
返回这个大实数与另一个大实数 other 的和、 差、 积、 商。要想计算商, 必须给出舍
入方式 ( rounding mode。) RoundingMode.HALF_UP 是在学校中学习的四舍五入方式
( BP , 数值 0 到 4 舍去, 数值 5 到 9 进位)。它适用于常规的计算。有关其他的舍入方
式请参看 Api文档。
- int compareTo(BigDecimal other)
如果这个大实数与另一个大实数相等, 返回 0 ; 如果这个大实数小于另一个大实数,
返回负数; 否则,返回正数。
- static BigDecimal valueOf(long x)

数组

数组声明

数组作为一种数据结构,用于存储同种类型的值,通过对整型下标的访问可以访问中间的每一个值。

在声明时,需要指出数组类型(数组类型后紧跟[])和数组变量的名字。下面声明整型数组a。

int[] a=new int[100];
  • 声明方法还可以是int a[];这是C++风格的声明,在Java中通常使用前一种声明。
  • 在创建数组时,所有数值型元素初始化为0,boolean数组元素初始化为false,对象数组则初始化为null

for each循环

Java提供for each循环结构用于对数组中的每个元素进行处理,而不用费心考虑下标问题

for (int element : a)
System.out.println(element);//打印a中的每一个数值

数组初始化以及匿名数组

在Java中,可以在创建数组对象时就对数组进行初始化

int[] a={1,2,3,4};

也可以创建匿名数组

a=new int[] {1,2,3};

数组拷贝

在Java中的数组拷贝分为浅拷贝深拷贝两种,浅拷贝只是将数组变量复制,但其实都指向同一个数组,例如:

int[] a={1,2,3};
int[] b=a;

上述就浅拷贝,在改变b中元素的值的时候,a中元素值也会改变,因为他们 都指向同一数组空间。

如果希望将数组元素完全拷贝,就需要使用Arrays类的copyOf方法

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

意思是把a中的值全部拷贝到b中去,拷贝后b的长度为3.

常用API:

  • static String toString(type[] a)
    返回包含 a 中数据元素的字符串, 这些数据元素被放在括号内, 并用逗号分隔。
    参数: a 类型为 int、long、short、char、 byte、boolean、float 或 double 的数组。
  • static type copyOf(type[] a, int length)
  • static type copyOfRange(type[] a , int start , int end)
    返回与 a 类型相同的一个数组, 其长度为 length 或者 end-start, 数组元素为 a 的值。
    参数:a 类型为 int、 long、short、char、byte、boolean、float 或 double 的数组。
    start 起始下标(包含这个值)0
    end 终止下标(不包含这个值)。 这个值可能大于 a.length。 在这种情况
    下,结果为 0 或 false。
    length 拷卩!的数据元素长度 c 如果 length 值大于 a.length, 结果为 0 或 false ;
    否则, 数组中只有前面 length 个数据元素的拷 W 值。
    參 static void sort(t y p e [ ] a)
    采用优化的快速排序算法对数组进行排序。
    参数:a 类型为 int、long、short、char、byte、boolean、float 或 double 的数组。
  • static int binarySearch(type[] a , type v)
    采用二分搜索算法查找值 v。如果查找成功, 则返回相应的下标值; 否则, 返回一个
    负数值。r -r-1 是为保持 a 有序 v 应插入的位置。
  • static void fi11(type[] a , type v)
    将数组的所有数据元素值设置为 V。
  • static boolean equals(type[] a, type[] b)
    如果两个数组大小相同, 并且下标相同的元素都对应相等, 返回 true。

多维数组

多维数组声明如下:

double[] [] balances;