字符占用空间

不同字符占用空间与编码有关

中文在不同编码是不定长的 2-4个字节,英文一般是1个,只有Unicode编码下是2个字节

 

ASCII码:英文字母   1个字节的空间

UTF-8编码:英文字符   1个字节(含标点),中文字符   3个字节(含标点)

UTF-16编码,通常汉字占2个字节

Unicode编码:英文中文都是2个字节

GBK编码,一个汉字占2个字节。

 

 

字符 不等于 字节。

字符(char)是 Java 中的一种基本数据类型,由 2 个字节组成,

java一个 int 占 4 个字节,一个 double 占 8 个字节 等等。

 

8bit(位)=1Byte(字节) 1024Byte(字节)=1KB 1024KB=1MB 1024MB=1GB 1024GB=1TB

在Java中,计算一个字符串占用的空间可以通过以下几种方法实现: 1. **使用`getBytes()`方法**: `getBytes()`方法可以将字符串转换为字节数组,然后通过数组的长度来计算字符串占用的空间。 ```java public class StringMemoryUsage { public static void main(String[] args) { String str = "Hello, World!"; byte[] bytes = str.getBytes(); System.out.println("String占用空间: " + bytes.length + " 字节"); } } ``` 2. **使用`String.getBytes(Charset charset)`方法**: 这种方法可以指定字符集,从而更准确地计算字符串占用的空间。 ```java public class StringMemoryUsage { public static void main(String[] args) { String str = "Hello, World!"; try { byte[] bytes = str.getBytes("UTF-8"); System.out.println("String占用空间: " + bytes.length + " 字节"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } ``` 3. **使用`Runtime`类**: 通过`Runtime`类可以获取JVM的内存使用情况,但这种方法只能间接地反映字符串占用的空间。 ```java public class StringMemoryUsage { public static void main(String[] args) { String str = "Hello, World!"; long before = getMemoryUsage(); String newStr = str; long after = getMemoryUsage(); System.out.println("String占用空间: " + (after - before) + " 字节"); } public static long getMemoryUsage() { Runtime runtime = Runtime.getRuntime(); return runtime.totalMemory() - runtime.freeMemory(); } } ``` 以上方法各有优缺点,具体选择哪种方法取决于实际需求和具体情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值