java Int 转 String 后占用内存会变大吗?
一、什么是byte
byte,即字节。
- byte作为java的基本类型之一。
- java中它的范围在-128~127,默认值为0。
- byte 数据类型是8位,1个字节=8bit,bit是传递信息的最小单位。
- byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一
二、内存分析
1. 字符分析
String 在ASCII编码中英文字符1个字节 中文2个字节 (String的中文字节数要看用的编码集合,如果是utf-8类型的,一般中文占3个字节,如果是GBK或GB2312编码的,那么中文占2个字节)
2. java中占用内存分析
感谢掘金 @文亮同学 的指正。
int 是基本类型,而String不是,查看String的结构,发现还有以下属性。
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
private final int count;
private int hash; // Default to 0
/** use serialVersionUID from JDK 1.0.2 for interoperability */
private static final long serialVersionUID = -6849794470754667710L;
....
}
所以如果从java中的内存中来看,Stirng 肯定要比int的内存要大。
三、结论
分两种情况
- 如果是转字节流(byte),比如TCP传输数据
由于int占四个字节,int 转string后就变成字符,英文字符或数字占一个字节,所以,当小于4位数字的int时,String反而占用的内存少,大于4位数的int时,String占用的内存就比int大。
- 如果是在java中的内存
String > int