zoukankan      html  css  js  c++  java
  • 字节和字符的差别

    字节和字符的定义在这里我就不写了。百度上有好多大家能够參考一下。

    在学Java IO的时候,涉及到字节流和字符流,我就非常郁闷字节数组里存储的数据究竟是什么样子的。

    。。

    好多次和男朋友讨论到这个概念。我还是糊里糊涂的。最后也不好意思问他了。

    。。

    嘿嘿嘿。。自己写了个小程序測试一下,对字节和字符的理解也许有帮助:

    public class BAndC
    {
    
    	public static void main(String[] args)
    	{
    		String data = "Hello";
    		byte[] dataB = data.getBytes();
    		for(int i = 0 ; i < dataB.length ; i++)
    		{
    			System.out.println("Hello在字节数组中:" + dataB[i]);
    		}
    		
    		char[] dataC = data.toCharArray();
    		for(int m = 0 ; m < dataC.length; m++)
    		{
    			System.out.println("Hello在字符数组中:" +dataC[m]);
    		}
    	}
    }
    

    程序打印的结果例如以下:



    在字节数组中输出的是Hello每个字母相应的ASCII码。于是问题又出来了,getBytes()方法返回的是用系统默认的字符编码格式的字节数组,但度娘说windows系统默认的编码格式是unicode,可是unicode是双字节啊,为什么输出的会是ascii码呢?ascii是单字节的啊?

    当我调用System.getProperty("file.encoding");时。打印结果却是GBK。度娘又说此方法返回的属性不是系统默认的字符编码,而是程序的入口函数所在的类的保存编码http://www.cnblogs.com/silentjesse/archive/2011/11/04/2235674.html,此二者还不是一回事。

    终于我还是不明确为什么会打印出ascii码。

    先在这小记。路过的大神假设晓得当中的缘由,请留言,谢谢!!

    今天早上在看数据输入输出流时。书上有这么一句话:java中的字符是unicode编码。是双字节的,writeBytes仅仅是将字符串中的每个字符的低字节内容写入目标设备中;而writeChars将字符串中的每个字符的两个字节的内容都写到目标设备中;writeUTF将字符串依照UTF编码后的字节长度写入目标设备,然后才是每个字节的UTF编码。这就是原因了吧。


  • 相关阅读:
    TensorFlow小记
    Faster R-CNN学习记录
    C语言创建文件夹
    ffmpeg应用:将连续图像转为视频文件
    VMWare 搭建 Hadoop 完全分布式集群(含HBASE)
    HBASE 过滤器
    HBASE API 操作
    [Unity] 打包时报错:UnityEditor.BuildPlayerWindow+BuildMethodException
    [Unity] 有关Unity中使用VideoPlayer突然无法播放视频的问题
    [Unity3D]C#切换plane上的图片
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6746929.html
Copyright © 2011-2022 走看看