JAVA基本数据类型

举报
wangbbbccc 发表于 2021/07/20 19:52:02 2021/07/20
【摘要】 JAVA基本数据类型

Java中有8种基本数据类型可以分为三大类

一、字符型

char

二、布尔型

boolean

三、数值型

1.整型:byteshortintlong

2.浮点型:floatdouble

注:String不是基本数据类型,是引用类型。

char

char类型是可以运算的因为char在ASCII等字符编码表中有对应的数值
在Java中,对char类型字符运行时,直接当做ASCII表对应的整数来对待
用单引号''标识,只能放单个字符
char + char,char + int——类型均提升为int,附值char变量后,输出字符编码表中对应的字符

public static void main(String[] args) {
    char m = 'a';
    char m1 = 'a' + 'b';//char类型相加,提升为int类型,输出对应的字符。
    int m2 = 'a' + 'b';//结果是195。//195没有超出int范围,直接输出195。
    char m3 = 'a' + m1;//会报错。//因为b是一个赋值的变量。
    char m4 = 197;//输出字符编码表中对应的字符。
    char m5 = '197';//会报错。//因为有单引号,表示是字符,只允许放单个字符。
    char m6 = 'a' + 1;//输出结果是b。//提升为int,计算结果98对应的字符是b。
}

boolean

使用1个bit理由是boolean类型的值只有true和false两种逻辑值,在编译后会使用1和0来表示,这两个数在内存中只需要1位(bit)即可存储,位是计算机最小的存储单位。

布尔类型:布尔数据类型只有两个可能的值:真和假。使用此数据类型为跟踪真/假条件的简单标记。这种数据类型就表示这一点信息,但是它的“大小”并不是精确定义的。

boolean类型没有给出精确的定义,《Java虚拟机规范》给出了4个字节,和boolean数组1个字节的定义,具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。这其实是运算效率和存储空间之间的博弈,两者都非常的重要。

byte、short、int、long的取值范围

Java中的整型主要包含byteshortintlong这四种,表示的数字范围也是不同的,之所以表示范围不同主要原因是因为他们存储数据时所占的字节数的多少有关。

因为1字节=8位(bit)。

java中的整型属于有符号数即表示正负

先来看计算中8bit可以表示的数字: 最小值:(-128(-2^7) 最大值:(127(2^7-1)

整型的这几个类型中,

  bytebyte1个字节来存储,范围为-128(-2^7)127(2^7-1)byte类型的默认值为0

  shortshort2个字节存储,范围为-32,768 (-2^15)32,767 (2^15-1)short类型的默认值为0

  intint4个字节存储,范围为-2,147,483,648 (-2^31)2,147,483,647 (2^31-1),int类型的默认值为0

       longlong8个字节存储,范围为-9,223,372,036,854,775,808 (-2^63)9,223,372,036, 854,775,807 (2^63-1)long类型的默认值为0L0l,也可直接写为0

public static void main(String[] args) {
    int minValue = Integer.MIN_VALUE;
    int maxValue = Integer.MAX_VALUE;
    System.out.println("minValue (" + minValue + ") + maxValue (" + maxValue + ")");

    byte maxValue1=Byte.MIN_VALUE;
    byte minValue1=Byte.MAX_VALUE;
    System.out.println("minValue (" + minValue1 + ") + maxValue1 (" + maxValue1+")");

    long long1=Long.MIN_VALUE;
    long long2=Long.MAX_VALUE;
    System.out.println("long1 (" + long1 + ") + long2 (" + long2+")");

    short short1=Short.MIN_VALUE;
    short short2=Short.MAX_VALUE;
    System.out.println("short1 (" + short1 + ") + short2 (" + short2+")");
}

输出结果:

minValue (-2147483648) + maxValue (2147483647)
minValue (127) + maxValue1 (-128)
long1 (-9223372036854775808) + long2 (9223372036854775807)
short1 (-32768) + short2 (32767)

浮点型

首先明确java中浮点型数据类型主要有:单精度float、双精度double

浮点数和小数并不是完全一样的,计算机中小数的表示法,其实有定点和浮点两种。因为在位数相同的情况下,定点数的表示范围要比浮点数小。所以在计算机科学中,使用浮点数来表示实数的近似值。

单精度浮点数(float

单精度浮点数在机内占4个字节、有效数字32bit

Java语言当中,所有的浮点型字面值默认当做double类型来处理,要想该字面值当做float类型来处理,需要在字面值后面添加F/f,或者强制装换为float

public static void main(String[] args) {
    //3.14是浮点型,浮点型字面值默认当做double类型来处理,直接编译通过;
    double a=3.14;
    //3.14是浮点型,则必须加 F或者f,若没加,直接编译不通过,会报错“精度损失”   
    float b=3.14;
    //解决办法:
    //第一种方式:强制类型转换
    float c=(float)3.14;
    //第二种方式:没有类型转换,直接在值后面加f或者F;
    float d=3.14F;
    }

双精度浮点数(double

双精度浮点数在机内占8个字节、有效数字64bitdouble的精度太低,不适合用于涉及到钱的问题,要求精度较高,使用double或者是float的会被祭天的所以在java中有一个基础的类库名为:java.math.BigDecimal,但这个BigDecimal类型是引用类型不是基础类型

 

最后附一个数据的取值范围表

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。