码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-04-14 00:15:52      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:

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();
	}
}

  

 

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

标签:

原文地址:http://www.cnblogs.com/ruiding/p/4423485.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!