JAVA 数据类型与数据精度

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.aspx

BigDecimal(巨大容量的实数)

http://blog.csdn.net/jackiehff/article/details/8582449

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);			
			}
	}
	}
}
















  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值