1 java数据类型有两类
1.1 8种基本数据类型和引用数据类型
基本数据类型有整数型 byte, short, int, long,字符型 char, 浮点型 float, double, 布尔类型 boolean,引用数据存放的是地址,在进行构造函数的初始化过程中,要注意两中类型之间,值的传递,基本数据类型无返回则会释放掉,引用数据类型会将初始化得到的值,再复制给引用数据2 基本数据类型与 对应着的封装类的区别2.1 基本数据类型与引用类型数据的区别,值传递过程中的使用,如果需要进行参数传递使用封装类
2.2 封装类的数据可以是null 类型;但是基本数据不行null 可以参见http://lavasoft.blog.51cto.com/62575/79243/所以如果数据可能出现值为null,那么该数据必须定义为封装类2.3 封装类的出现顺应着java 面向对象编程的思想,这样每一个封装类会有着一些方法可以方便的调用2.4 基本数据类型存放在JVM内存中的堆栈中,所以存取的速度更快,封装类数据存在在堆中,涉及到对象的回收与构造,所以一般情况下,在方法的局部变量中如果没有其他要求 可以使用基本数据类型;2.5 基本数据类型 可以很方便的与封装类进行转换,3 数据的更高精度3.1 float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确,这时候就可以使用BigInteger(巨大容量的整数)与BigDecimal(巨大容量的实数)3.2 BigInteger(巨大容量的整数)http://www.cppblog.com/aswmtjdsj/archive/2011/08/20/153973.aspxBigDecimal(巨大容量的实数)
BigDecimal 由任意精度的整数非标度值 和32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负scale 次幂。因此,BigDecimal表示的数值是(unscaledValue × 10-scale)。编程案例测试阶乘计算与结果展示
package myprojcet1;
import java.math.BigDecimal;
public class chapter4_5 {
public static void main(String[] args) {
BigDecimal factorial30 = new BigDecimal(1);
//int sumf00 =0;
//factorial30 = new BigDecimal(1);
for (int i = 1; i <= 30;i++ ){
// int sum100 += i;
//i++;
factorial30 = factorial30.multiply(new BigDecimal(i)) ;
System.out.println("The factorial of from 1 to"+ " "+ i +" "+"is " + factorial30.toString());
}
int j = 1;
factorial30 = new BigDecimal(1);
while ( j <= 30){
j++;
factorial30 = factorial30.multiply(new BigDecimal(j));
System.out.println("The factorial of from 1 to"+ " "+ j +" "+"is " + factorial30.toString());
}
factorial fa_multi = new factorial();
fa_multi.factorial_int(1, 30);
}
}
方法
package myprojcet1;
import java.math.BigDecimal;
public class factorial{
public void factorial_int(int i, int j){
//int temp = 0 , fa_int =0 ;
BigDecimal bbb = new BigDecimal(1);
int temp = 0 ; double fa_int = 1;
temp = i;
if (i < j) {
int t_smaller ;
t_smaller = i;
for ( ; i <= j; i++){
bbb=bbb.multiply(new BigDecimal(i));
System.out.println("The factorial of from "+ t_smaller+ " "+ "to"+ " "
+ i +" "+"is " + bbb.toString());
}
} else {
int t_smaller ;
t_smaller = j;
temp = i;
i = j;
j = temp;
for ( ; i <= j; i++){
fa_int *= i;
System.out.println("The factorial of from "+ t_smaller + "to"+ " "
+ i +" "+"is " + fa_int);
}
}
}
}