先了解下基本的单位:

1、比特(bit)即一个二进制位,例如100011就是6比特。

2、字节(byte),这是计算机中数据类型最基本的单位了,8bit组成1byte。

java要确定每种基本类型所占存储空间的大小,它们的大小并不像其它大多数语言那么随机器硬件架构的变化而变化。这种所占存存储空间大小的不变性是java程序具有可移值性的原因之一。

java中的boolean长度是1个字节,实际上它只有1bit在起作用,其它的全部是0.

java的中基本类型数据的大小如下:

boolean 1-byte(实际上就是1bit在起作用)

char

2-bytes(英文字符占1字节(只用了一个字节,浪费一个字节??!!),中文占2字节)

java内存中char是两个字节,但是保存到文件中时另一回事,取决于文件的字符编码。

文件中的字符,采用的是GB2312编码,汉字占2个字节,ASCII字符占1个字节。

输出的是字符实际占的字节数,不是char类型在机器中占的字符数

byte 1-byte

short 2-bytes

int 4-bytes

long 8-bytes

float 4-bytes

double 8-bytes

汉字字符

2字节(看编码方式:utf-8码的中文都是3字节的,而

gbk/gbk18030 是2字节的。)

英文字符

1字节

中文标点

2字节

英文标点

1字节

下面我们用实例来说明一个汉字有几个字节:

1、参见String的length()方法:返回此字符串的长度。长度等于字符串中 Unicode

代码单元的数量。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

public class Test { static int returnCharNu(String s){ int x =

0; return x = s.length(); } public static void main(String args[]){

int y = returnCharNu("nihao"); System.out.println("nihao :"+y); y =

returnCharNu("你好"); System.out.println("你好 :"+y); } }//:~output

nihao :5 你好 :2

由上可知,一个英文字母、或一个汉字都是1个Unicode

代码单元,Unicode目前普遍采用的是UCS-2,它用两个字节来编码一个字符,一个字符在Unicode中就是一个代码单元。

以下部分来自CSDN博客:http://blog.csdn.net/JIGSONG/archive/2008/10/29/3176670.aspx

UCS-2用两个字节来编码字符,

2的16次方等于65536,所以UCS-2最多能编码65536个字符。编码从0到127的字符与ASCII编码的字符一样,比如字母"a"的Unicode

编码是0x0061,十进制是97,而"a"的ASCII编码是0x61,十进制也是97,对于汉字的编码,事实上Unicode对汉字支持不怎么好,简体和繁体总共有六七万个汉字,而UCS-2最多能表示65536个,才六万多个,所以Unicode只能排除一些几乎不用的汉字,好在常用的简体汉字也不过七千多个,为了能表示所有汉字,Unicode也有UCS-4规范,就是用4个字节来编码字符,不过现在普遍采用的还是UCS-2,只用两个字节来编码。

汉字Unicode编码的区间为:0x4E00--0x9FA5。

汉字字符 2字节

英文字符 1字节

中文标点 2字节

英文标点 1字节

中国字比较复杂,1字节=8位,8位从0000 0000到1111

1111只能表示256个字符,2个字节是2*8=16位,从0000 0000 0000 0000到1111 1111 1111

1111可以表示65535个字符。

6万多个足以表示我们经常用的那些字了。所以我们用2字节表示汉字。如果用3个字节有很多不常用的字又占了很多不必要的存储空间,所以我们用2个字节而不是1个或者3个表示汉字的国际码。

