我是靠谱客的博主 粗犷羽毛,最近开发中收集的这篇文章主要介绍JAVA数据类型占用的空间大小,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

哎~长时间 居然把一些基础的都弄混了,忘了,也侧面反映了自己大学生活是多么的丰富。系统复习下把

1、计算机的存储单位:

1Byte=8bit:一位等于8个字节

计算机存储单位的进率是1024

2、JAVA基本类型所占的长度: 

基本类型大小(位)大小(字节)最小值最大值
byte8b1B-2^72^7-1
short16b2B-2^152^15-1
int32b4B-2^312^31-1
long64b8B-2^632^63-1
float32b4BIEEE 754IEEE 754
double64b8BIEEE 754IEEE 754
char16b2BUnicode 0Unicode 2^16-1
boolean1bit0.125B--

 

 

 

 

 

 

 

 

 

 

 

3、一个英语字母是占几个字节呢?

ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个ASCII码就是一个字节。

UTF-8编码:一个英文字符等于一个字节英文标点符号占一个字节。

Unicode编码:一个英文等于两个字节英文标点符号占两个字节

GBK编码:一个英文等于一个字节英文标点符号占一个字节

4、一个汉字占几个字节?

ASCII码:一个中文汉字占两个字节的空间。

UTF-8编码:一个中文(含繁体)等于三个字节。中文标点占三个字节。

Unicode编码:一个中文(含繁体)等于两个字节。中文标点占两个字节。

GBK编码:一个中文等于两个字节。中文标点占两个字节。

5、JAVA引用类型所占空间的大小

一个String字符串或者一个对象,所占用的空间大小怎么估算呢?

引用类型是没有明确约束其占用的空间大小的。比如一个字符串。你可以定义无限长,直到把内存撑爆。

引用类型是根据你存储的内容的长度确定的。比如一个字符串String str = "hello!你好!",大小是多少呢?其实我们知道,无论是汉字、英语字母、符号。采用不同的编码格式,可能占用的空间大小也不一样。同时JAVA默认的编码格式和操作系统也有关系,在中文操作系统中。JAVA默认的是GBK编码,一个英文占一个字节,中文(符号)占两个字节。 那么str占用的堆空间大小=13字节。可以调用str.getBytes().length来查看占用几个字节,getBytes方法里面可以指定编码格式。

6、变量名是否占用空间呢?

变量名在运行期间是不占内存的。

在编译期间是占内存的。

7、个人思考:

7.1、怎么理解这个位和字节呢?

其实大家都知道。计算机只能认识0和1,为什么?其实是因为计算机的存储电路板的灯,只有两种选择,亮与不亮。

位单位其实抽象起来就是这个灯,一位就代表一个灯。其实这些灯并不是一个一个分散的,而是是8个一小组,字节单位就是这一组灯。

7.2、为什么各个java基本类型有不同大小呢?

这个和定义的存储的值的范围有关系,拿int举例子。int最小值是:-2^31 最大值: 2^31-1 那么为什么int是4字节?4字节=32位,还拿那个灯举例子,灯亮与不亮就有2^32组合,每一种组合呢,转化成10进制,就是代表一个数值。那么最大值和最小值为什么是31次方而不是32次呢?因为第一位是代表的符号位。 0:正 1:负。

7.3、为什么一个汉字ASCII编码是两个字节,而UTF-8是三个字节呢?

2字节=16位  3字节=24位 还拿那个灯举例子。那么灯的组合方式就有2^16次方和2^24次方。每一种组合方式在编码表里就对应着一个汉字。

其实正常常用的汉字字数2^16足够使用了。UTF-8编码有2^24,意味着,该编码表里对应汉字更丰富。

以此类推。其实也挺好理解的对吧,纯属个人理解~~~~

最后

以上就是粗犷羽毛为你收集整理的JAVA数据类型占用的空间大小的全部内容,希望文章能够帮你解决JAVA数据类型占用的空间大小所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部