Java 基本数据类型【基础篇】

news2024/10/5 14:20:01




目录

    • Java 数据类型
      • 基本数据类型
        • 整数类型【byte、short、int、long】
        • 浮点类型【float、double】
        • 布尔类型【boolean】
        • 字符类型【char】
      • 引用数据类型




Java 数据类型


Java 语言支持的数据类型分为两种:基本数据类型引用数据类型。其数据类型结构如下图所示:


故屿




基本数据类型


基本数据类型共八种,可分为六种数字类型(四个整数型,两个浮点型),整体又可分为四大类:

i. 整数类型(byte、short、int、long)
ii. 浮点类型(float、double)
iii. 布尔类型(boolean)
iiii. 字符类型(char)

Java 的基本数据类型取值范围如下表:


类型名称关键字包装类默认值占用内存/位数取值范围
字节型byteByte0一个字节/8位-27 ~ 27-1 ( -128~127)
短整型shortShort0两个字节/16位-215 ~ 215-1 (-32768~32767)
整型intInteger0四个字节/32位-231 ~ 231-1 (-2147483648~2147483647)
长整型longLong0L八个字节/64位-263 ~ 263-1 (-9223372036854775808L~9223372036854775807L)
单精度浮点型floatFloat0.0f四个字节/6~7个有效位+/-3.4E+38F
双精度浮点型doubleDouble0.0d八个字节/15个有效位+/-1.8E+308
字符型charCharacter‘u0000’两个字节/16位 Unicode 字符最小值: \u0000(十进制等效值为0)、最大值是 \uffff(即为 65535)
布尔型booleanBooleanfalse一个字节(非规范强制)true 或 false



整数类型【byte、short、int、long】

对于整数类型,Java 只定义了带符号的整型,因此,最高位的 bit 表示符号位(0表示正数,1表示负数)。 Java 四种整数类型变量说明如下:


①byte 类型是最小的整数类型。当用户从网络或文件中处理数据流时,或者处理可能与 Java 的其他内置类型不直接兼容的未加工的二进制数据时,该类型非常有用。

了解计算机内存的基本结构:

a. 计算机内存的最小存储单元是字节(byte),一个字节就是一个 8 位二进制数,即 8 个 bit。
b. 它的二进制表示范围从 00000000 ~ 11111111,换算成十进制是 0 ~ 255,换算成十六进制是 00 ~ ff。
c. 内存单元从0开始编号,称为内存地址。

一个字节是 1byte,1024字节是 1K,1024K是 1M,1024M是 1G,1024G是 1T。一个拥有 4T 内存的计算机的字节数量如下:

4T = 4 x 1024G
= 4 x 1024 x 1024M
= 4 x 1024 x 1024 x 1024K
= 4 x 1024 x 1024 x 1024 x 1024
= 4398046511104

②short 类型限制数据的存储为先高字节,后低字节,这样在某些机器中会出错,因此该类型很少被使用。

③int 类型是最常使用的一种整数类型。

④对于大型程序常会遇到很大的整数,当超出 int 类型所表示的范围时就要使用 long 类型。


  • 示例如下

public static void main(String[] args) {

	int i1 = 0xff0000; // 十六进制表示:16711680
    int i2 = 0b1000000000; // 二进制表示:512
    long l1 = 9000000000000000000L; // long型的结尾需要加L
    long l2 = 900; // 没有加L,此处 900 为 int,但 int 类型可以赋值给 long
    int i3 = 900L; // 错误:不能把 long 类型赋值给 int

    byte a = 20; // 声明一个 byte类型的变量并赋予初始值为 20
    short b = 10; // 声明一个 short类型的变量并赋予初始值为 10
    int c = 30; // 声明一个 int类型的变量并赋予初始值为 30
    long d = 40; // 声明一个 long 类型的变量并赋予初始值为 40
    long sum = a + b + c + d;
    
    // 打印输出的最终结果:20+10+30+40=100
    System.out.println("20+10+30+40=" + sum);
}


如上注意:整数类型计算可以使用 “+” 相加,而非字符串之间的连接。




浮点类型【float、double】

注意:在声明 float 类型的变量时,需要在数值后添加 “F” 或 “f”。
若不带 f 结尾的则是 double 类型,不能赋值给 float

Java 默认的浮点型是 double,例如,3.14 和 3.1415d 都是 double 型数值。如果要说明一个 float 类型数值,就需要在其后追加字母 f 或 F,如 3.14f 和 3.1415F 都是 float 类型的常数。


  • 示例如下

float price = 65.7f;  // 定义 float 类型的变量并赋予初始值
float f2 = 3.14e38f; // 科学计数法表示为:3.14x10^38
float f3 = 1.0; // 错误:不带 f 结尾的是 double 类型,不能赋值给 float

