java核心技术复习笔记(三)

3.9大数值

    如果基本的整数和浮点数不能精度满足需求,可以使用java.math包中的两个类BigInteger和BigDecimal。这两个类可以包含任意长度数字序列的数值。BigInteger和BigDecimal分别实现了任意精度的整数运算和任意精度的浮点数运算。使用静态valueOf方法可以将普通的数值转换为大数值。
    BigInteger a = BigInteger.valueOf(100);
    遗憾的是不能使用人们熟悉的算术运算符处理大数值。需要使用.add,.multiply.divide(+*/);方法。
    BigInteger c = a.add(b);//c=a+b
    BigInteger d = c.multiplay(b.add(BigInteger.valueOf(2)));

BigInteger d = c.multiply(b.add(BigInteger.valueOf(2)));
java 没有提供运算符重载功能。程序员无法重定义+和*运算符,其使用应用于Biginteger类的add和multiply运算。java语言的设计为字符串的连接重载了+运算符,但没有其他的运算符,也没有给java程序员自己重载运算符的权利。

API java.math.bigInteger1.1
    BigIngeter  add(BigInteger other);
    BigInteger subtract(BigInteger other);
    BigInteger multiply(BigInteger other);
    BigInteger divide(BigInteger other);
    BigInteger mod(BigInteger other);
    返回这个大整数和另一个大整数other的和,差,积,商以及余数。
    int compareTo(BigInteger other)
    如果这个大整数和另一个大整数other相等,返回0;如果这个大整数小于另一个大整数other,返回负数;否则返回正数。
    static BigInteger valueOf(long x);
    返回值等于x的大整数。

API java.math.BigInteger 1.1
BigDecimal add(BigDecimal other);
BigDecimal subtract(BigDecimal other);
BigDecimal multiply(BigDecimal other);
BigDecimal divide(BigDecimal other,RoundingMode mode)5.0;
返回这个大实数与另一个大实数other的和,差,积,商。想要计算商,必须给出舍入方式(rounding mode)。RoundingMode.HALF_UP 是我们学习的四舍五入方式。它适用于常规计算。有关其他舍入方式请参看API文档。
int compareTo(BigDecimal other)
static BigDecimal valueOf(long x);
static BigDecimal valueOf(long  x,int scale);
返回值为x或x/10scale的一个大实数。

数组

数组是一种数据结构,用来存储同一类值型的集合。通过一个整型下标可以访问数组中的每一个值。形式为:
int []a = new int[数组元素个数];
想要获得数组中的元素个数,可以使用array.length;
一旦创建了数组,就不能再改变它的大小。

For each循环

    在java5.0中增加的一种功能性很强的循环结构,可以用来依次处理数组中的每一个元素,不必为指定下标值而分心。
    格式为:for(variable:collection)statement;
    其中 collection这一集合表达式必须是一个数组或是一个实现了Iterable
    接口的类对象(例如ArrayList);
    如果需要处理一个集合中的所有元素,使用for each循环语句非常合适。如果不希望遍历集合中的每一个元素,或者在循环内部需要使用下标值的情况下,还是要使用for循环。
    有更加简单的打印数组中所有值的方式,即利用Arrays类的toString
方法。调用Array.toString(a);

数组初始化以及匿名数组:

int[]smallPrimes={2,3,5,7,9};

匿名数组:

new int[]{2,3,4,5,6,7}
smallPrimes = new int[]{17,19,15,13,11};
这是下列语句简写形式:
    int[] anoymous = {1,2,3,4,5};
    smallPrimes = anoymous;

数组拷贝:

数组变量拷贝,这时两个变量将引用同一个数组:
int[] luckuNumbers = smallPrimes;
luckyNumbers[5]= 12;//smallPrimes[5]也等于12;
如果希望将一个数组的所有值拷贝到一个新的数组中去,就要使用Arrays类的从copyOf方法:
    int[] copiedLuckyNumbers = Arrays.copyOf(luckyNumbers,luckNumbers.length);
    这个方法一般用作增加数组大小:
    luckyNubers = Arrays.copyOf(luckyNumbers,luckNumbers.length*2);
如果数组元素时数值型,那么多余的元素被赋值为0,如果数组元素时布尔型,则将赋值为false。相反,如果长度小于原始数据的长度,则拷贝最前面的数据元素。
System.arraycopy(from,fromIndex,to,toIndex,count);

命令行参数:

数组排序:

Math.random();将返回一个0到1之间的随机浮点数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值