当前位置: 首页 > news >正文

数据类型(使用与定义)

基本数据类型是CPU可以直接进行运算的类型,在算法直接被使用,主要包括:

整数类型:byte、short、int、long
浮点数类型:float、double,用于表示小数。
字符类型:char,用于表示各种语言的字母、标点符号甚至表情符号等。
布尔类型:bool,用于表示true(是)与false(否)判断。

基本数据类型以二进制的形式存储在计算机中

一个二进制位即为 1 比特。在绝大多数现代操作系统中,1 字节(byte)由 8 比特(bit)组成。

基本数据类型的取值范围取决于其占用的空间大小。下面以 Java 为例。

整数类型 byte 占用 1 字节 = 8 比特 ,可以表示 28 个数字。

整数类型 int 占用 4 字节 = 32 比特 ,可以表示 232 个数字。

基本数据类型的占用空间和取值范围
类型符号占用空间最小值最大值默认值
整数byte1 字节-128(-2^7)127(2^7-1)0
short2 字节-32768(-2^15)32767(2^15 - 1)0
int4 字节-2,147,483,648(-2^31)2,147,483,647(2^31 - 1)0
long8 字节-9,223,372,036,854,775,808(-2^63)9,223,372,036,854,775,807(2^63 -1)0L
浮点数float4 字节0f符合IEEE754标准的浮点数,1.4E-45 ~ 3.4028235E38 0.0f
double8 字节0d符合IEEE754标准的浮点数,4.9E-324 ~ 1.7976931348623157E3080.0
字符char2 字节'\u0000'\u0000 ~ \uffff(十进制等效值为 0~65535,本质也是数值)0
布尔bool1 字节falsetruefalse

 数据类型转换

自动类型转换(隐式转换)

​        自动类型转换是指 Java 在不丢失信息的情况下,自动将一种数据类型转换为另一种数据类型。这种转换通常发生在从小范围的数据类型转换到大范围的数据类型。例如,从`byte`转换到`int`,从`int`转换到`long`,从`float`转换到`double`等。

​        规则是按照数据类型的范围大小来进行转换,数据类型范围从小到大依次是`byte` < `short` < `int` < `long` < `float` < `double`。例如,当把一个`byte`类型的值赋给一个`int`类型的变量时,Java 会自动进行转换。

 byte b = 10;int i = b; // 自动将byte类型的b转换为int类型并赋值给iSystem.out.println(i); 
强制类型转换(显式转换)

强制类型转换是在可能丢失信息或者不符合自动转换规则的情况下,程序员明确要求 Java 进行的类型转换。这种转换通常用于将大范围的数据类型转换为小范围的数据类型,或者在不同类型但范围可能有重叠的数据类型之间转换(如intfloat)。

规则是需要在要转换的数据前面加上目标数据类型的括号。但是要注意,这种转换可能会导致数据丢失或精度降低。例如,将一个double类型的值转换为int类型时,小数部分会被截断。

double d = 3.14;int j = (int)d; // 强制将double类型的d转换为int类型并赋值给jSystem.out.println(j); 
在表达式中的类型转换

在包含多种不同数据类型的表达式中,Java 会根据一定的规则进行自动类型转换。一般来说,Java 会将所有的数据类型提升到表达式中最高的数据类型,然后进行计算。例如,在一个包含intdouble的表达式中,int会先被转换为double,然后进行计算。

int num1 = 5;double num2 = 2.5;double result = num1 + num2; // num1会自动转换为double类型,然后与num2相加System.out.println(result); 

 总结:

隐含强制类型转换

  1. 整数的默认类型是 int。

  1. 小数默认是 double 类型浮点型,可以不用在数字后面添加D或者d;在定义 float 类型时必须在数字后面跟上 F 或者 f。

http://www.lryc.cn/news/501733.html

相关文章:

  • VMware:CentOS 7.* 连不上网络
  • 日志分析详解
  • 【JavaWeb后端学习笔记】Maven项目管理
  • Docker--Docker Container(容器) 之 操作实例
  • Android前端签到web迁移到rust的axum的过程-签到的重构
  • 用户认证系统登录界面
  • Redis从入门到进阶(总结)
  • 【D3.js in Action 3 精译_044】5.1 饼图和环形图的创建(四):数据标签的添加
  • Linux的基本功能和命令
  • 【Spark】Spark的两种核心Shuffle工作原理详解
  • TCP 的文化内涵
  • ASP.NET |日常开发中读写XML详解
  • Less和SCSS,哪个更好用?
  • 第一个C++程序--(蓝桥杯备考版)
  • NanoLog起步笔记-7-log解压过程初探
  • 【MySQL 进阶之路】基础语法及优化技巧
  • 微信小程序做电子签名功能
  • PR的选择与移动
  • Linux系统 —— 进程系列 - 进程状态 :僵尸与孤儿
  • linux/centOS7用户和权限管理笔记
  • 使用C#基于ADO.NET编写MySQL的程序
  • Scala函数的泛型
  • 云轴科技ZStack亮相中国生成式AI大会上海站 展现AI Infra新势力
  • 态感知与势感知
  • 汽车零部件设计之——发动机曲轴预应力模态分析仿真APP
  • 谷歌浏览器的网页数据导出与导入方法
  • pytroch环境安装-pycharm
  • 【大模型】PostgreSQL是向量数据库吗
  • 【PyQt5教程 一】Qt Designer 安装及其使用方法说明,附程序源码
  • Qt 联合Halcon配置