• java中基本数据类型的最大值最小值理解


    文章目录

    概要

    今天在复习java的Java基础常见面试题时对java中基本数据类型的上下限有了一些思考,接下来我会结合自身的理解进行讲述

    主要内容

    Java 中有 8 种基本数据类型,分别为:6 种数字类型:
    4 种整数型:byte、short、int、long
    2 种浮点型:float、double
    1 种字符类型:char
    1 种布尔型:boolean。
    我们先单独来看int类型
    java中int类型的包装类为Integer,我们来看一下它的源代码

    public final class Integer extends Number
            implements Comparable<Integer>, Constable, ConstantDesc {
        /**
         * A constant holding the minimum value an {@code int} can
         * have, -231.
         */
        @Native public static final int   MIN_VALUE = 0x80000000;
    
        /**
         * A constant holding the maximum value an {@code int} can
         * have, 231-1.
         */
        @Native public static final int   MAX_VALUE = 0x7fffffff;
    
        /**
         * The {@code Class} instance representing the primitive type
         * {@code int}.
         *
         * @since   1.1
         */
        @SuppressWarnings("unchecked")
        public static final Class<Integer>  TYPE = (Class<Integer>) Class.getPrimitiveClass("int");
    
        /**
         * All possible chars for representing a number as a String
         */
        static final char[] digits = {
            '0' , '1' , '2' , '3' , '4' , '5' ,
            '6' , '7' , '8' , '9' , 'a' , 'b' ,
            'c' , 'd' , 'e' , 'f' , 'g' , 'h' ,
            'i' , 'j' , 'k' , 'l' , 'm' , 'n' ,
            'o' , 'p' , 'q' , 'r' , 's' , 't' ,
            'u' , 'v' , 'w' , 'x' , 'y' , 'z'
        };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    我们可以通过Max_VALUE和MIN_VALUE轻易的获取到int类型的上下限
    我们发现int类型的范围是-2147483648 ~ 2147483647
    正数相对于负数减 1 了。这是为什么呢?这是因为在二进制补码表示法中,最高位是用来表示符号的(0 表示正数,1 表示负数),其余位表示数值部分。所以,如果我们要表示最大的正数,我们需要把除了最高位之外的所有位都设为 1。如果我们再加 1,就会导致溢出,变成一个负数。
    而补码表示法中正数的补码等于其二进制表示也就是说int类型的最大值为01111111.。。。。等于2的31次方-1
    而最小值为其绝对值的二进制表示法取反加1,最终可以获得的最小数即为10000.。。。。等于-2的31次方
    如果仅仅是用第一位作为符号为,但是用普通的二进制表示法的话,对于正数来说,可以表示的最大数并没有变化,但是对于负数则变成了
    -2的31次方-1,少表示了一个数
    以上仅为个人理解,如果错误欢迎指出

  • 相关阅读:
    百度移动权重查询易语言代码
    Java并发面试题:(七)ThreadLocal原理和内存泄漏
    Linux - 基本开发工具
    JAVA:实现DynamicArray动态数组算法(附完整源码)
    【bash工具】jq遍历list
    Netty使用及常用组件(二)
    uniapp编译微信小程序富文本rich-text的图片样式不生效原因
    分分钟让你学会栈和队列
    Adadelta--学习笔记
    数据分析相关知识整理_--秋招面试版
  • 原文地址:https://blog.csdn.net/alicharity/article/details/134541272