2019.9.15了解一下java里的各种基本类型的占用字节数

今天写educoder的时候发现用char sex = ‘男‘;

因为以前写c的时候记得char是占1个字节的,而中文又是占用两个字节的所以就觉得很奇怪了

查了下资料发现

1字节: byte , boolean
2字节: short , char
4字节: int , float
8字节: long , double

所以上面的写法是木得错的

然后再说一下Unicode和utf-8

原文链接https://blog.csdn.net/humadivinity/article/details/79403625

  1. 原作者: 邱昊宇

  2.  

  3.  

    简单来说:

  4.  

  5.  

    Unicode 是「字符集」

  6.  

    UTF-8 是「编码规则」

  7.  

  8.  

    其中:

  9.  

  10.  

    字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point)

  11.  

    编码规则:将「码位」转换为字节序列的规则(编码/解码 可以理解为 加密/解密 的过程)

  12.  

  13.  

  14.  

    广义的 Unicode 是一个标准,定义了一个字符集以及一系列的编码规则,即 Unicode 字符集和 UTF-8、UTF-16、UTF-32 等等编码……

  15.  

  16.  

    Unicode 字符集为每一个字符分配一个码位,例如「知」的码位是 30693,记作 U+77E5(30693 的十六进制为 0x77E5)。

  17.  

    UTF-8 顾名思义,是一套以 8 位为一个编码单位的可变长编码。会将一个码位编码为 1 到 4 个字节:

  18.  

  19.  

    U+ 0000 ~ U+ 007F: 0XXXXXXX

  20.  

    U+ 0080 ~ U+ 07FF: 110XXXXX 10XXXXXX

  21.  

    U+ 0800 ~ U+ FFFF: 1110XXXX 10XXXXXX 10XXXXXX

  22.  

    U+10000 ~ U+1FFFF: 11110XXX 10XXXXXX 10XXXXXX 10XXXXXX

  23.  

  24.  

    根据上表中的编码规则,之前的「知」字的码位 U+77E5 属于第三行的范围:

  25.  

  26.  

    7 7 E 5

  27.  

    0111 0111 1110 0101 二进制的 77E5

  28.  

    --------------------------

  29.  

    0111 011111 100101 二进制的 77E5

  30.  

    1110XXXX 10XXXXXX 10XXXXXX 模版(上表第三行)

  31.  

    11100111 10011111 10100101 代入模版

  32.  

    E 7 9 F A 5

  33.  

  34.  

    这就是将 U+77E5 按照 UTF-8 编码为字节序列 E79FA5 的过程。反之亦然。

原文地址:https://www.cnblogs.com/WildSky/p/11533543.html

时间: 2024-08-30 14:25:53

2019.9.15了解一下java里的各种基本类型的占用字节数的相关文章

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

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

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中各种数据类型占用字节数

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 IS

Java中字符编码和字符串所占字节数 .

首 先,java中的一个char是2个字节.java采用unicode,2个字节来表示一个字符,这点与C语言中不同,C语言中采用ASCII,在大多数 系统中,一个char通常占1个字节,但是在0~127整数之间的字符映射,unicode向下兼容ASCII.而Java采用unicode来表示字符,一个中文或英文字符的unicode编码都占2个字节,但如果采用其他编码方式,一个字符占用的字节数则各不相同. 在 GB 2312 编码或 GBK 编码中,一个英文字母字符存储需要1个字节,一个汉字字符存储

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

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

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

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

Java里数值类型转换

1 import static java.lang.System.out; 2 3 public class testOnNumber { 4 public static void main(String[] args){ 5 //int转换成short,把低位截断给short 6 int i = 0xa0001231; 7 out.println(Integer.toBinaryString(i)); 8 out.println(i); 9 short s = (short) i; 10 ou

Java里的生产者-消费者模型(Producer and Consumer Pattern in Java)

生产者-消费者模型是多线程问题里面的经典问题,也是面试的常见问题.有如下几个常见的实现方法: 1. wait()/notify() 2. lock & condition 3. BlockingQueue 下面来逐一分析. 1. wait()/notify() 第一种实现,利用根类Object的两个方法wait()/notify(),来停止或者唤醒线程的执行:这也是最原始的实现. 1 public class WaitNotifyBroker<T> implements Broker&

甲骨文面试题-JAVA里的布尔运算符

重要一点: (& ,|) ==>二进制布尔运算符,(&&,||)==>条件布尔运算符 二进制布尔运算符,两边都会执行,不管左边是否为真或假==>对于运算符两边的操作数不管真假与否,都会先计算出来结果后再进行布尔逻辑运算 但是条件布尔运算符不同,更先进,如果&&左边为假,那么右边不执行:||左边为真,右边也不执行: 具体细节: JAVA里的布尔运算符可以分为[二进制布尔运算符]和[条件布尔运算符]. 1.二进制布尔运算符 二进制布尔运算符:与(&am