zoukankan      html  css  js  c++  java
  • 编码格式及内存占用

    字符编码

    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

  • 相关阅读:
    mysql5.7 安装及主从搭建
    虚拟机加硬盘做逻辑卷
    mysql 5.7 主从同步问题
    Tomcat 配置全球服务器证书
    新建linux 服务器初始化配置
    python 字典 元组 集合
    python 列表
    35.再谈SpringBoot自定义日志配置--LogBack.xml
    36.SpringBoot应用属性加载和自动配置@EnableAutoConfiguration
    37.再谈Spring Boot Actuator
  • 原文地址:https://www.cnblogs.com/lebudian/p/7018004.html
Copyright © 2011-2022 走看看