编码格式及内存占用

字符编码

1.ANSII(127个字符,包括英文字符、阿拉伯数字、西文字符以及32个控制字符。)

0 7位

2.UCS(收录世界上所有字符,4B) 

3.Unicode(UCS的约减集,收录世界上常用的字符,定长2B)

4.utf-8(变长,英文字母1B,中文汉字3B),utf-16,utf-32,utf-16be(都是2B)是2、3的是实现形式。

5.国内关于汉字编码

Gb2312(6千多)-gbk(1万多)-gb18030(4万多),中文2B,英文1B。

ANSI标准编码,采取平台编码格式,中文机器上即gbk。

Eclipse项目右击属性,可以看到项目的默认编码格式,中文机器默认GBK。

什么样的编码项目就认识什么样编码的文件,对于粘贴过去的文字会自动转换。

项目编码格式限制的是哪些方面呢?写出来及粘贴过去的文字保存下来是项目编码格式。项目可以允许有不同编码格式的其他文件存在。因为最后都会变成Unicode形式。??比如:项目是gbk,Java文件都是jbk的,但是会有utf-8的TXT文档存在,这是因为编码的兼容性还是??与上一句话冲突。??

关于JAVA默认unicode编码:(主要指class文件是Unicode,其他(JAVA文件、数据资源等)使用什么编码格式都可以)

编码问题存在两个方面:JVM之内和JVM之外。

1、Java文件编译后形成class

这里Java文件的编码可能有多种多样,但Java编译器会自动将这些编码按照Java文件的编码格式正确读取后产生class文件,这里的class文件编码是Unicode编码(具体说是UTF-16be编码)。

因此,在Java代码中定义一个字符串:

String s="汉字";

不管在编译前java文件使用何种编码,在编译后成class后,他们都是一样的----Unicode编码表示。JVM里面的任何字符串资源都是Unicode,就是说,任何String类型的数据都是Unicode编码。

2、JVM中的编码

JVM加载class文件读取时候使用Unicode编码方式正确读取class文件,那么原来定义的String s="汉字";在内存中的表现形式是Unicode编码。

便于理解可见  http://lavasoft.blog.51cto.com/62575/273608/

基本数据类型占用空间

boolean  1B

char     2B

float     4B

double   8B

long     8B

int      4B

short    2B

byte     1B

引用以及对象占用空间:

http://blog.csdn.net/u013841764/article/details/51307547

ASCII码表:http://tool.oschina.net/commons?type=4

原文地址:https://www.cnblogs.com/lebudian/p/7018004.html