【Java】数据类型及类型转换

news2024/11/13 16:28:39

数据类型

Java语言的数据类型分为两大类:

  1. 基础数据类型
  2. 引用数据类型

基础数据类型

基础数据类型包括以下8种:

类型名称关键字占用内存取值范围区间描述
字节型byte1 字节-128~127-27~27-1
短整型short2 字节-32768~32767-215~215-1
整型int4 字节-2147483648~2147483647-231~231-1
长整型long8 字节-9223372036854775808L~9223372036854775807L-263~263-1
单精度浮点型float4 字节+/-3.4E+38F(6~7个有效位)
双精度浮点型double8 字节+/-1.8E+308(15 个有效位)
字符型char2 字节ISO单一字符集
布尔型boolean1 字节true 或 false

所有基本数据类型的大小在各种不同的平台上保持不变,有助于提高Java程序的可移植性。

引用数据类型

引用数据类型建立在基本数据类型的基础上,包括数组、类和接口。它们由用户自定义,用于限制其他数据的类型。Java不支持C++中的指针类型、结构类型、联合类型和枚举类型。

Java是一种强制类型的语言,所有变量都必须先定义其数据类型,然后才能使用。

在这里插入图片描述

  • 对于长整型(long),若赋值超出int型最大最小值,需在数字后加Ll
  • 默认情况下,小数被视为double型。
  • 定义字符型变量时,要用单引号表示。
  • 布尔类型通常用于流程控制中作为判断条件。

类型转换

从低精度数据类型向高精度数据类型转换不会溢出且总是成功;而高精度向低精度转换可能会导致信息丢失。

隐式类型转换

小容量向大容量转换,称为自动类型转换。

  • byte,short,char --> int --> long --> float --> double

显式类型转换

大容量向小容量转换,需要使用强制类型转换符。(类型名)要转换的值

// 操作大数时,注意溢出问题
int m = 10_0000_0000;
int y = 20;
long t3 = m * ((long)y);
System.out.println(t3);

拓展

整数拓展

  • 进制:二进制(0b)、十进制、八进制(0)、十六进制(0x
int i = 10;
int i1 = 0b10;
int i2 = 007;  // 八进制
int i3 = 0x10; // 十六进制
System.out.println(i);	// 10
System.out.println(i1); // 2
System.out.println(i2); // 7
System.out.println(i3); // 16

浮点数拓展

  • float类型有限且离散,可能会有舍入误差。
  • 最好避免使用浮点数进行精确比较。
  • 使用BigDecimal类处理需要高精度的计算,如银行业务。
float f = 0.1f;
double d = 1.0 / 10;

System.out.println(f == d); // false
System.out.println(f);
System.out.println(d);

float d1 = 2333333333333f;
float d2 = d1 + 1;
System.out.println(d1 == d2);  // true

字符拓展

  • 所有字符本质上是数字。
  • Java采用Unicode编码格式。(0~65536)
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1);	// 强制类型转换 97
System.out.println(c2);
System.out.println((int)c2);	// 强制类型转换 20013

布尔值拓展

boolean flag = true;
if (flag) {} // 等价于 if (flag == true)

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

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

相关文章

算法学习笔记(8.3)-(0-1背包问题)

目录 最常见的0-1背包问题: 第一步:思考每轮的决策,定义状态,从而得到dp表 第二步:找出最优子结构,进而推导出状态转移方程 第三步:确定边界条件和状态转移顺序 方法一:暴力搜素…

经典元启发式算法的适用范围及基本思想

元启发式算法是针对优化问题设计的一类高级算法,它们具有广泛的适用性,可以解决不同类型的问题。不同的元启发式算法由于其特定的搜索机制和策略,适用的优化问题类型也有所不同。以下是一些常见元启发式算法及其适用范围: 1. 遗传…

OrangePi AIpro 浅上手及搭建卡通图像生成多元化AI服务

前言 很高兴,收到了一份新款 OrangePi AIpro 开发板,这是香橙派第一次与华为昇腾合作,使用昇腾系列 AI 处理器来设计这款高性价比的 AI 开发板。这块开发板不仅性能强大,还支持丰富的硬件接口,为AI开发者提供了一个理…

Nginx的访问限制与访问控制

访问限制 访问限制是一种防止恶意访问的常用手段,可以指定同一IP地址在固定时间内的访问次数,或者指定同一IP地址在固定时间内建立连接的次数,若超过网站指定的次数访问将不成功。 请求频率限制配置 请求频率限制是限制客户端固定时间内发…

代码随想录第十二天|226.翻转二叉树、 101.对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度

文章目录 226.翻转二叉树思路解法一、前序遍历递归解法二、深度优先搜索--迭代 101.对称二叉树思路解法一、递归解法二、迭代 104.二叉树的最大深度解法一、深度优先搜索--递归解法二、广度优先搜索--迭代 111.二叉树的最小深度解法一、深度优先搜索--递归解法二、广度优先搜索…

制作显卡版docker并配置TensorTR环境

感谢阅读 相关概念docker准备下载一个自己电脑cuda匹配的docker镜像拉取以及启动镜像安装cudaTensorRT部署教程 相关概念 TensorRT是可以在NVIDIA各种GPU硬件平台下运行的一个模型推理框架,支持C和Python推理。即我们利用Pytorch,Tensorflow或者其它框架…

2、matlab打开显示保存点云文件(.ply/.pcd)以及经典点云模型数据

