Java基础-Java基本数据类型

 更新时间:2022年01月26日 16:07:31   作者:码农洞见  
这篇文章主要介绍了Java基础-Java基本数据类型,变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间,下面我们就来对Java基本数据类型作简单的介绍,需要的朋友可以参考一下

1 前言

变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。

内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。

因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。
 
Java支持八种基本数据类型,包括一种布尔类型、一种字符类型、一种数值型,包括四种整数类型和两种浮点数类型。

2 布尔类型

  • boolean数据类型表示一位的信息;
  • 只有两个取值:true false
  • 这种类型只作为一种标志来记录true/false 情况;
  • 默认值是 false;
  • 例子:
boolean b = true2

3 字符类型

  • char 类型是一个单一的 16 位 Unicode 字符;
  • 最小值是 \u0000(十进制等效值为 0);
  • 最大值是 \uffff(即为 65535);
  • char 数据类型可以储存任何字符;
  • 例子:
  char c = 'A';

4 值类型

4.1 byte

  • byte 数据类型是8位、有符号的,以二进制补码表示的整数;
  • 最小值是 -128(-2^7);
  • 最大值是 127(2^7-1);
  • 默认值是 0;
  • byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
  • 例子:
  byte b = 100;

4.2 short

  • short 数据类型是 16 位、有符号的以二进制补码表示的整数
  • 最小值是 -32768(-2^15);
  • 最大值是 32767(2^15 - 1);
  • Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
  • 默认值是 0;
  • 例子:
  short short s = -10000;

4.3 int

  • int 数据类型是32位、有符号的以二进制补码表示的整数;
  • 最小值是 -2,147,483,648(-2^31);
  • 最大值是 2,147,483,647(2^31 - 1);
  • 一般地整型变量默认为 int 类型;
  • 默认值是 0 ;
  • 例子:
  int a = 100000;

4.4 long

  • long 数据类型是 64 位、有符号的以二进制补码表示的整数;
  • 最小值是 -9,223,372,036,854,775,808(-2^63);
  • 最大值是 9,223,372,036,854,775,807(2^63 -1);
  • 这种类型主要使用在需要比较大整数的系统上;
  • 默认值是 0L;
  • 例子:
 long l = 100000L;

"L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。

4.5 float

  • float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
  • float 在储存大型浮点数组的时候可节省内存空间;
  • 默认值是 0.0f;
  • 浮点数不能用来表示精确的值,如货币;
  • 例子:
  float f1 = 234.5f;

4.6 double

  • double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;
  • 浮点数的默认类型为 double 类型;
  • double类型同样不能表示精确的值,如货币;
  • 默认值是 0.0d;
  • 例子:
  double d5 = 12.9867; 

5 码农来洞见

5.1 类型转换

Java允许整数和浮点数之间互相转换。并且,由于每个字符都对应Unicode编码中的一个数字,所以char与整数和浮点数之间也可以相互转换。事实上,在Java中,boolean类型是唯一一种不能跟其他基本类型相互转换的基本类型。

自动类型转换:

也叫隐式类型转换,其实就是小范围的数据类型向大范围的数据类型转换(byte ->short(char)->int->long->float->double)

强制类型转换:

也叫显式类型转换,是从存储范围大的类型到存储范围小的类型(double→float→long→int→short(char)→byte)。强制类型转换所带来的结果是可能会丢失精度,如果此数值尚在范围较小的类型数值范围内,对于整型变量精度不变,但如果超出范围较小的类型数值范围内,很可能出现一些意外情况。

int i = 223;
byte b = (byte) i;

上面的例子中输出值是-23.

为什么结果是-23?需要从最根本的二进制存储考虑。

233的二进制表示为:24位0 + 11101001,byte型只有8位,于是从高位开始舍弃,截断后剩下:11101001,由于二进制最高位1表示负数,0表示正数,其相应的负数为-23。

数据类型自动提升:

