zoukankan      html  css  js  c++  java
  • char 和 byte 区别

    byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。

    char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是0—65535 ;char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 。

    1,char可以表示中文字符,byte不可以;

    2,char可以表示一个整数,但不能带符号,只能是正数,范围是0-65535;byte有符号型整数,范围是-128-127;

    3,char对于英文字符可以直接转换(按Unicode码) 例如 :char c = 65;  System.out.println(c); 结果为A

    注意:char c ='A'  ,变量中实际存储的是该字符的Unicode编码

    题外话:

    示例: 下面的程序计算了一个循环的迭代次数,并且在该循环终止时将这个计数值打印了出来。那么,它打印的是什么呢? 

    public static void main(String[] args) {
    		byte bytes[] = new byte[256]; 
    		for (int i = 0; i < 256; i++) 
    		bytes[i] = (byte)i; 
    		String str = null;
    		str = new String(bytes);
    		for (int i = 0, n = str.length(); i < n; i++) 
    		System.out.println((int)str.charAt(i) + " "); 
    	}
    

      

    byte数值通过String构造器被转换成char数值,最后char数值被转型成int数值被打印出来.

    因为char是无符号的,所以byte的负值转成 char型是一个非数值型的特定字符.String构造器在未指定字符集的时候,采用jre的缺省字符集. 在通过解码使用平台缺省字符集的指定byte数组来构造一个新string 时,该新string 的长度是字符集的一个函数,因此,它可能不等于byte数组的长度.当给定的所有字节在缺省字符集中并非全部有效时,这个构造器是不确定的.

    只有"ISO-8859-1"能让该程序按顺序打印0-255,此处应显示的指定字符集.str = new String(bytes,"ISO-8859-1");

  • 相关阅读:
    HTTP协议详解(真的很经典)
    几点建议,让Redis在你的系统中发挥更大作用
    Redis能干啥?细看11种Web应用场景
    Java中使用Jedis操作Redis
    java的锁机制——synchronized
    web开发中的两把锁之数据库锁:(高并发--乐观锁、悲观锁)
    一分钟教你知道乐观锁和悲观锁的区别
    $^,$@,$?,$<,$(@D),$(@F) of makefile
    linux shared lib 使用与编译
    makefile learning
  • 原文地址:https://www.cnblogs.com/java-wp/p/6675147.html
Copyright © 2011-2022 走看看