1、点云数据简介 点云数据是三维空间中由大量二维点坐标组成的数据集合。每个点代表空间中的一个坐标点,可以包含有关该点的颜色、法向量、强度值等额外信息。点云数据可以通过激光扫描、结构光扫描、摄像机捕捉等方式获取,广泛应用于计算机视觉、机器人…

常用控件(六)

布局管理器 布局管理器垂直布局QHBoxLayoutQGridLayoutQFormLayoutQSpacerItem 布局管理器 之前使⽤ Qt 在界⾯上创建的控件, 都是通过 “绝对定位” 的⽅式来设定的. 也就是每个控件所在的位置, 都需要计算坐标, 最终通过 setGeometry 或者 move ⽅式摆放过去.这种设定⽅式其…

JAVA NIO组件之Buffer详解

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…

标签-镜像拉取策略-重启策略-pod优雅终止-pod中容器资源限制-容器类型-容器守护进程-日志排错-容器命令exec-cp

一.标签 1.概述&#xff1a; 标签是附加到kubernets对象&#xff08;比如pod&#xff09;上的键值对&#xff0c;标签可以在创建时附加到对象&#xff0c;随后也可以随时添加修改&#xff1b;标签不支持唯一性。 在k8s中大多数资源都是通过标签进行关联的&#xff08;如pod与s…

管理Linux本地用户和组

什么是用户 用户账户在可以运行命令的不同人员和程序之间提供安全界限。 在Linux系统中&#xff0c;系统通过分配唯一的标识号&#xff08;用户ID或UID&#xff09;来区分不同的用户帐户。 在Linux系统中&#xff0c;用户帐户有以下三种主要类型&#xff1a; 超级用户 负责…

跨平台APP开发工具的选择

跨平台APP开发工具允许开发者编写一次代码,然后在多个平台上运行,如iOS、Android等,这极大地提高了开发效率并降低了维护成本。下面是一些流行的跨平台APP开发工具及其特点: React Native 开发公司:Facebook编程语言:JavaScript特点: 使用React的组件模型构建原生应用。…

无损音乐播放器推荐:Audirvana for Mac 中文激活版

udirvana 是一款高品质的音乐播放软件&#xff0c;专为Mac操作系统设计。它被设计来提供音频播放的最高标准&#xff0c;支持多种音频格式&#xff0c;包括高达32位/192kHz的高分辨率音频。Audirvana Plus 是其高级版本&#xff0c;提供了更多的功能和优化&#xff0c;例如音频…

stm32h743 NetXduo 实现http server CubeIDE+CubeMX

在这边要设置mpu的大小,要用到http server,mpu得设置的大一些 我是这么设置的,做一个参考 同样,在FLASH.ld里面也要对应修改,SECTIONS里增加.tcp_sec和 .nx_data两个区,我们用ram_d2区域去做网络,这个就是对应每个数据在d2区域的起点。 在CubeMX里,需要用到filex、dhc…

全栈智能家居系统设计方案:STM32+Linux+多协议(MQTT、Zigbee、Z-Wave)通信+云平台集成

1. 项目概述 随着物联网技术的快速发展,智能家居系统正在成为现代生活中不可或缺的一部分。本文介绍了一个基于STM32微控制器和Linux系统的智能家居解决方案,涵盖了硬件设计、软件架构、通信协议以及云平台集成等方面。 该系统具有以下特点: 采用STM32作为终端设备的控制核心…

【python学习】python标准库之正则表达式库re的定义、功能和函数,以及正则表达式的元字符和含义

引言 re 库是Python标准库的一部分&#xff0c;不需要额外安装。要使用 re 库&#xff0c;只需在代码中导入它 文章目录 引言一、re库的定义二、re 库中常用的功能和函数&#xff1a;2.1 搜索模式2.2 查找模式2.3 替换模式2.4 分割模式2.5 编译模式2.6 错误信息2.7 支持的模式2…

基础部分-变量

目录 1、一个程序就是一个世界&#xff0c;变量是程序的基本组成单位。 2、变量有三个基本要素&#xff1a;类型名称值 3、变量相当于内存中一个数据存储空间的表示 4、变量的使用步骤 &#xff08;先定义后使用&#xff09; 5、变量快速入门 6、格式化输出 7、程序中 号…

链接追踪系列-07.logstash安装json_lines插件

进入docker中的logstash 容器内&#xff1a; jelexbogon ~ % docker exec -it 7ee8960c99a31e607f346b2802419b8b819cc860863bc283cb7483bc03ba1420 /bin/sh $ pwd /usr/share/logstash $ ls bin CONTRIBUTORS Gemfile jdk logstash-core modules tools x-pack …

【Linux】进程控制的详细介绍

前言 在此之前&#xff0c;我们学过进程的概念&#xff0c;进程的状态&#xff0c;进程地址空间等一系列进程相关的问题。本章我们继续学习进程&#xff0c;我们要来学习一下进程的控制&#xff0c;关于进程等待&#xff0c;等问题。 目录 1.再次认识Fork函数1.1 fork()之后操…

什么是 Modbus协议?

一、网络中的协议是指什么&#xff1f; 网络协议是网络通信中至关重要的一部分&#xff0c;它定义了网络中两个或多个设备之间通信的规则、过程和格式。这些规则确保了计算机网络设备能够使用一种通用语言来传输和接收数据&#xff0c;而不管它们的设计、硬件或基础设施如何。…