Java基本程序设计结构(3)
- Java基本程序设计结构(3)
- 大数值运算
- 数组
- 数组声明
- for each循环
- 数组初始化以及匿名数组
- 数组拷贝
- 多维数组
大数值运算
我们在运算的时候,总会遇到提供的基本数据类型不够用的情况,但是好在Java在
java.math
包内提供了两个很好用的类:BigInteger
和BigDecimal
。分别处理任意整数精度的运算和任意浮点数精度的运算
使用静态的valueOf()
将普通的大整数转换成大数值
BigInteger bigInteger=BigInteger.valueOf(100);
BigDecimal bigdecimal=BigDecimal.valueOf(100);
注意:
与C++不同的是,Java并不能对运算符进行重载,所以对于大数值的运算,我们只能使用类方法进行运算,比如:add
、multiply
等
常用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;