Java数据类型详细介绍

news2024/12/28 6:58:19

Java程序中要求参与的计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换。本文将通过示例详细说说Java中数据类型的转换,感兴趣的可以了解一下

1. Java数据类型

前面说到,程序运行时产生的临时数据我们存储在被称为变量的内存单元里,而变量的创建,就是在内存中分配一块内存空间。

为什么要定义不同的数据类型呢?当我们预先定义好数据类型后,内存管理系统在给变量分配内存空间时,就可以根据变量的数据类型为变量分配合适的存储空间,分配的空间只能用来储存该类型数据。总的来说,给变量定义数据类型可以让内存空间得到充分的利用。

Java中数据类型一共分为两大类,一类是基本数据类型,另一类叫做引用数据类型。其中基本数据类型一共 8 种。

2. 基本数据类型

在基本数据类型中,每一个类型都定义了占用存储空间的字节数,我们可以根据现实中的意义,数据所占用内存的大小等选择合适的数据类型,达到充分利用内存空间的目的。

Java中定义了 8 个基本数据类型,分别是:

  • byte 字节型
  • short 短整型
  • int 整型
  • long 长整形
  • float 单精度浮点型
  • double 双精度浮点型
  • boolean 布尔型
  • char 字符型

其中前四种是数值型变量,现在对这 8 中数据类型做一个详解:

byte:

  • byte 数据类型是8位、有符号的,以二进制补码表示的整数;
  • 最小值是 -128(-2^7);
  • 最大值是 127(2^7-1);
  • 默认值是 0;

short:

  • short 数据类型是 16 位、有符号的以二进制补码表示的整数
  • 最小值是 -32768(-2^15);
  • 最大值是 32767(2^15 - 1);
  • 默认值是 0;

int:

  • int 数据类型是32位、有符号的以二进制补码表示的整数;
  • 最小值是 -2,147,483,648(-2^31);
  • 最大值是 2,147,483,647(2^31 - 1);
  • 默认值是 0 ;

long:

  • long 数据类型是 64 位、有符号的以二进制补码表示的整数;
  • 最小值是 -9,223,372,036,854,775,808(-2^63);
  • 最大值是 9,223,372,036,854,775,807(2^63 -1);
  • 默认值是 0L;

float:

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

double:

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

boolean:

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

char:

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

在学习基本数据类型时,不需要刻意的记背,在后面的练习中,由于数据类型的概念会一直用到,所以会慢慢熟练的掌握,现在要学习的就是了解每个数据类型,以及表示的数据范围,思考不同数据类型的应用场景。

数据类型的最大最小值以常量的形式定义在对应的包装类中,例如整形 int 的包装类:java.lang.Integer

1

2

3

4

5

6

7

public class Test {

    public static void main(String[] args) {

        System.out.println("整型 占用的二进制位:"+ Integer.SIZE);

        System.out.println("最大值:"+Integer.MAX_VALUE);

        System.out.println("最小值:"+Integer.MIN_VALUE);

    }

}

运行结果:

整型 占用的二进制位:32
最大值:2147483647
最小值:-2147483648

每个基本数据类型都预先定义了一个默认值,上面的介绍中已经给出。

3. 引用数据类型

引用数据类型的变量非常类似与C/C++中的指针,引用类型指向一个对象,这时指向对象的这个变量就是引用变量。引用类型的变量的默认值都是 NULL。

Java是一门面向对象的编程语言,后面我们要用到的类,接口,数组都是引用数据类型。

1

Student stu = new Student();

如上,在创建一个 Student 对象的时候,就是定义了一个名为 stu 的对象变量指向这个 Student 的对象。

4. 类型转换

4.1 自动类型转换

整型、实型、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。

转换时,必须满足转换前的数据类型的位数要低于转换后的数据类型(byte —> short —> char—> int —> long—> float —> double ),例如: short 数据类型的位数为16位,就可以自动转换位数为32的 int 类型。如下:

1

2

3

4

5

6

7

public class Test{

    public static void main(String[] args){

        char c1='a';//定义一个char类型

        int i1 = c1;//char自动类型转换为int

        System.out.println("char自动类型转换为int后的值等于"+i1);

    }

}

运行结果:

char 自动类型转换为 int 后的值等于97

4.2 强制类型转换

当我们要进行从高级转换到低级时,就要进行强制类型转换。转换的条件是转换的数据类型必须是兼容的。如下:

1

2

3

4

5

6

7

public class Test{

    public static void main(String[] args){

        int i = 123;

        byte b = (byte)i;//强制类型转换为byte

        System.out.println("int强制类型转换为byte后的值等于"+b);

    }

}

运行结果:

int强制类型转换为byte后的值等于123

数据类型转换应该注意这些问题:

  • 不能对 boolean 类型进行类型转换。
  • 不能把对象类型转换成不相关类的对象。
  • 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
  • 转换过程中可能导致溢出或损失精度。

到此这篇关于Java数据类型超详细示例讲解的文章就介绍到这了,希望对你有所帮助。

 

来源:https://www.weidianyuedu.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/55720.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

继北极星项目后,又一款低成本AR眼镜开源方案:OpenAR

2018年的时候,Leap Motion(Ultraleap前身)曾开源了一款低成本、简易的AR头显方案:Project North Star(北极星项目)。该方案主要用来帮助爱好者、开发者们快速上手AR开发,而无需购买HoloLens等昂…

Python_文件操作

目录 一、文件编码 二、什么是文件 三、文件操作 1、打开文件 open()打开函数 2、读取文件 3、写入文件 f.write() 使用w模式 4、文件追加 类比文件写入,只是将‘w’-->‘a’ 5、文件操作综合案例 一、文件编码 Thinking: 计算机只能识别 0和1,那么文本文件 如何…

