JAVA过关题•Java中一个字符占多少个字节

Java中一个字符占多少个字节,扩展再问int, long, double占多少字节

首先java中基本数据类型,boolean,byte,char,int,long,float ,double所占字节数如下

类型

字节

boolean 1
byte 1
char 2
int 4
float 4
long 8
double 8
•当对象是object类型时,情形又有所不同,最普通的object类型如下所示:
public class SimpleClass{
int a;
}1
2
3

需要强调的一点是 object 类型需要额外的16个字节的overhead空间来存放类引用以及垃圾收集的相关信息,此外还涉及到8字节对齐的问题。

•当对象是一个链表(嵌套类)时,除了16字节外,还需要额外的8字节空间(extra overhead) 来表示内部类实例的引用。

•当对象是数组时,数组除了需要16字节的overhead空间外,还需要一个表示数组长度N的一个4字节(int value)的一个空间,然后再加上数组里放的是基本数据类型还是引用。区别计算。

•当对象是String时,String的结构如下
public class String{、
private char[] value;
private int count;
private int offset;
private hashcode;
}1
2
3
4
5
6

String需要16字节的overhead,然后是对value的引用,然后是3个int所占空间 ,最后考虑8字节对齐。char[] value的放在了别处,适用于数组的情况进行分析。当substring时,substring的结果共用了value,的部分内容,所以,substring创建的字符串只占40字节(16+8+12+4(字节对齐)),并且创建一个子串的时间也是固定的不随着字符串长度而变化。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,263评论 1 44
  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 3,151评论 0 7
  • 每每在夜深人静的时候才会有感悟, 也像曾子一样吾日三省吾身。 但是却做不到曾子的自律和潜心, 而是在这一个个夜里漂...
    清鈊阅读 426评论 1 2
  • 他一开口我就要记笔记…… 文/楠子整理 鸡汤是时代刚需。李笑来在一次采访中曾说,自己在明确了要当新东方老师的目标后...
    奔跑的楠子阅读 1,981评论 0 15