`
Java_admin
  • 浏览: 10156 次
社区版块
存档分类
最新评论

字节和字符的读取

 
阅读更多

       我们知道在文件读取的时候,会遇到字符和字节的读取问题哭。字节和字符是一个容易混淆的概念:下面以一个例子来说明一下:大笑

 

public class Test {
   public static void main(String[] args) {
        String str = "my test"; byte[] bt = str.getBytes();
        System.out.println(bt.length);
   }
}

     

       这个结果还是什么呢?估计会有很多对于字符和字节有了解的人,说结果是14,可是呢,结果确实7。这是为什么呢?

      不是一个字符两个字节么,这在课本上写的很清楚啊!,其实是没理解清楚在这里并不是这么回事的。我们来分析一下,这段代码了有这一句话,byte[] bt = str.getBytes();,这里bt是一个字节数组,把字符存在了字节数组里,这里有个方法:getBytes(),帮助文档是这么解释的: 

  

  Encodes this String into a sequence of bytes using the platform's default charset, storing the result into a new byte array. 

     

      它是将每个字符转化为一个字节存储在字节数组里了,所以,我们就不能简单的理解为,一个字符两个字节了。看完下面这个例子估计,你就明白了:

      

public class Test {
   public static void main(String[] args) {
        String str = "my test"; char ca[] = str.toCharArray();
        System.out.println(ca.length);
   }
}

      这里输出的就是我们想要的结果14.。


 总结一下子:

         

          

           char c = '中'  这里就有两个字节

           char c1 = 'a'  这里也是两个字节

           第二个字节是空字节一个中文字符占两个字节

           一个中文标点符号(或全角英文标点)
           

           两个字节一个英文字符占一个字节

           一个半角英文标点符号占一个字节

           一个半角空格占一个字节

           一个全角空格占两个字节

 
例子如下:
       String str = "我是 中国人" 空格是半角的  输出是  11
       String str = "我是,中国人" 标点是半角的  输出是  11
       String str = "我是,中国人" 标点是全角的  输出是 12

分享到:
评论

相关推荐

    socket传输字节和字符串

    Java中的OutputStreamWriter和InputStreamReader可以用于字符到字节和字节到字符的转换。通过指定合适的编码格式,我们可以保证字符串的正确传输。 `'com.tonystark.android:socket:+'`库为Socket通信提供了一些...

    java字节与字符

    在Java的I/O包中,根据处理的数据类型不同,可以将流分为两大类:字节流和字符流。 - **字节流**:处理的是8位的数据单元,即字节,主要适用于处理二进制文件如图片、音频等。Java中字节流的顶级抽象类是`...

    计算字符串中的单双字节字符个数

    单字节字符通常指的是ASCII字符,而双字节字符则涉及到Unicode字符集,如汉字和其他非英文字符。下面将详细探讨如何计算字符串中的单双字节字符个数,以及它们在实际应用中的作用。 首先,让我们理解什么是单字节...

    如何处理错误ORA-29275:部分多字节字符

    该错误的出现意味着在查询结果中存在一些多字节字符(通常是汉字或其他非英文字符)未能正确读取或解析,导致数据不完整或者格式异常。 #### 错误原因分析 在深入探讨解决方案之前,我们首先需要了解ORA-29275错误...

    c#中的流,字节,字符,字符串的互相转化

    在C#编程中,数据传输和...此外,`Convert`类提供了通用的转换方法,如`Convert.ToInt32`、`Convert.ToChar`等,但在处理字节与字符之间的转换时,使用`Encoding`类的方法更为合适,因为它能更好地处理多字节字符编码。

    二进制字节与字符串之间的转换

    在IT领域,数据的处理和传输常常涉及到二进制字节和字符串之间的转换。这是因为不同的系统和编程语言可能以不同的方式处理数据,有时需要将原始的二进制数据转化为易于处理和显示的字符串形式,反之亦然。在这个过程...

    vb6.0 字节数组和字符串的相互转换.rar

    在VB6.0编程环境中,字节数组和字符串之间的转换是常见的操作,尤其是在处理二进制数据和文本数据之间转换的场景。本教程将详细解释如何在VB6.0中进行这两种数据类型的转换,并通过实际示例进行演示。 1. 字符串转...

    JAVA 字符流与字节流

    Java中字符流的主要类有`Reader`和`Writer`,它们分别用于读取和写入字符数据。 #### 常见的字符流类: - **FileReader** 和 **FileWriter**:用于从文件中读取和向文件中写入字符。 - **StringReader** 和 **...

    字节流字符流

    例如,FileInputStream和FileOutputStream分别用于读取和写入文件的字节数据。 字符流则包括Reader和Writer两个基类,用于处理文本数据。由于文本数据通常基于特定的字符编码,如ASCII、UTF-8或GBK,字符流在传输时...

    字节流字符流练习

    例如,当你需要从一个字节流读取文本数据时,可以先创建一个InputStreamReader,指定所需的字符集,然后用它来创建一个BufferedReader,这样就可以按字符读取文本了。 在实际开发中,我们通常会结合使用各种流类,...

    java字节流和字符流

    Java中的字节流和字符流是IO操作中的两种基本类型,它们主要用于数据的输入和输出。字节流处理的数据单位是字节,而字符流处理的是Unicode字符。 字节流: 字节流主要由两个核心类构成:`InputStream`和`...

    字节流字符流的使用方法源码+文档

    在Java中,可以使用循环来逐字节或逐字符读取和写入,或者使用`BufferedInputStream`和`BufferedOutputStream`(或`BufferedReader`和`BufferedWriter`)来提高性能,因为它们提供了缓冲功能。 4. **多文件复制**:...

    Java IO 字节流 字符流

    字符流是基于Unicode编码的,它包括Reader和Writer两大类,分别用于读取和写入字符。Reader是所有字符输入流的基类,如 FileReader,它可以从文件读取字符;而Writer是所有字符输出流的基类,如 FileWriter,用于向...

    Java中的字节流文件读取教程(一)

    FileInputStream和FileOutputStream是字节流的实现类,分别用于读取和写入文件。FileInputStream有多种构造器实例化对象,可以根据需要选择合适的构造器。 7. 字节流文件读取的应用场景 字节流文件读取的应用场景...

    asp.net c# String类添加按字节截取字符串的扩展方法

    通过这种方式,我们可以更灵活地控制字符串的截取,尤其是在处理多字节字符时,确保了截取的准确性和完整性。 ### 总结 在ASP.NET C#开发中,为`String`类添加按字节截取字符串的扩展方法,能够有效地解决在处理多...

    Java字节流数据逐行读取(readLine)

    在这个例子中,我们首先创建一个`FileInputStream`对象来读取文件,然后通过`InputStreamReader`将字节流转换为字符流,并指定字符编码(这里默认为UTF-8,因为大部分现代系统都使用这个编码)。接着,我们用`...

    双字节 多字节 宽字节 Unicode

    这包括双字节字符集和其他更复杂的字符编码方案,例如一些特殊的东亚字符集可能需要超过两个字节来表示单个字符。 **2. 宽字符集** 宽字符集(Wide Character Set)是一种使用固定宽度的字符编码方式,最常见的是...

    长度是5字节的偶数倍的字符串,按5字节进行拆分,两两将位置互换

    1. 读取文件内容,将其转化为字符串。 2. 检查字符串长度是否为5字节的偶数倍,如果不是,需要进行处理,如截断或填充。 3. 使用循环按5字节切割字符串,得到子串列表。 4. 对子串列表进行两两位置互换,可以使用两...

    易语言字节集文件的十六进制和文本的读取操作

    本文将深入探讨易语言字节集文件的十六进制和文本的读取操作,帮助开发者理解如何有效地处理这类文件。 首先,字节集文件是二进制数据的容器,它可能包含任何非文本格式的信息,如图片、音频、程序代码等。在易语言...

    JAVA如何按字节截取字符串

    字节截取是指从一个字符串中截取指定长度的字节,以便于数据传输、存储和处理。 在Java语言中,我们可以使用多种方法来按照字节截取字符串。其中一种常用方法是使用StringBuffer类和charAt()方法来实现字节截取。 ...

Global site tag (gtag.js) - Google Analytics