zoukankan      html  css  js  c++  java
  • 关于Java中基本类型的长度相关基础知识

    1.  用HeapByteBuffer放int占几个byte?

    占4个。而且不论你是放1还是-1还是0xffff。

    因为int的长度是4个byte,HeapByteBuffer的存储又是byte数组。

    2. 用HeapByteBuffer放char占几个byte?

    同1,是两个,因为java中char的长度是2byte。

    同样,不论是存英文字符还是存中文字符,都占用2个byte。

    示例代码

    ByteBuffer buff = ByteBuffer.allocate(1024*1024);
     buff.putChar('c');
    System.out.println(buff.position());
     buff.putChar('中');
    System.out.println(buff.position());
    buff.flip();
    char ch1 = buff.getChar();
    char ch2 = buff.getChar();
    System.out.println("ch1:" + ch1 + ",ch2:" + ch2);

    上例中的’中’字在jvm中运转时是怎样编码的?

    参见 Java虚拟机规范

    2016-08-14 20-29-18_Java虚拟机规范(Java SE 7).pdf - 福昕阅读器

    更多的参见

    “java语言使用的是Unicode编码”是指的jvm?.java文件?

     

    3. unicode与utf-8是怎样的区别

    参见 Unicode 和 UTF-8 有何区别?  标题问法不是很严格

     

    Unicode 和 UTF-8 有何区别? - 知乎 - https___www.zhihu.com_question_23374078

    4. 对于1中的整数“浪费空间”的问题有什么办法

    参见h2数据库的org.h2.mvstore.DataUtils.writeVarInt(ByteBuffer, int)方法,能做到按需占用。

  • 相关阅读:
    Python Day13:开放封闭原则、函数装饰器、全局局部变量
    Python Day12
    Python Day11
    Python Day10
    drf框架
    drf框架
    drf框架
    drf框架
    vue框架
    vue框架
  • 原文地址:https://www.cnblogs.com/simoncook/p/5770973.html
Copyright © 2011-2022 走看看