`
nannan408
  • 浏览: 1754920 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java基础之面试篇三---int,float,long,double取值范围,内存泄露

 
阅读更多

         java中int,float,long,double取值范围是多少?很简单的问题,刚学java就碰到,久了就会生疏,看了些文章,感觉稍微有点不全,这里取大牛们的经,总结了一下。

        先上船,再买票,代码如下:

   

写道
public class TestOutOfBound {
public static void main(String[] args) {

System.out.println(Integer.MAX_VALUE-(-Integer.MAX_VALUE)); //内存溢出
System.out.println(Integer.MAX_VALUE); //2的31次方-1,10个数位,正的20亿左右,用在钱上面不一定够
System.out.println(Integer.MIN_VALUE); //负的2的31次方
System.out.println(Long.MAX_VALUE); //2的64次方-1,19个数位,很大了,可放心用在钱上面
System.out.println(Long.MIN_VALUE); //负的2的64次方
System.out.println(Float.MAX_VALUE); //2的128次方-1,38个数位,比long多了一倍,这个主要用来做简单数学精确运算使用
System.out.println(Float.MIN_VALUE); //2的-149次方
System.out.println(Double.MAX_VALUE); //2的1024次方-1,308个数位,是float数位的10倍,主要用来做复杂运算和天文运算
System.out.println(Double.MIN_VALUE); //2的-1074次方



}
}

 运行结果如下:

-2
2147483647
-2147483648
9223372036854775807
-9223372036854775808
3.4028235E38
1.4E-45
1.7976931348623157E308
4.9E-324

 

   int和long都是很循规蹈矩的符合2的n次方的说法,int是32位,long是64位,唯有float和double像两个淘气的小孩子让人会捉摸不透。float和double的表示形式与int和long是不一样的,他们采用的是IEEE 754标准,这个标准可以这样理解:

(1)两者还是32位的,和int一样,最小值只是他们的精度,是正数,这是需要注意的。如果要取到他们负最大,在他们的最大值前加个符号就好了,如-Float.MAX_VALUE,就是float能表示的负的最大了。

(2)float从左到右,第一位是符号位,2-9位共8位表示整数位,2的8-1次方等于128,后面23位是表示小数的,所以最大值是2^128-1;

(3)double从左到右,第一位是符号位,2-12是共11位表示整数位,2的11-1次方等于1024。剩余20位表示小数,所以最大值是2^1024-1.

(4)如上面代码,当正的最大减去负的正最大,就产生了内存泄露。溢出的结果是不对的。

 

总结:int 和long,float和double的存储要分别对待.要取到实实在在的最大最小值,只需要取到最大值就行了。

 

2
1
分享到:
评论
3 楼 zhangdong92 2017-06-28  
另外内存泄漏一般也不是指计算时溢出。而是指某些对象已经不再使用,但是按照规则不会被GC回收,这种对象越来越多就会导致占据内存一直增长
2 楼 zhangdong92 2017-06-28  
Long.MAX_VALUE应该是(2^63)-1,而不是64次方
Long.MIN_VALUE应该是-(2^63)
因为long占8个字节,64bit,所以所有long的可能数值(正数、负数、0的个数加起来)不会超过2^64个
1 楼 dongqianlin 2015-01-09  
double应该是64位。

相关推荐

    short,int ,long,float取值范围

    在IEEE754标准下探讨short,int ,long,float取值范围,文档中包含一段验证程序,在VC6.0环境下编译通过,全面展示short,int ,long,float取值范围,以及double取值范围的推广。

    C++数据类型及取值范围

    C++数据类型及取值范围 1.基本数据类型: ①字符类型:char(字符型) 例:‘A’,’b’ ②整数类型:int(整型) 例:4563, 234, 885634 ③浮点类型:float(单精度型)、double(双精度型) 例:3.1456 , 0.9e12 ④空值...

    java面试题-附答案

    分别是byte, short, int, long, char, float, double, boolean. 1.byte byte属于Java中的整型,长度为1字节8bit,取值10000000(-128)到 01111111(127),变量初始化默认值为0,包装类Byte 2.short short属于Java...

    Java程序设计基础:基本数据类型.pptx

    掌握Java基本数据类型 掌握直接量的表示 计算机的基本作用就是做运算。运算的数据可以由用户输入、从文件获得。 我们可以把数据进行归类,整数、小数、一串字符、单个字符。 数据类型 例如 课程名称:“高等数学”、...

    java基本数据类型.docx

    在Java中,基本数据类型是指原始...这些基本数据类型在Java中用于存储不同类型的数据值,它们分别占用不同的内存空间,并具有不同的取值范围。在Java中,基本数据类型是直接存储在栈内存中的,因此它们的访问速度很快。

    Java的8大基本数据类型.pdf

    Java的 的8⼤基本数据类型 ⼤基本数据类型 Java8⼤基本数据类型 ⼤基本数据类型 byte(字节型)、short(短整型)、int (整型) 、long(长整型) float(单精度浮点型)、double(双精度浮点型)、boolean(布尔型)、...

    2.Java基础语法.ppt

    类型的优先级别:byte,short,char,int,long,float,double (低–高) 右>左–强制类型转换 右<左–自动转换 右=左–不用转 三、运算符: 算术运算符: +,-,*,/,%,++,– 赋值运算符:= 关系运算符: >,<,>...

    Java 关键字、标识符、注释、常量与变量、数据类型,算术、赋值、比较、逻辑、位、三元运算符和流程控制、break、continue

    Java中常量的分类: 1,整数常量。所有整数 2,小数常量。所有小数 3,布尔(boolean)型常量。较为特有,只有两个数值。true false。 4,字符常量。将一个数字字母或者符号用单引号( ' ' )标识。 5,字符串常量。...

    【02-数据类型与运算符】

     –在内存中各占:1,2,4,8个字节, 各有各的取值范围,略记一下。  •在定义long 类型时 必须在数字后面加L,  •整数常量有三种表示方式: 十进制,八进制(以0开头),十六进制(以0x开头), 二进制(以OB开头—jdk1.7)...

    抽象和封装PPT

    1.如何抽象出类 1.1 找简单名词 ----------发现类 1.2 找修饰性名词或形容词 ---------发现类的属性 1.3 找动词 ------------发现类的...byte 0 short 0 int 0 long 0 float 0.0 double 0.0 boolean false char 空格

    C++零基础(数据类型)

    4 实型(单精度浮点型以float表示 `双精度浮点型以double表示) long可以用来修饰int(表示长整型)和double 5 signed(有符号) 和 unsigned(无符号)⊥可以用来修饰char型和int型(包括long int) ⊥ ⊥ 6 有符号 ...

    C语言程序设计标准教程

    类型说明符为long int或long ,在内存中占4个字节,其取值为长整常数。 4.无符号型 类型说明符为unsigned。 无符号型又可与上述三种类型匹配而构成: (1)无符号基本型 类型说明符为unsigned int或unsigned。 (2)无...

    实验报告5.doc

    " " "测试double类型的有效数字长度和精度如下: " " "int main(void) " " "{ " " "float d1,d2; " " "d1=0.123456789; " " "d2=1234567891234567890.123456789; " " "printf("%lf\n%lf\n",d1,d2); " " "} " " " " ...

    标准MFC WinSock ActiveX控件开发实例(II)高级篇

    在VC中,通过sizeof()我们可以看到int和long的长度都是4,而char的长度为1,因此,如果传入的是长整型或者整型数组,我将它转换成4个char,然后发送出去,转换方法可以通过移位处理,如下 : //long转换为4个char ...

    Mysql数据库设计.pdf

    较⼩的整数 有符号值:-32768 MEDIUMINT 3字节 中等⼤⼩的整数 有符号值: INT 4字节 标准整数 有符号值: BIGINT 8字节 ⼤整数 有符号值: FLOAT 4字节 单精度浮点数 有符号值: DOUBLE 8字节 双精度浮点数 有符号...

    Objective-C2.0程序设计

    4.1.5 限定词:long、long long、short、unsigned及signed 4.1.6 id类型 4.2 算术表达式 4.2.1 运算符的优先级 4.2.2 整数运算和一元负号运算符 4.2.3 模运算符 4.2.4 整型值和浮点值的相互转换 4.2.5 类型转换...

    day021-反射和注解笔记和代码.rar

    基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象; 注意 : 1、 Class类 和它的实例的产生: Class的对象是已经存在的类型, 所以不...

    freemarker总结

    JAVA模版引擎Freemarker常用标签(一) 1. if指令 这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下: <#if condition>... <#elseif condition>... <#elseif condition>......

Global site tag (gtag.js) - Google Analytics