概述
哎~长时间 居然把一些基础的都弄混了,忘了,也侧面反映了自己大学生活是多么的丰富。系统复习下把
1、计算机的存储单位:
1Byte=8bit:一位等于8个字节
计算机存储单位的进率是1024
2、JAVA基本类型所占的长度:
基本类型 | 大小(位) | 大小(字节) | 最小值 | 最大值 |
byte | 8b | 1B | -2^7 | 2^7-1 |
short | 16b | 2B | -2^15 | 2^15-1 |
int | 32b | 4B | -2^31 | 2^31-1 |
long | 64b | 8B | -2^63 | 2^63-1 |
float | 32b | 4B | IEEE 754 | IEEE 754 |
double | 64b | 8B | IEEE 754 | IEEE 754 |
char | 16b | 2B | Unicode 0 | Unicode 2^16-1 |
boolean | 1bit | 0.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数据类型占用的空间大小所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复