java 数字 字母 中文_java中英文字母、数字、中文所占字节数相关推荐

  1. c语言中大写英文字母所占字节,Java中字符编码和字符串所占字节数 .

    首 先,java中的一个char是2个字节.java采用unicode,2个字节来表示一个字符,这点与C语言中不同,C语言中采用ASCII,在大多数 系统中,一个char通常占1个字节,但是在0~12 ...

  2. java中8种数据类型和默认值所占字节数

    java 8种基本数据类型的默认值及所占字节数 通过一段代码来测试一下 8种基本数据类型的默认值 1 package dierge; 2 3 public class Ceshi { 4 int a; ...

  3. 英文字母和中文汉字在不同字符集编码下的字节数

    英文字母和中文汉字在不同字符集编码下的字节数 英文字母: 字节数 : 1;编码:GB2312 字节数 : 1;编码:GBK 字节数 : 1;编码:GB18030 字节数 : 1;编码:ISO-8859 ...

  4. 英文字母和中文汉字在不同字符集编码下的字节数(详细解释)

    英文字母和中文汉字在不同字符集编码下的字节数 英文字母: 字节数 : 1;编码:GB2312 字节数 : 1;编码:GBK 字节数 : 1;编码:GB18030 字节数 : 1;编码:ISO-8859 ...

  5. Java中的UTF-8、UTF-16编码字符所占字节数

    前言:上一篇文章写了关于Unicode,以及utf-8.utf-16相关知识.所以本篇博文来验证在java环境下,字符在不同编码下所占的字计数. 测试代码如下: package string;publ ...

  6. java和C中基本数据类型的所占字节数对比

    java 语言所占字节数 数据类型 32位计算机 64位计算机 byte 1 1 char 2 2 int  4 4 long 8 8 float 4 4 double 8 8 引用 4 8 c  语 ...

  7. java 基本数据类型所占字节数及其范围

    java学习笔记:java 基本数据类型所占字节数及其范围 所占字节数 类型范围 浮点数可表示的范围非常大,float类型可最大表示3.4 x 10^38 ,而double类型可最大表示1.79 x ...

  8. java 过滤中文_Java 过滤字母、数字和中文 正则表达式

    [java]代码库/** * @Title:FilterStr.java * @Package:com.you.dao * @Description:Java中过滤数字.字母和中文 * @Author ...

  9. java输入数字返回字符串_java Scanner输入数字、字符串

    package java05; import java.util.Scanner;//1.导包 /* Scanner类的功能,可以实现键盘输入数据,到程序当中 引用类型的一班使用步骤: 1.导包 2. ...

最新文章

  1. [SDOI2015]权值
  2. 软件测试培训分享:如何划分bug的严重级别
  3. js:进一步关闭(范围:下一个)
  4. 解决springboot不扫描@repository的问题
  5. Mysql学习(三)之数据库管理工具Navicat
  6. php人才招聘系统描述,基于ThinkPHP框架的人才招聘网站系统PHP源码
  7. g30u盘启动 中科曙光1620_I620-G30
  8. djnago 模型 新建对象id为空
  9. Ubuntu系统初识-常用命令和软件安装
  10. 树的基本定义表示方法
  11. python网络爬虫学习笔记(九):Beautiful Soup的使用
  12. c# 用BitArray来管理包含关系
  13. Java基础知识笔记整理(零基础学Java)
  14. 运用软件配置管理加强风险管理
  15. 无名小站超雅虎奇摩成台湾第一大网站
  16. 黄金分割点公式java_java如何实现黄金分割数 java实现黄金分割数代码
  17. stm32点亮流水灯(小白的求学之路)
  18. 34套Java项目教程+源码包含Java swing项目 Java web项目 Java控制台项目(视频教程+源码)
  19. 2021年阿里巴巴Java岗位面试(已拿offer)
  20. android各个版本的新特性

热门文章

  1. 精读Relational Embedding for Few-Shot Classification
  2. 2015061101 - 寻找女儿国
  3. 4.2 TCP Segmentation Offload(TSO)
  4. 在 ROS 系统下使用海康 SDK 并编译官方 demo
  5. mysql 目录迁移 表找不到_MySQL 数据文件迁移找不到表
  6. 使用jieba库识别人名地名
  7. 【精】LintCode领扣算法问题答案:1896. 捡胡萝卜
  8. egret微信小游戏相关
  9. Pearson相关系数矩阵解释
  10. WPF MVVMLight Treeview中的SelectedItem