易截截图软件、单文件、免安装、纯绿色、仅160KB

Java底层深入研究(一)


   关于Java
的底层一直想写点什么,但是好像很多问题在网上还是可以找得到答案,最后还是决定写出来,一来可以让自己重温一下,二来可以和大家一起深入探讨底层的知识。这里面还有一些常见的小问题,也附带在里面的原因,framework
其实也是构建在这些知识的基础上的。
  
论一:数值论
问题一:java.math
中两个很强大的类:BigInteger
和BigDecimal

这两个类可以处理任意长度的数值。为什么说他们强大?就是因为它们的作用强大。
代码1
:System.out.println(2.0-1.1); //
结果:0.899999999
 
为什么不是我们认为的0.9

答案是:对于浮点数计算,浮点数本身采用二进制表示,所以无法表示1/10
,就如同十进制无法精确表示浮点数一样,就会出现四舍五入的误差。
 
如何防止这种误差?
有办法。你可以尝试:
代码2

BigDecimal.valueOf(2.0).subtract(BigDecimal.valueOf(1.1));
//
结果:0.9
注意到了嘛,BigInteger
和BigDecimal
不适用算术符号,而适用方法,如add,subtract,multiply,divide,mod
重要方法:valueOf,
返回大整数或大浮点数。compareTo(BigX)
比较
 
问题二:浮点数中的特殊数值
浮点数有两种:单精度(float
)和双精度(double
)。
它们区别:1.float
精度不高,double
精度是它的一倍。 2.float
数值后有”f”,
没有默认是double
类型数值。
言归正传,特殊值是:正无穷大、负无穷大、NaN.
定义如下:
正无穷大:正整数除以0
的结果。负无穷大不用说了吧^^!
NaN: 
0/0  
或 负数的平方根。
Double.POSITIVE_INFINITY

Double.NEGATIVE_INFINITY

Double.NaN
 
如何判断一个数是否是NaN?
if(x
== Double.NaN) 
错误
if(Double.isNaN(x)) 
正确
原因是:所有“非数值”的值都认为不相等。
 
问题三:java
数组的copy
在Java
中数组是可以copy
的哦,可以通过如下语法:
System.arraycopy(fromArray,fromIndex,toArray,toIndex,count)
 
问题四:如何得到一个0—n-1
之间的随机数?
Math.random()*n
//
分析:Math.random
得到0—1
之间随机数,不包含1
,包含0.
 
问题五:二分法查找对于学过算法的人并不陌生,数组中为我们提供现成的方法了?是的。
int val = Array.binarySearch(array[],v);
参数说明:arr


相关文档:

Java异常处理总结


Java异常处理总结
 
        异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地方出现,那么你每个地方都要做相同处理,感觉相当 ......

java读文件 乱码

/**
 *
 */
package com.dongyun.peas2.system.web.action;
///**
// * @author Administrator
// *
// */
//public class ABcom {
//
// /**
//  *
//  */
// public ABcom() {
//  // TODO Auto-generated constructor stub
// }
//
// /**
//&nb ......

java下Class.forName的作用是什么,为什么要使用它

Class.forName(xxx.xx.xx) 返回的是一个类
首先你要明白在java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的(和new 不一样,要分清楚)。
至于什么时候用,你可以考虑一下这个问题,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?只有你提到的这个方法了,不过要再加一点。
A a = ......

java序列化与反序列化

本人在接触过程中有两个帖子写的不错,在此整理一下:
1.序列化
:将对象转化成流的过程称为序列化 
   反序列化
:将流转化成对象的过程称之为反序列化
2.对象序列化(Serializable)是指将对象转换为字节序列的过程,而反序列化则是根据字节序列恢复对象的过程。
上面这两个解释都通俗易懂。
序列化经 ......

jpython调用java类的模板


使用JPype模块让Python调用JAVA的类
Python idea!   2009-03-24 19:44   阅读267   评论0  
字号: 大大  中中  小小
看看例子就知道啦,真是为Python(不是Jython,而是CPython)提供了强大力量!
首先在java下建立一个再也简单不过的包:
package org.wg3i.t ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号