java中各种数据类型占用字节数

1字节(Byte)=8bit

java的基本类型

类型 所占字节
byte 1
short 2
int 4
long 8
float 4
double 8
char 2

 

 

 

 

 

 

String中字母和汉字所占字符是不一样的,并且与编码有关

英文字母:A

字节数 编码
1 GB2312
1 GBK
1 GB18030
1 ISO-8859-1
1 UTF-8
4 UTF-16
2 UTF-16BE
2 UTF-16-LE

 

 

 

 

 

 

 

中文汉字:我

字节数 编码
1 GB2312
2 GBK
2 GB18030
1 ISO-8859-1
3 UTF-8
4 UTF-16
2 UTF-16BE
2 UTF-16-LE

 

 

 

 

 

 

 

附录:计算String字节数的代码

package com.dingrui.stringbytelength;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

import org.dozer.loader.api.FieldDefinition;

public class StringByteLength {

	/*
	 * GB2312 GBK GB18030 ISO-8859-1 UTF-8 UTF-16 UTF-16BE UTF-16LE
	 */
	public static void main(String[] args) throws IOException {

		String s1 = "a";
		String s2 = "龘";

		System.out.println(s1 + "  GB2312  " + s1.getBytes("GB2312").length);
		System.out.println(s1 + "  GBK  " + s1.getBytes("GBK").length);
		System.out.println(s1 + "  GB18030  " + s1.getBytes("GB18030").length);
		System.out.println(s1 + "  ISO-8859-1  " + s1.getBytes("ISO-8859-1").length);
		System.out.println(s1 + "  UTF-8  " + s1.getBytes("UTF-8").length);
		System.out.println(s1 + "  UTF-16  " + s1.getBytes("UTF-16").length);
		System.out.println(s1 + "  UTF-16BE  " + s1.getBytes("UTF-16BE").length);
		System.out.println(s1 + "  UTF-16LE  " + s1.getBytes("UTF-16LE").length);
		System.out.println("---------------");
		System.out.println(s2 + "  GB2312  " + s2.getBytes("GB2312").length);
		System.out.println(s2 + "  GBK  " + s2.getBytes("GBK").length);
		System.out.println(s2 + "  GB18030  " + s2.getBytes("GB18030").length);
		System.out.println(s2 + "  ISO-8859-1  " + s2.getBytes("ISO-8859-1").length);
		System.out.println(s2 + "  UTF-8  " + s2.getBytes("UTF-8").length);
		System.out.println(s2 + "  UTF-16  " + s2.getBytes("UTF-16").length);
		System.out.println(s2 + "  UTF-16BE  " + s2.getBytes("UTF-16BE").length);
		System.out.println(s2 + "  UTF-16LE  " + s2.getBytes("UTF-16LE").length);

	}

	/**
	 * 将转码后的文字写入文件,通过编辑器打开测试,确认写入的是相应编码
	 * 
	 * @param bytes
	 * @throws IOException
	 */
	public void writeFile(byte[] bytes) throws IOException {
		String path = StringByteLength.class.getResource("/").getPath();
		System.out.println(path);
		String file_path = path + "charsetFile";

		File file = new File(file_path);
		if (!file.exists()) {
			file.createNewFile();
		}

		FileOutputStream out = new FileOutputStream(file);
		out.write(bytes);
		out.close();
	}
}

  

 

posted @ 2015-04-13 22:18  马路牙子  阅读(864)  评论(0编辑  收藏  举报