关于Java中基本类型的长度相关基础知识
2024-10-18 18:20:33
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虚拟机规范
更多的参见
“java语言使用的是Unicode编码”是指的jvm?.java文件?
3. unicode与utf-8是怎样的区别
参见 Unicode 和 UTF-8 有何区别? 标题问法不是很严格
4. 对于1中的整数“浪费空间”的问题有什么办法
参见h2数据库的org.h2.mvstore.DataUtils.writeVarInt(ByteBuffer, int)方法,能做到按需占用。
最新文章
- ASP.NET Web API Model-ParameterBinding
- 无需activity获得屏幕尺寸
- JQuery解析json数据
- Codeforces Round #363 Div.2[111110]
- Android 绿豆蛙版连连看(简陋版)
- PC安装了MAC,那么CMD键和OPTION键什么的在哪里?
- 【转】详解Oracle的dual表
- DevExpress GridControl功能总结
- 遇上了artTemplate做的东西
- PAT乙级 1003. 我要通过!(20)
- Samza文档翻译 : Concepts
- init.d文件夹
- Flink Program Guide (4) -- 时间戳和Watermark生成(DataStream API编程指导 -- For Java)
- 基于RYU控制器(controller)上的simple-switch 的APP做的測试-SDN/OpenFlow
- java基础-四种方法引用
- IDEA引MAVEN项目jar包依赖导入问题解决
- openjudge(三)
- 找到多个与名为“Home”的控制器匹配的类型。解决方法
- Mysql与SQLserver区别
- Linux------使用Xfpt6连接阿里云ECS服务器