Java 数据类型与内存的认识(字节/默认值/取值范围等)

2024-05-31 15:38

本文主要是介绍Java 数据类型与内存的认识(字节/默认值/取值范围等),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 1. 一个字符占用内存的大小
  • 2. 变量默认值
  • 3. 八大基本数据类型取值范围,字节数

1. 一个字符占用内存的大小

至顶部
在这里插入图片描述

在这里插入图片描述
如果用下面代码去计算一个字符占用内存的大小,则会得出如下表格中的内容。

"啊".getBytes("UTF-8").length
字符编码aaaaaaaaaa啊啊啊啊啊啊啊啊啊一个英文一个中文
UTF-8123436912一字节3字节
UTF-164681046810n个字符:2n字节+2字节BOM头
UTF-16BE24682468一个字符2字节
UTF-16LE24682468一个字符2字节
UTF-32481216481216n个字符:2n字节+2n字节BOM头
UTF-32BE481216481216n个字符:2n字节+2n字节BOM头
UTF-32LE481216481216n个字符:2n字节+2n字节BOM头
UNICODE4681046810n个字符:2n字节+2字节BOM头
GBK123424681字节2字节
GB2312123424681字节2字节
GB18030123424681字节2字节
ISO8859-1123412341字节1字节
BIG5123424681字节2字节
ASCII123412341字节1字节

单算字符占字节数,不算BOM头,总结如下:

UTF-8不同字符会占1-4字节,一般来讲一个汉字占3字节,一个英文占1字节
UTF-16UTF-16BEUTF-16LEUTF-32UTF-32BEUTF-32LEUNICODE一个字符2字节
GBKGB2312GB18030BIG5一个英文1字节,一个汉字2字节
ASCIIISO8859-1一个字符1字节

2. 变量默认值

至顶部
参考:为什么局部变量需要显式设置初始化值
类的全局变量,没有赋初始值时,有默认值:

int:0
long:0
boolean:false
float:0.0
double:0.0
char: \u0000(即NULL)
String:null
Object:null
int[]:null
方法的局部变量,没有默认值,必须初始化。
静态方法使用全局变量时,没有默认值,必须初始化。

3. 八大基本数据类型取值范围,字节数

至顶部
1个字节是28,数字默认类型是int
参考:Java 基本数据类型

类型范围范围个数字节默认值
byte-27 ~ 27-1-128 ~ 1272568位/1字节0
short-215 ~ 215-1-32768 ~ 327676553616位/2字节0
int-231 ~ 231-1-2,147,483,648
~ 2,147,483,647
4,294,967,29632位/4字节0
long-263 ~ 263-1-9,223,372,036,854,775,808
~ 9,223,372,036,854,775,807
1019左右,接近0.2垓64位/8字节0L
float单精度不能表示精确值符合IEEE 754标准的浮点数32位/4字节0.0f
double双精度不能表示精确值符合IEEE 754标准的浮点数64位/8字节0.0d
booleantrue或者false1位false
char\u0000 ~ \uffff单一的 16 位 Unicode 字符655362字节\u0000(NULL)

这篇关于Java 数据类型与内存的认识(字节/默认值/取值范围等)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1018340

相关文章

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

Java easyExcel实现导入多sheet的Excel

《JavaeasyExcel实现导入多sheet的Excel》这篇文章主要为大家详细介绍了如何使用JavaeasyExcel实现导入多sheet的Excel,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录1.官网2.Excel样式3.代码1.官网easyExcel官网2.Excel样式3.代码

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试