Java采用封装对象来实现字符串到数字的转换,采用字符串合并的方式将数字转化为字符串。Java采用的算法是伪随机数算法,而且一般而言,所有的编程语言中的随机数都是伪随机数,只有硬件平台才能实现真正的随机数。
带有小数点的数字默认为Double类型,所以对于Float f = 3.0;是编译不过去的,除非强制类型定义为float类型:float f = 3.0f;或者强制转换为float类型:float f =(float)3.0;
数字到对象的转换和对象到数字的转换使用新建相应对象和对象解析的方法实现。如:
Integer I = newInteger(37); int i2 =I.intValue(); System.out.println(I.toString()); System.out.println(i2);
在Java中,浮点数是比较复杂的,如果我们让整数被零除,则抛出异常,但是用浮点数除零,则不会出现问题。如:
System.out.println(5/0);//编译不通过 System.out.println(5.0/0);//通过,结果为Infinity,Infinity为Double或者Float封装的POSTIVE_INFINITY常量。 System.out.println(-5.0/0);//通过,结果为-Infinity
NaN被定义为一个不是任何数的常量,它向前后无限延伸细化,并且自身和自身不相等。在比较两个浮点数时,一般是通过判断他们自身的公差在一定范围内否,如果在公差内,则因此,如果我们拿不准各种精度问题,可以采用Double来进行计算。
在进行浮点数舍入运算时,采用直接强制转换的方法,只是将类型截去尾部,采用Math.round()方法才能实现真正的四舍五入方法。进行数字格式化时,常采用Java.text下的类,如格式化数字:
NumberFormat nf= NumberFormat.getInstance(); nf.setMinimumIntegerDigits(3); nf.setMinimumFractionDigits(2); nf.setMaximumFractionDigits(4); System.out.println(nf.format(3456.78901));
在进行进制转换时,Integer类有各种方法供调用:
Integer i = newInteger(12); System.out.println(i.toBinaryString(i)); System.out.println(i.toHexString(i)); System.out.println(Integer.valueOf("C",16));
其中Integer的方法ValueOf可以把任何进制的字符串,改写为整形。
对于数组,有连续数组和非连续数组的形式。连续数组采用普通数字来表示,非连续数组可以采用BitSet的形式,这种形式的数据量更小,初始状态有64个状态为,没个状态为都是可以单独设置真或假,适合用来表示状态集合。例程如下:
BitSet bs = newBitSet(); bs.set(1); bs.set(5); for(inti=0;i<bs.size();i++) System.out.println(bs.get(i));
处理特大数据,可以采用Java.math.当中的BigInteger和BigDecimal类。注意这些类读取数据都是字符串类型的数据,例如:
BigInteger bi =new BigInteger("123456789123456789123"); System.out.println(nf.format(bi));//nf为上文定义的NumberFormat System.out.println(bi);