Delaunay三角网之逐点插入法(优化版本三)

文章目录 一、简介二、实现代码三、实现效果参考文献一、简介 继续对三角网的研究,这一个版本的三角网构网思路很是巧妙,虽然仍是基于点的插入算法,但已经有些分治算法的影子,构网速度相较于前面两个版本要快很多,12万个点可以在1s内完成构网。具体的构网过程如下所述: 1…

查询运行在顶部的app包名及类名

android的ActivityManager会在logcat中打印出当前正在显示的app的包名以及类名,注,这是由ActivityManager打印,使用的日志TAG就是ActivityManager,所以我们在过虑信息时不能以自己程序的进程进行过滤,使用ActivityMana…

GBase 8s 产品功能-高可用和ER

GBase 8s 提供了业界领先的高可用集群技术 HAC, SSC, ER, 提供秒级故障 自动切换功能, 使数据库的可用性达到 99.999%, 具备如下特点: 通过不同方案组合, GBase 8s 具有搭建两地三中心、 同城双…

行业内口碑好值得信赖的短网址,让你不再选择恐惧

转眼一年又过去了,最近发现网络上有各种各样的短网址平台,让人眼花缭乱,都声称免费并且功能强大,但是据我的了解,很多免费的短网址都是有使用上的限制的,比如生成条数、访问次数、有广告等等、还有各种各样…

项目中的奇葩需求你都怎么应对?

XX群聊:“项目中的奇葩需求怎么应对?”(项目三兄弟加入了群聊) 小赵:“无论是啥需求,我都是甲方爸爸至上,尽力满足需求、让客户满意。但每个项目初期我都跟客户处得特别好,项目中期…

音视频同步原理

音视频同步 更多精彩内容 音频系统概述 音频时延payload_delay_ms jitter_delay(neteq)。 在WebRTC中有neteq,所以,音频的卡顿以及卡顿时长都是放在neteq内部进行计算的。 时间戳 时间戳的概念主要有以下几个: ntp时间戳: NTP时间戳是绝…

SPI协议讲解与总结

1.SPI通讯协议 SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线 1.1 SPI引脚与工作过程 SPI的通信原理很简单,它以主从方式工作,这种模式通常有一…

GitHub推送代码时弹出验证框总是登录失败

最近同事准备用GitHub布置个人博客,但是提交代码时总是弹出登录框然后输入我GitHub的账号密码后一直提示报错Logon failed, use ctrlc to cancel basic credential prompt,然后我才知道还有人不知道这个问题 2021年8月13日, github不再支持用密码提交代码…

【Mysql】内外连接

文章目录**1.内连接****2.外连接****3.小结**1.内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询 select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;案例:…

IPWorks MQ C++ Edition

IPWorks MQ C Edition 在应用程序中轻松实现消息队列(MQ)通信协议。 IPWorks MQ旨在帮助您轻松实现流行的消息传递协议,以便在网络设备之间进行通信。支持许多常见的协议和服务,包括Azure Relay、AMQP、MQTT、STOMP等。 IPWorks MQ功能 完全符合MQTT版本…

普通物理光学:光栅

透射光栅 光栅常数 a:不透光部分的宽度b:透光部分的宽度dab:光栅常数N:缝数k:光谱的级数衍射图像:单缝衍射多缝干涉 光栅的每条狭缝,都将在接收屏幕上的同一位置,产生同样的单缝夫琅禾费衍射图样各条狭缝的衍射光再在接收屏幕上相…

【Vue脚手架项目的结构】

目录 1. 关于VUE Cli 2. 修改VUE Cli项目的端口号 3. Vue脚手架项目的结构 4. 关于标签 5. 关于路由配置 6. 关于视图组件 7. 应用Element UI 1. 关于VUE Cli VUE Cli:Vue脚手架 在Vue脚手架项目中,使用的是“单页面”的设计模式,也就…

CentOS Linux 的安装

CentOS Linux 的安装 作者:Grey 原文地址: 博客园:CentOS Linux 的安装 CSDN:CentOS Linux 的安装 说明 本安装说明是基于 Windows 10 下 VMware workstation 16 安装 Linux,Linux 版本是 CentOS 8,需…

IPWorks IoT Java Edition

IPWorks IoT Java Edition 在应用程序中轻松实现物联网(IoT)通信协议。 IPWorks IoT旨在帮助您轻松实现联网设备之间通信所需的IoT协议。支持许多常见协议,包括AMQP、MQTT、STOMP、CoAP等。它包括不依赖任何外部库的本地软件组件。 IPWorks物联网功能 在所有QoS级别…

新员工webpack打包后上传服务器页面空白

某天同事小白使用了webpack开发vue项目,在项目开发完成后,使用命令:npm run build对项目进行打包后发布服务器页面显示空白 排查后发现:webpack打包的时候引入js时使用的是绝对路径导致的 解决方案如下 修改webpack打包文件中的…

[附源码]JAVA毕业设计婚纱摄影管理(系统+LW)

[附源码]JAVA毕业设计婚纱摄影管理(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&…

【Redis-09】面试题之Redis数据结构与对象-RedisObject(下篇)

承接上篇【Redis-08】面试题之Redis数据结构与对象-RedisObject(上篇) 8. type-字符串string 8.1 字符串的三种encoding编码(int embstr raw) 如果保存的是整型,并且可以用long类型标识(-9223372036854…

《InnoDB引擎七》InnoDB关键特性-插入缓存

InnoDB 关键特性 InnoDB存储引擎的关键特性包括: Insert Buffer (插入缓冲)Double Write (两次写)Adaptive Hash Index (自适应哈希索引)Async IO (异步IO)Flush Neighbor Page (刷新领接页) 这些特性为InnoDB存储引擎带来了更好的性能以及更高的可靠性。 插入缓冲…