精华内容
下载资源
问答
  • 2020-09-24 16:30:18

    网上一大堆说的不清不楚,总而言之问你的是一个字符常量占几个字节

    回答:
         字符型常量是由一对单引号括起来的单个字符。它分为一般字符常量和转义字符。一个字符常量在计算机的存储中占据一个字节

    (1)一般字符常量:是用单引号括起来的一个普通字符,其值为该字符的ASCII码值。如’a’的值为97

    (2)转义字符:…

    更多相关内容
  • java中字符占几个字节

    千次阅读 2021-02-12 15:32:13
    首先,char为Java的基本类型,基本类型所的字节数是固定的,如int4字节,double8字节,这可以使得Java在不同的平台上所...在String中,一个英文字符占1个字节,而中文字符根据编码的不同所字节数也不同。...

    dc1e68869f05e0d5f97e1254b34ca3b0.png

    首先,char为Java的基本类型,基本类型所占的字节数是固定的,如int占4字节,double占8字节,这可以使得Java在不同的平台上所占类型固定,很好地保证了Java的可移植性。因此,Java中char类型固定占2个字节。(注:char类型也可以存储一个汉字)。

    其次,String采用一种更灵活的方式进行存储。在String中,一个英文字符占1个字节,而中文字符根据编码的不同所占字节数也不同。在UTF-8编码下,一个中文字符占3个字节;而使用GBK编码时一个中文字符占2个字节。

    测试代码如下:import java.io.UnsupportedEncodingException;

    public class StrTest {

    public static void main(String[] args) throws UnsupportedEncodingException {

    String str1 = "hello";

    String str2 = "你好abc";

    System.out.println("utf-8编码下'hello'所占的字节数:" + str1.getBytes("utf-8").length);

    System.out.println("gbk编码下'hello'所占的字节数:" + str1.getBytes("gbk").length);

    System.out.println("utf-8编码下'你好abc'所占的字节数:" + str2.getBytes("utf-8").length);

    System.out.println("gbk编码下你好'你好abc'所占的字节数:" + str2.getBytes("gbk").length);

    }

    }

    输出结果:utf-8编码下’hello’所占的字节数: 5

    gbk编码下’hello’所占的字节数: 5

    utf-8编码下’你好abc’所占的字节数: 9

    gbk编码下你好’你好abc’所占的字节数: 7

    由此可见,对也String来说,一个英文字符固定占1个字节,而中文字符占2个(GBK编码)或3个(UTF-8编码)字节。也可使用此方法查看其它编码的情况,此处不再一一赘述。

    最后,基于String的这种特性,可以判断一个字符串中是否包含中文,举例如下:public class StrTest {

    public static void main(String[] args) throws UnsupportedEncodingException {

    searchChineseCharacter("Good morning");

    searchChineseCharacter("hello 早上好");

    }

    //找出一个字符串中的汉字

    public static void searchChineseCharacter(String str){

    //正则表达式,用于匹配中文字符

    String regex = "[u4e00-u9fa5]";

    //如果str的长度和其所占字节数不等,说明包含中文

    if (str.length() != str.getBytes().length){

    Pattern pattern = Pattern.compile(regex);

    Matcher matcher = pattern.matcher(str);

    System.out.print("'" + str + "' 中的汉字为:");

    while (matcher.find()){

    System.out.print(matcher.group());

    }

    }

    else {

    System.out.println("'" + str + "' 中无汉字");

    }

    }

    }

    输出结果:‘Good morning’ 中无汉字

    ‘hello 早上好’ 中的汉字为:早上好

    推荐教程:java入门教程

    展开全文
  • Java 语言中一个字符占几个字节

    千次阅读 2021-02-12 18:36:28
    Java中理论说是一个字符(汉字 字母)占用个字节。但是在UTF-8的时候 new String("字").getBytes().length 返回的是3 表示3个字节作者:RednaxelaFX链接:https://www.zhihu.com/question/27562173/answer/37188642...

    Java中理论说是一个字符(汉字 字母)占用两个字节。

    但是在UTF-8的时候 new String("字").getBytes().length 返回的是3 表示3个字节

    作者:RednaxelaFX

    链接:https://www.zhihu.com/question/27562173/answer/37188642

    来源:知乎

    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    题主要区分清楚内码(internal encoding)和外码(external encoding)就好了。内码是程序内部使用的字符编码,特别是某种语言实现其char或String类型在内存里用的内部编码;外码是程序与外部交互时外部使用的字符编码。“外部”相对“内部”而言;不是char或String在内存里用的内部编码的地方都可以认为是“外部”。例如,外部可以是序列化之后的char或String,或者外部的文件、命令行参数之类的。Java语言规范规定,Java的char类型是UTF-16的code unit,也就是一定是16位(2字节);char, whose values are 16-bit unsigned integers representing UTF-16 code units (§3.1).然后字符串是UTF-16 code unit的序列:The Java programming language represents text in sequences of 16-bit code units, using the UTF-16 encoding.这样,Java规定了字符的内码要用UTF-16编码。或者至少要让用户无法感知到String内部采用了非UTF-16的编码。“感知”可以是多方面的,例如随机访问某个下标的code unit(String.charAt())应该是O(1)操作,这只有使用UTF-16或者别的“定长”编码才可以做到。注意我这里说的“定长”特指code unit定长,而不是说code point定长。String.getBytes()是一个用于将String的内码转换为指定的外码的方法。无参数版使用平台的默认编码作为外码,有参数版使用参数指定的编码作为外码;将String的内容用外码编码好,结果放在一个新byte[]返回。题主的例子里,显然外码是UTF-8,那么调用了String.getBytes()之后得到的byte[]只能表明该外码的性质,而无法碰触到String内码的任何特质。另举一例:Java标准库实现的对char与String的序列化规定使用UTF-8作为外码。Java的Class文件中的字符串常量与符号名字也都规定用UTF-8编码。这大概是当时设计者为了平衡运行时的时间效率(采用定长编码的UTF-16)与外部存储的空间效率(采用变长的UTF-8编码)而做的取舍。题外话1:可惜UTF-16在Java设计之初还是真的定长编码,后来Unicode涵盖的字符变多了之后UTF-16变成了坑爹的变长编码(一个完整的“字符”是一个code point;一个code point可以对应1到2个code unit;一个code unit是16位),Java也只好跟进。为了实现UTF-16的变长编码语义,Java规定char仍然只能是一个16位的code point,也就是说Java的char类型不一定能表示一个UTF-16的“字符”——只有只需1个code unit的code point才可以完整的存在char里。但String作为char的序列,可以包含由两个code unit组成的“surrogate pair”来表示需要2个code unit表示的UTF-16 code point。为此Java的标准库新加了一套用于访问code point的API,而这套API就表现出了UTF-16的变长特性。题外话2:前面我说Java的内码时说得比较松,留下了“不总是使用UTF-16作为内码,但是用户无法感知区别”的余地。在Sun JDK6中有一个“压缩字符串”(-XX:+UseCompressedString)的功能。启用后,String内部存储字符串内容可能用byte[],也可能用char[];当整个字符串所有字符都在ASCII编码范围内时,就使用byte[](ASCII序列)来存储,此时字符串就处于“压缩”状态;反之,只要有任何一个字符超出了ASCII的编码范围,就退回到用char[](UTF-16序列)来存储。ASCII编码也是一种定长编码,而且其涵盖的字符是UTF-16的真子集;用户在对一个“压缩”的字符串访问其内容时(例如String.charAt()),只需对ASCII字符做无符号扩展就可以得到对应的UTF-16 code unit。这样用户也就无法感知到Java String的内码不是UTF-16的情况。Sun JDK6对“压缩字符串”的实现不够理想,实现太复杂而效果未如预期的好,所以没有包含在OpenJDK6、Oracle JDK7/OpenJDK7里。现在Oracle在重新审视“压缩字符串”功能,有可能在JDK9重新实现出来。题外话3:同样规定使用UTF-16作为内码的JavaScript语言,其实现广泛应用了“压缩字符串”的思想。现在主流的JavaScript引擎都会尽可能用ASCII内码的字符串,不过用户能接触的API只能看到UTF-16 code unit。

    展开全文
  • 字符变量与字符常量

    2022-01-19 16:12:07
    字符变量与字符常量的区别
    • 字符变量是存放字符常量的char类型的变量 
    • 字符常量是字面量,即单独出现在表达式中的字面上的字符,如 'a' 。

    二者的重要区别为所占字节大小的不同,如下:

     

    字符变量占1个字节,字符常量占4个字节(C语言中是如此,C++中字符常量也占1字节);

    那么为何字符常量要占4个字节?

    这是因为在C语言中整形字面量类型默认为 int,如 123 就被默认为 int 而非 short 或 long,而浮点数字面量默认为double 。

    又因为在C语言中,并没有真正的字符类型,其底层仍然是整形,只不过是使用ASCII码将整形变成了字符,所以字符的本质就是整形。故字符常量,即字符字面量,就是整形字面量,其大小理所当然也为4个字节。

    展开全文
  • 2、字符常量"abc\0de"包含几个字符,占据多少个字节? 3、易错点:区分sizeof函数和strlen函数 叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!
  • 字符字符型变量有什么区别,都占几个字节(一)“字节”的定义 字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位。 (二)“字符”的定义 字符是指计算机中使用的文字和...
  • 字符常量字符串型常量

    千次阅读 2020-11-23 15:03:31
    1. 字符常量2个字节 2. 字符串常量个字节 注意:char在Java中个字节 字符封装类 Character 有个一成员常量 Character.SIZE 值为16,单位是 bites,该值除以8(1byte = 8bits)后就得到2个字节
  • java中一个char型的数据(也就是一个字符个字节。而Java中常用的字符包括数字、英文字母、英文符号、中文汉字、中文符号等,若在字符串中包含里面的多种字符,它们是否都两个字符呢?答案是否定的。 public ...
  • Java语言中一个字符占几个字节

    万次阅读 2019-01-04 15:54:51
    内码是程序内部使用的字符编码,特别是某种语言实现其char或String类型在内存里用的内部编码; 外码是程序与外部交互时外部使用的字符编码。“外部”相对“内部”而言;不是char或String在内存里用的内部编码的地方...
  • 字符型常量和字符串常量的区别 形式上: 字符常量是单引号引起的一个字符;...内存大小 字符常量2个字节; 字符串常量若干个字节(至少一个字符结束标志) (注意: char在Java中个字节) ...
  • 字符型数据只占用1个字节(8位)的内存单元。 字符型常量 字符串常量是由一对双引号括起来的字符序列。例如,“CHINA”,“C program”,“$12.5”等都是合法的字符串常量。 字符串常量和字符常量是不同的量。它们...
  • 字符串所占字节数分析

    千次阅读 2021-05-19 10:02:55
    char *s="\ta\017bc"中指针变量s 指向的字符串所占字节数是6的原因。'\t' 是一转义字符相当于键盘“Tab”键‘a’ 普通字符'\017'转义字符ASCII代码值为8进制数17即10进制数15的那个符号(LZ可以自己去查下看是什么...
  • C语言字符常量

    2021-05-21 04:20:32
    题:在C语言中,以下合法的字符常量是A. "\n"B. 'ab'C. '\x43'D. '\084'正确答案:C解析:A 有双引号,是字符串B 单引号里只能一个字符D \0表明是8进制,只能出现0--7的数字知识点(1)char a = 'k';a是字符,...
  • Java语言中一个字符占几个字节题主要区分清楚内码(internal encoding)和外码(external encoding)就好了。内码是程序内部使用的字符编码,特别是某种语言实现其char或String类型在内存里用的内部编码;外码是程序与...
  • 在Java中的一些容器中,不允许有两完全相同的对象,插入的时候,如果判断相同则会进行覆盖。这时候如果只重写了equals()的方法,而不重写hashcode的方法,Object中hashcode是根据对象的存储地址转换而形成的一...
  • char叫多字节字符,一个char个字节,之所以叫多字节字符是因为它表示一个字时可能是一个字节也可能是多个字节。一个英文字符(如’s’)用一个char(一个字节)表示,一个中文汉字(如’中’)用3个char(三个字节)表示...
  • \t转义字符占几个字节

    千次阅读 2021-05-11 14:55:40
    这个问题,在你学习编程过程中可能会考虑到,有时为了字节对齐而使用转义符中\t,但是到底\t占用几个空格呢? 下面我们首先通过程序来体验下,然后在总结 #include <stdio.h> int main() { printf("123456\...
  • C中字符串常量&字符数组&字符常量

    万次阅读 多人点赞 2019-12-17 11:21:42
    在 C 语言中,字符串有两种存储方式,一种是通过字符数组存储,另一种是通过字符指针存储。 一、字符常量: 一用单引号括起来的单个字符(或字符转义序列或三...字符常量字符常量是用单引号括起来的一字符,...
  • C语言的字符常量和符号常量符号常量字符常量符号常量#define指令可以把符号名定义为一特定的字符串:#define 名字 替换文本在该定义之后,程序中出现的所有#define中定义的名字(既没有被引号引起来,也不是其他...
  • 字符常量字符常量的区别?

    千次阅读 2019-06-18 14:54:21
    形式上: 字符常量是单引号引起的一个字符; 字符串常量是双引号引起的若干个字符 ...内存大小 字符常量2个字节; 字符串常量若干个字节(至少一个字符结束标志) (注意: char在Java中个字节) ...
  • 字符串在Python内部是如何省内存的

    千次阅读 2020-12-09 18:30:27
    每个标准 Unicode 字符占用 4 个字节。这对于内存来说,无疑是一种浪费。Unicode 是表示了一种字符集,而为了传输方便,衍生出里如 utf8 , utf16 等编码方案来节省存储空间。Python内部存储字符串也采用了类似的...
  • 字符串、字符字节

    2021-03-22 11:20:51
    ①ASCII码中,一个英文字母个字节的空间,一个中文汉字个字节的空间。 ②UTF-8编码中,一个英文字符等于一个字节,一个中文等于三个字节。 ③Unicode编码中,一个英文等于两个字节,一个中
  • 字符常量与变量

    2020-03-06 21:36:53
    字符常量: 1、定义:用单引号括起来的单个普通字符或转义字符. 2、字符常量的值:该字符的ASCII码值 3、转义字符:反斜线后面跟一字符或一代码值表示 3.3.25.1 字符常量以及转义字符代码演示 运行结果如图...
  • C++2.2.3字符常量

    2021-10-16 21:19:13
    C++数据类型中字符数据与整形数据: 字符数据以ASCII码存储,可以转为整形数据,并且... 'a'为字符常量1个字节(单括号括起来的一个字符就是字符常量,区分大小写);"a"为字符串常量,2个字节。 ...
  • c中单个字符占字节

    千次阅读 2017-03-12 21:52:57
    C/C++中单个字符字节情况
  • 然后,本文讲述了通常对字符与编码的种误解,由于这些误解而导致乱码产生的原因,以及消除乱码的办法。本文的内容涵盖了“中文问题”,“乱码问题”。掌握编码问题的关键是正确地理解相关概念,编码所涉及的技术...
  • } 结果不是8而是9,因为默认在后面添加了一个\0, \0也算一个字节 3、字符常量存放静态存储区实验 #include char* get_mem() { char *str="xiaolong"; return str; } int main () { char *str; str=get_mem(); ...
  • C语言字符常量与字符串常量

    万次阅读 多人点赞 2019-02-28 09:51:03
    字符常量:一用单引号括起来的单个字符(或字符转义序列或三字母词) 实质(含义):是一整形值。属于四大基本数据类型(分别是整型,浮点型,指针,聚合类型)中的整型(integers)。 如‘a', '\n', '??!', ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 127,990
精华内容 51,196
关键字:

字符常量占几个字节