数值类型在内存中直接存储其本身的值,对于不同的数值类型,内存中会分配相应的大小去存储。如:byte类型的变量占用8位,int类型变量占用32位等。相应的,不同的数值类型会有与其存储空间相匹配的取值范围。

在Java中,整数类型(byte/short/int/long)中,对于未声明数据类型的整型,其默认类型为int型。在浮点类型(float/double)中,对于未声明数据类型的浮点型,默认为double型。

5.2 存储空间

注意事项1:

如果需要一个占位符来存储数字1000000,那么需要一个int型数,long可以用于存储更大的数字,读者可能问,既然long可以包含比byte和int型数更大的数字,为什么不总是使用long呢?这是因为long需要64位,相比byte
或int,这会占用更多的内存空间。因此,为了节省空间,需要选择合适的基本类型。

注意事项2:

将一个int型的1000赋给一个byte型的变量a,提示出错,但是最后一句:将一个int型的3赋给一个byte型的变量c,居然编译正确,这是为什么呢?

byte b1 = 1000;
byte b2 = 3;

原因在于:jvm在编译过程中,对于默认为int类型的数值时,当赋给一个比int型数值范围小的数值类型变量,会进行判断,如果此int型数值超过数值类型,那么会直接编译出错。但是如果此int型数值尚在数值类型范围内,jvm会自动进行一次隐式类型转换。

到此这篇关于Java基础-Java基本数据类型的文章就介绍到这了,更多相关Java基本数据类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java多线程编程之Synchronized块同步方法

    java多线程编程之Synchronized块同步方法

    这篇文章主要介绍了java多线程编程之Synchronized块同步方法,synchronized关键字又称同步锁,当方法执行完后,会自动释放锁锁,只有一个线程能进入此方法,看看下文中各种例子对synchronized的详细解释
    2015-12-12
  • Freemarker 最简单的例子程序

    Freemarker 最简单的例子程序

    Freemarker最简单的例子程序是通过String来创建模版对象,并执行插值处理。
    2016-04-04
  • java模拟实现银行ATM机操作

    java模拟实现银行ATM机操作

    这篇文章主要为大家详细介绍了java模拟实现银行ATM机操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • IntelliJ IDEA将导入的项目转成maven项目

    IntelliJ IDEA将导入的项目转成maven项目

    这篇文章主要介绍了IntelliJ IDEA将导入的项目转成maven项目,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 关于TreeMap自定义排序规则的两种方式

    关于TreeMap自定义排序规则的两种方式

    这篇文章主要介绍了关于TreeMap自定义排序规则的两种方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • java常见报错:Array Out of Bounds两种解决办法

    java常见报错:Array Out of Bounds两种解决办法

    这篇文章主要给大家介绍了关于java报错Array Out of Bounds的两种解决办法,Array out of bounds错误表示你尝试访问数组中不存在的索引,即索引小于零或者大于等于数组的大小,文中通过代码将解决的办法介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • java多线程之wait(),notify(),notifyAll()的详解分析

    java多线程之wait(),notify(),notifyAll()的详解分析

    本篇文章是对java多线程 wait(),notify(),notifyAll()进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Spring Cloud 优雅下线以及灰度发布实现

    Spring Cloud 优雅下线以及灰度发布实现

    这篇文章主要介绍了Spring Cloud 优雅下线以及灰度发布实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Java线上问题排查神器Arthas实战原理解析

    Java线上问题排查神器Arthas实战原理解析

    原先我们Java中我们常用分析问题一般是使用JDK自带或第三方的分析工具如jstat、jmap、jstack、 jconsole、visualvm、Java Mission Control、MAT等,还有一款神器Arthas工具,可帮助程序员解决很多繁琐的问题,感兴趣的朋友一起看看吧
    2022-01-01
  • 基于Java语言MD5加密Base64转换方法

    基于Java语言MD5加密Base64转换方法

    这篇文章主要为大家详细介绍了基于Java语言的MD5加密Base64转换方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09

最新评论