字节和字符的差别

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

在学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编码。这就是原因了吧。

时间: 2024-10-09 23:01:33

字节和字符的差别的相关文章

解惑:字、位、字节、字符、字符串。

1.字 就是我们所说的文字,如汉字,占2个字节(字不是计算机处理的数据,至少不是直接处理) 2.位(bit,比特) 这才是计算机中的最小数据单位,二进制数,如 一个0或1,这样的数据就叫一位 3.字节(byte) 是一种数据类型,一般 一个字节=8位, 字节是指一小组相邻的二进制数码(位).通常是8位作为一个字节.它是构成信息的一个小单位,并作为一个整体来参加操作 (所以,尽管最小的单位是位bit,但最常用的单位是字节byte 8位) 4.字符 字符人们使用的记号,抽象意义上的一个符号. '1'

字节和字符的区别 【转】

(一)"字节"的定义字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位. (二)"字符"的定义字符是指计算机中使用的文字和符号,比如1.2.3.A.B.C.~!·#¥%---*()--+.等等. (三)"字节"与"字符"它们完全不是一个位面的概念,所以两者之间没有"区别"这个说法.不同编码里,字符和字节的对应关系不同:①ASCII码中,一个英文字母(不分大小写)

每日一学--深究字节与字符

转载自:http://www.cnblogs.com/strivers/archive/2011/01/04/1925826.html package com.suypower.chengyu.test; public class ByteTest { /** * byte 8 bits -128 - + 127 * 1 bit = 1 二进制数据 * 1 byte = 8 bit * 1 字母 = 1 byte = 8 bit(位) * 1 汉字 = 2 byte = 16 bit */ pu

字节和字符的区别

字节和字符的定义在这里我就不写了,百度上有好多大家可以参考一下. 在学Java IO的时候,涉及到字节流和字符流,我就很郁闷字节数组里存储的数据到底是什么样子的...好多次和男朋友讨论到这个概念,我还是糊里糊涂的,最后也不好意思问他了...嘿嘿嘿..自己写了个小程序测试一下,对字节和字符的理解或许有帮助: public class BAndC { public static void main(String[] args) { String data = "Hello"; byte[]

转 ORACLE数据库它可以存储 中文 字节或字符

一:因为ORACLE数据库它可以存储字节或字符,例如 CHAR(12 BYTE) CHAR(12 CHAR)的意义是不同的.一般来说默认是存储字节,你可以查看数据库参数NLS_LENGTH_SEMANTICS的值. 1: SQL> show parameter nls_length_semantics; 2: 3: NAME                          TYPE        VALUE 4: ------------------------- ----------- --

Java IO 转换流 字节转字符流

Java IO 转换流 字节转字符流 @author ixenos 字节流 输入字节流:---------| InputStream 所有输入字节流的基类. 抽象类.------------| FileInputStream 读取文件的输入字节流.------------| BufferedInputStream 缓冲输入字节流. 该类内部其实就是维护了一个8kb(8192b)字节数组而已. 该类出现的目的是为了提高读取文件数据的效率. 输出字节流:---------| OutputStream

C#中流,字节,字符,字符串

首先要明白它们本身是由什么组成的: 流:二进制 字节:无符号整数 字符:Unicode编码字符 字符串:多个Unicode编码字符 那么在.net下它们之间如何转化呢? 一般是遵守以下规则: 流->字节数组->字符数组->字符串 下面就来具体谈谈转化的语法: 流->字节数组 MemoryStream ms = new MemoryStream(); byte[] buffer = new byte[ms.Length]; ms.Read(buffer, 0, (int)ms.Len

乱码的根本原因是字节和字符的问题(转)

1,为什么会出现乱码 乱码的根本原因是字节和字符的问题. 我们在大学学习c的时候,老师就有介绍字符和字节. 字节由8个bit位表示,最早的编码是ASCII码,ASCII码是单字节的编码字符.因为单字节8个bit位对于中文字符和其他国家的字符来说根本不够用,需要更多的bit位来表示字符.我们现在常见的编码有GBK,BIG5,GB2312,UTF-8,通过编码映射表可以确定bit位和字符之间的映射关系. 一个应用从服务端把需要展现的文字换成一段字节流传输给浏览器,浏览器把字节流组装字符展现的过程一般

java 替换四个字节的字符 ‘\xF0\x9F\x98\x84\xF0\x9F)的解决方案 ??

/** * 替换四个字节的字符 '\xF0\x9F\x98\x84\xF0\x9F)的解决方案 ?? * @author ChenGuiYong * @data 2015年8月11日 上午10:31:50 * @param content * @return */ public static String removeFourChar(String content) { byte[] conbyte = content.getBytes(); for (int i = 0; i < conbyt