码迷,mamicode.com
首页 > 编程语言 > 详细

再看Java基本类型

时间:2014-10-19 16:51:09      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:blog   http   io   os   ar   使用   java   strong   sp   

  Java中的基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。

      数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型是有符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。

      先看看各种类型所占的字节长度,long型和double型都占8个字节,float和int占4个字节,short和char占2个字节,byte占1个字节,boolean型的占一个bit。

      Java中的基本类型又都有对应的一个封装类,如int所对应的Integer,适用于要求参数是对象的情况。

     下面是一些使用基本类型需要注意的细节:

 

     1.java的数值是有符号的,不要忘了还要考虑负数

        判断一个数是不是奇数,

        if( i % 2 == 1){

            ...

        }

        如果i是负数,i%2 的结果将是-1.应该是写成:

       if( i%2 ! =0){

 

       }

     2.如果使用小数,默认的将是double类型,如果写成

        float f = 1.24;

       则会造成精度的丢失,应该显示的指明小数的类型

        float f = 1.24f;

 

     3.小数都可能会有精度的丢失,使用float和double做小数计算时可能都会碰到这样的问题,如果就是需要精确地计算,可以考虑使用BigDicemal,整型对应的是BigInteger。

        System.out.println(3.0f - 1.0f);

        System.out.println(3.0d - 1.0d);

        float f = 20014999; 

        System.out.println(f);

        float型所占用内存

        bubuko.com,布布扣

        double型所占用的内存

        bubuko.com,布布扣

        整数可以用二进制精确地表示 ,但小数就不一定了。关于小数到二进制的转换,可以参考:http://www.blogjava.net/jelver/articles/340038.html

       下面是BigDicemal的一个封装类,来自网上,需要使用时直接调用方法即可。

       

import java.math.BigDecimal;
public class Utils {
 /** 精度 */
 private static final int DEF_DIV_SCALE = 10;
 /**
  * 加,BigDecimal用
  * 
  * @param v1
  * @param v2
  * @return result
  */
 public static BigDecimal add(Object v1, Object v2) {
  BigDecimal result = null;
  BigDecimal b1 = new BigDecimal(v1.toString());
  BigDecimal b2 = new BigDecimal(v2.toString());
  result = b1.add(b2);
  return result;
 }
 /**
  * 减,BigDecimal用
  * 
  * @param v1
  * @param v2
  * @return result
  */
 public static BigDecimal sub(Object v1, Object v2) {
  BigDecimal result = null;
  // if(v1!=null && v2!=null){
  BigDecimal b1 = new BigDecimal(v1.toString());
  BigDecimal b2 = new BigDecimal(v2.toString());
  result = b1.subtract(b2);
  // }
  return result;
 }
 /**
  * 乘,BigDecimal用
  * 
  * @param v1
  * @param v2
  * @return result
  */
 public static BigDecimal mul(Object v1, Object v2) {
  BigDecimal result = null;
  // if(v1!=null && v2!=null){
  BigDecimal b1 = new BigDecimal(v1.toString());
  BigDecimal b2 = new BigDecimal(v2.toString());
  result = b1.multiply(b2);
  // }
  return result;
 }
 /**
  * 除,BigDecimal用
  * 
  * @param v1
  * @param v2
  * @return result
  */
 public static BigDecimal div(Object v1, Object v2) {
  BigDecimal result = null;
  BigDecimal b1 = new BigDecimal(v1.toString());
  BigDecimal b2 = new BigDecimal(v2.toString());
  result = b1.divide(b2);
  return result;
 }
 /**
  * 
  * @param v1
  * @param v2
  * @param scale
  * @return result
  */
 public static BigDecimal div(Object v1, Object v2, int scale) {
  BigDecimal result = null;
  if (scale < 0) {
   throw new IllegalArgumentException(
     "The scale must be a positive integer or zero");
  }
  BigDecimal b1 = new BigDecimal(v1.toString());
  BigDecimal b2 = new BigDecimal(v2.toString());
  result = b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP);
  return result;
 }
 public static BigDecimal round(double v, int scale) {
  if (scale < 0) {
   throw new IllegalArgumentException(
     "The scale must be a positive integer or zero");
  }
  BigDecimal b = new BigDecimal(Double.toString(v));
  BigDecimal one = new BigDecimal("1");
  return b.divide(one, scale, BigDecimal.ROUND_HALF_UP);
 }
}

  

 

再看Java基本类型

标签:blog   http   io   os   ar   使用   java   strong   sp   

原文地址:http://www.cnblogs.com/lnlvinso/p/4035072.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!