double price = 12.254d; // 定义 double 类型的变量并赋予初始值,此类型数值后默认可以不写 “d”
double d2 = -1.79e308; // 科学计数法表示为:-1.79x10^308




布尔类型【boolean】

boolean:布尔型,那 boolean 到底占用几个字节

占1个字节,查看 Java 官方 doc 教程上显示:boolean 的字节数是不确定,布尔数据类型只有两个可能的值:true 和 false。将此数据类型用于跟踪真/假条件的简单标志。这种数据类型表示一位信息,但它的 “大小” 并不是精确定义的;
也有说 boolean 一般占4个字节,因为 32 位 CPU 一次读4个字节,会直接把 boolean 当作 int 处理;但是 boolean[] 数组反而会按1字节算,原因是省内存;

总之,boolean 实际上并不一定是1个字节,JVM 规范并没有明确规定,其字节数其实是不确定的。

布尔类型:用于对两个数值通过逻辑运算,判断结果是“真”还是“假”。
Java 中用保留字 true 和 false 来代表逻辑运算中的“真”和“假”。因此,一个 boolean 类型的变量或表达式只能是取 true 和 false 这两个值中的一个。


  • 示例如下

boolean isable;    // 声明 boolean 类型的变量 isable
boolean b = false;    // 声明 boolean 类型的变量 b,并赋予初值为 false

boolean b1 = true;
boolean b2 = false;
boolean isGreater = 5 > 3; // 计算结果为 true

int age = 10;
boolean isAdult = age >= 15; // 计算结果为 false




字符类型【char】

char(字符型):单个字符,两个字节,16位,即一个单一的 16 位 Unicode 字符;
由 ASCII 码表:

48 ~ 57 为 0 ~ 9;
65 ~ 90 为 A ~ Z;
97~ 122 为 a ~ z;

最大值:\uffff 即为 65535,
最小值:\u0000 即 十进制等效值为 0;

注意:在Java中,字符类型是以 Unicode 码表示的。


  • 示例如下

char letter = 'D'; // char 字符型变量的类型用来表示单个的字符,单引号表示
char numChar = '5'; 
char c = 'c'; // 在 ASCII 码表中'D' 对应表示 68,



  • 注:
      long 和 double 都不需要添加 " "
      char 单引号表字符一个 ‘ ’
      string 双引号表示字符串多个 " ",String字符串是引用类型!






引用数据类型


引用数据类型是建立在基本数据类型的基础上,包括:数组、类和接口。引用数据类型是由用户自定义,用来限制其他数据的类型。



  • 注意:空引用(null)只能被转换成引用类型,不能转换成基本类型,因此不要把一个 null 值赋给基本数据类型的变量。













Note:
欢迎点赞,留言,转载请在文章页面明显位置给出原文链接
知者,感谢您在茫茫人海中阅读了我的文章
没有个性 哪来的签名!
详情请关注点我
持续更新中

扫一扫 有惊喜!
© 2024 06 - Guyu.com | 【版权所有 侵权必究】

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

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

相关文章

python-20-零基础自学python-用类和while设计一个掷多次、多面骰子的工具的基础

学习内容:《python编程:从入门到实践》第二版 知识点:类、random、while循环、把while循环和类结合起来 练习内容: 练习9-13:骰子 创建一个Die类,它包含一个名为sides的属性,该属性的默认值…

【分布式计算框架 MapReduce】MapReduce 初级编程

目录 一、MapReduce 示例程序的导入并运行测试 二、准备 4 个小文件(文件大小分别为 1.7M,5.1M,3.4M,6.8M) 1. 第一种情况,默认分片:不修改程序代码,直接使用 WordCount 源程序 2…

kali Linux基本命令(超全)_kali linux命令

