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

  

时间: 2024-11-09 19:51:26

java中各种数据类型占用字节数的相关文章

java中基本类型占用字节数 (面试总问)

在移动开发中由于移动设备内存的局限性,往往需要考虑使用的数据类型所占用的字节数.下面简单介绍下Java中几种基本数据类型,以加深记忆. 在Java中一共有8种基本数据类型,其中有4种整型,2种浮点类型,1种用于表示Unicode编码的字符单元的字符类型和1种用于表示真值的boolean类型.(一个字节等于8个bit) 1.整型 类型              存储需求     bit数    取值范围      备注 int                 4字节           4*8 s

java中基本类型占用字节数

在Java中一共有8种基本数据类型,其中有4种整型,2种浮点类型,1种用于表示Unicode编码的字符单元的字符类型和1种用于表示真值的boolean类型.(一个字节等于8个bit) 1.整型类型              存储需求     bit数    取值范围      备注int                 4字节           4*8 short             2字节           2*8    -32768-32767long              8字

Java字符串中常用字符占用字节数

java中一个char型的数据(也就是一个字符)占两个字节.而Java中常用的字符包括数字.英文字母.英文符号.中文汉字.中文符号等,若在字符串中包含里面的多种字符,它们是否都占两个字符呢?答案是否定的. public class CharBytes { public static void main(String[] args) { String s1 = "1234567";// 7个数字字符 byte[] b1 = s1.getBytes(); System.out.printl

常用数据类型对应字节数

一.32位编译器: char :1个字节      char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节.同理64位编译器)      short int : 2个字节      int:  4个字节      unsigned int : 4个字节      float:  4个字节      double:   8个字节      long:   4个字节      long long:  8个字节      unsigned long:  4个

Java中boolean类型占用多少个字节

为什么要问这个问题,首先在Java中定义的八种基本数据类型中,除了其它七种类型都有明确的内存占用字节数外,就boolean类型没有给出具体的占用字节数,因为对虚拟机来说根本就不存在 boolean 这个类型,boolean类型在编译后会使用其他数据类型来表示,那boolean类型究竟占用多少个字节?带着疑问,随便网上一搜,答案五花八门,基本有以下几种: 1个bit 理由是boolean类型的值只有true和false两种逻辑值,在编译后会使用1和0来表示,这两个数在内存中只需要1位(bit)即可

Java基本类型占用字节数(或 bit数)

背景:面试时候问到int类型占用几个字节,以及表示的大小,居然一脸懵逼,任何细节都不能放过. Java基本类型占用字节数(或 bit数) java是跨平台的语言,所以不论在什么系统中这些东西在内存中所占空间都是相同的 原文地址:https://www.cnblogs.com/lixuwu/p/10612553.html

Java中的char占用几个字节

概述 网上或书上都说是Java中的char占用2个字节,一直没有深入,直到接触了编码,才对此产生了疑问,今天来深入一下这个问题. 答疑 char在设计之初的时候被用来存储字符,可是世界上那么多字符,如果有1个字节,就意味着只能存储256中,显然不合适,而如果有两个字节呢,那么就可以存储2^16(65536)种,这个数量符合大多数国家的语言字符个数于是Java团队使用unicode作为编码,一个char作为2个字节来存储. 但是unicode只是一个标准,具体的实现还是有如:UTF-8或UTF-1

32位机和64位机的区别及基本数据类型占字节数

一)64位系统和32位有什么区别? 1.64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存 2.64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍.但这是建立在64bit操作系统,64bit软件的基础上的. 什么是64位处理器? 之所以叫做“64位处理器”,是因为电脑内部都是实行2进制运算,处理器(CPU)一次处理数据的能力也是2的倍数.8位处理器.16位处理器.32位处理器和64位处理器,其计数都是2的倍数.一次处理的数据越大,该电

JAVA中的数据类型——西科软件实训中心

Java数据类型简介: Java是一种强类型的语言,数值类型主要分为基本数据类型和引用数据类型,其中基本的数据类型分为8种,具体细节点及一些注意点如下. java中的基本数据类型: 字符类型: 关键字:char  所占字节:2字节细节点:1.java中的字符类型采用Unicode编码,加之2字节,因此java中的数据类型可以直接存储一个汉字,例如:char sex = "男";注意点:1.声明字符类型时用的是单引号'',而不是双引号"". 布尔类型: 关键字:boo