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

字节和字符的读取

阅读更多

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

 

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

分享到:
评论

相关推荐

    js读取本地文件到字节数组

    但是为了使后台接收上传文件的方法既使用网页上传,又适应桌面应用程序上传,方法的参数设置成两个,一个为字符串类型,接收文件名,另一个为字节数组类型,用于接收文件内容。对于桌面应用,把文件内容读取到字节...

    读取字符流

    用字节流、字符流处理对数据的读取和写入。OutputStreamWriter

    php字符串与byte字节数组转化类.zip

    介绍php字符串与byte字节数组转化类,转换一个String字符串为byte数组,将字节数组转化为String类型的数据,转换一个int为byte数组,从字节数组中指定的位置读取一个Integer类型的数据,转换一个shor字符串为byte...

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

    程序从文件上读入内容(字符串),长度不定,但长度是5字节的偶数倍, 在程序中对该字符串,按5字节进行拆分,两两将位置互换,最后倒序打印输出。

    字节流和字符流

    字节流与字符流在java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,在字符流中输出主要是使用Writer类...

    labview 4字节一维数组整数转为4字节16进制字符串.vi

    labview 读取的一维数组(整数)转换成16进制的字符串,方便大家进行数据处理。有问题可以留言咨询,互相学习

    双字节 多字节 宽字节 Unicode

    简单讲述了 双字节 多字节 宽字节 Unicode之间的关系及转换

    JAVA流读取中英文字符

    使用RandomAccessFile 流读取hello.txt文件舍弃其前4行 和 后 6行的内容,并将其他行的内容倒置读出。程序尽量做到通用性,可以读取任何一个文件。 可以自己随便创建一个hello.txt文件作为测试用(其中可能包含中文...

    java 读取字节流

    java 读取字节流的例子,非常好。本例用System.in.read(buffer)从键盘输入一行字符,存储在缓冲区buffer中,再以FileOutStream的write(buffer)方法,将buffer中内容写入文件WriteFile.txt中,程序如下(本例程序放在...

    JavaIO实例_字节流_字符流_缓冲流_转换流IODemo

    JavaIO实例,包括:字节流、字符流、缓冲流、转换流

    Python read函数按字节(字符)读取文件的实现

    主要介绍了Python read函数按字节(字符)读取文件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    C#调用C/C++DLL收取中文字符处理

     从DLL收读取字符串时遇到中文乱码,这里总结一下C#收取字符串时的处理。  C/C++字符串一般通过char* 或wchar_t*来表示,char*表示的是ANSCII字符串, wchar_t*表示Unicode字符串,Unicode字符串在C/C++中一个...

    欧姆龙FINS 协议读取数据

    C#上位机读取欧姆龙plc数据

    java文本读取方法

    java文本读取方法 1、按字节读取文件内容 2、按字符读取文件内容 3、按行读取文件内容 4、随机读取文件内容

    java 读取文件 文件读取操作

    Java 读取文件操作 java中多种方式读文件 一、多种方式读文件内容。 1、按字节读取文件内容 2、按字符读取文件内容 3、按行读取文件内容 4、随机读取文件内容

    C语言 以字符形式读写文件详解及示例代码

    字符读取函数 fgetc fgetc 是 file get char 的缩写,意思是从指定的文件中读取一个字符。它的原型为: int fgetc (FILE *fp); fp 为文件指针。fgetc() 读取成功时返回读取到的字符,读取到文件末尾或读取失败时...

    C# 读取PLC DB块数据DEMO

    C# 读取西门子PLC DB块数据DEMO

    一个byte数组与字符串转化类库

    这个类库可以实现 1.转换一个String字符串为byte数组 2.将字节数组转化为String类型的数据 3.转换一个int为byte数组 4.从字节数组中指定的位置读取一个Integer...6.从字节数组中指定的位置读取一个Short类型的数据

    Java字符流和字节流对文件操作的区别

    本篇文章主要介绍了Java的IO流分为字符流(Reader,Writer)和字节流(InputStream,OutputStream),字节流顾名思义字节流就是将文件的内容读取到字节数组,对初学者很有用,有需要的朋友可以了解一下。

Global site tag (gtag.js) - Google Analytics