一、系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件- (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpu…

【UE 网络】RPC远程过程调用 入门篇

目录 0 引言1 RPC基本概念1.1 定义1.2 分类 2 RPC的使用2.1 Client RPC2.2 Server RPC2.3 Multicast RPC 🙋‍♂️ 作者:海码007📜 专栏:UE虚幻引擎专栏💥 标题:【UE 网络】RPC远程过程调用 入门篇❣️ 寄语…

【JavaScript】JavaScript简介

希望文章能给到你启发和灵感~ 如果觉得文章对你有帮助的话,点赞 关注 收藏 支持一下博主吧~ 阅读指南 JavaScript入门(1)————JavaScript简介开篇说明一、什么是JavaScript二、JavaScript的使用2.1 开发工具的选择…

UE5材质之HLSL:深度

UE4/5的Custom节点:在VScode使用HLSL(新手入门用)_vscode写hlsl-CSDN博客 效果: 材质节点: 自定义节点代码: float3 rayStepViewDir*-1; float4 inputTexTexture2DSample(TexObject,TexObjectSampler,uv)…

yolov8obb角度预测原理解析

预测头 ultralytics/nn/modules/head.py class OBB(Detect):"""YOLOv8 OBB detection head for detection with rotation models."""def __init__(self, nc80, ne1, ch()):"""Initialize OBB with number of classes nc and la…

(笔记)Error: qemu-virgl: Failed to download resource “qemu-virgl--test-image“解决方法

错误: > Downloading https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/FD12FLOPPY.zip curl: (22) The requested URL returned error: 404Error: qemu-virgl: Failed to download resource "qemu-virgl--test-image" D…

基于QT开发的气体成分检测数据记录软件

1、软件概述 气体成分检测数据记录软件用于实现多种气体分析仪及相关设备实时数据的获取、存储和传送。目前支持的设备主要有气体分析仪、多通道进样阀箱、冷阱处理系统和气体采样处理系统。   气体成分检测数据记录软件可以根据实际应用需要进行配置,以实现不同应…

【PyQt】20-QTimer(动态显示时间、定时关闭)

QTimer 前言一、QTimer介绍二、动态时间展示2.1 代码2.2 运行结果 三、定时关闭3.1 介绍他的两种用法1、使用函数或Lambda表达式2、带有定时器类型(高级) 3.2 代码3.3 运行结果 总结 前言 好久没学习了。 一、QTimer介绍 pyqt里面的多线程可以有两种实…

使用 MongoDB 剖析开放银行:技术挑战和解决方案

开放银行(或开放金融)在银行业掀起了一股颠覆性浪潮,它迫使金融机构(银行、保险公司、金融科技公司、企业甚至政府机构)迎接一个透明、协作和创新的新时代。这种模式转变要求银行与第三方提供商(TPP&#x…

RAID0、RAID1、RAID5、RAID10、软RAID

硬盘 连续空间 无法 扩容 每个raid对应每个raid卡,没有阵列卡就不能用raid lvm 非连续空间 可以动态扩容 raid 备份, 提高读写性能,不能扩容 raid 是磁盘的集合,按照排列组合的方法不 一,给 raid 去了不同的名字…

Webpack: 构建微前端应用

Module Federation 通常译作“模块联邦”,是 Webpack 5 新引入的一种远程模块动态加载、运行技术。MF 允许我们将原本单个巨大应用按我们理想的方式拆分成多个体积更小、职责更内聚的小应用形式,理想情况下各个应用能够实现独立部署、独立开发(不同应用甚…

[OtterCTF 2018]Closure

既然你从内存中提取了密码,你能解密rick的文件吗? 密码是知道了,加密文件 ? flag 文件?dump 出来 已知这个勒索软件为HiddenTear,直接在网上找到解密程序HiddenTearDecrypter先将加密文件的末尾多余的0去掉…

javaScript利用indexOf()查找字符串的某个字符出现的位置

1 创建字符串 2 利用indexof()查询字符串的字符 3 利用while循环判断indexOf是否等于-1,不等于-1就打印一次并且索引号1去查下一个字符 //创建字符串var str1234567812311231;var indexstr.indexOf(1);//查询该字符while(index !-1)//indexOf()没有查到会返回-1{…

右键新建没有TXT文本文档的解决办法

电脑右键新建,发现没有txt了,我查网上办法都有点复杂,诸如注册表的,但是其实很简单,重启windows资源管理器就可以了。 点击重新启动,之后新建就有txt文档了。

基于Spring Boot的药房信息管理系统

1 项目介绍 1.1 研究的背景及意义 随着社会的飞速进步和药房行业竞争的白热化,传统的手工管理模式已难以适应药房信息管理的现代化需求。在计算机科学技术日臻完善的背景下,药房信息管理者们日益认识到运用计算机技术进行信息管理的迫切性和重要性。计…

昇思MindSpore学习总结五——网络构建

1、网络构建 神经网络模型是由神经网络层和Tensor操作构成的,mindspore.nn提供了常见神经网络层的实现,在MindSpore中,Cell类是构建所有网络的基类,也是网络的基本单元。一个神经网络模型表示为一个Cell,它由不同的子C…

创新探析:我国AIGC产业规模有望在2030年破万亿,创意设计行业或迎来全面革新

在科技日新月异的今天,人工智能生成内容(AIGC)与创意设计行业的结合正以前所未有的速度推动着产业变革。随着技术的不断突破和市场需求的日益增长,我国AIGC产业规模有望在2030年突破万亿元大关,这一宏伟目标不仅是对技…

VUE-CLI脚手架项目的初步创建与配置

首先创建一个VUE项目,注意选择版本为 2.6.10 打开APP.vue文件,并且删除APP.vue中多余的代码 创建index.vue文件 在此文件中写入如下图片中的代码来初步创建页面 创建router目录,并且创建index.js 文件如下 在终端输入npm run serve 运行 然后…