JAVA编程思想---基本数据类型总结(byte,char)

一直不是很了解Byte和char的。查找了很多资料之后终于对java的基本数据类型有可一个大致的总结

一、数据之间的转换

按照java类型之间的转换顺序如下

byte---->short(char)---->int---->long---->float---->double

按照上述顺序总结如下:

1、数据类型可以从左边自动转换到右边的类型

2、数据类型从右边转换成左边的类型时,必须要进行强制转换,且转换时会丢失部分信息

二、Byte和char之间的区别

   byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是065535 ;char是一个16位二进制的Unicode字符,JAVAchar来表示一个字符 。

1、Char是无符号型的,可以表示一个整数,不能表示负数;而byte是有符号型的,可以表示-128—127 的数

char c = (char) -3; // char不能识别负数,必须强制转换否则报错,即使强制转换之后,也无法识别  
System.out.println(c);  
byte d1 = 1;  
byte d2 = -1;  
byte d3 = 127; // 如果是byte d3 = 128;会报错  
byte d4 = -128; // 如果是byte d4 = -129;会报错  
System.out.println(d1);  
System.out.println(d2);  
System.out.println(d3);  
System.out.println(d4);

结果为:

?
1
-1
127
-128

2、char可以表中文字符,byte不可以,如

    char e1 = '中', e2 = '国';  
    byte f= (byte) '中'; //必须强制转换否则报错  
    System.out.println(e1);  
    System.out.println(e2);  
    System.out.println(f);  

结果为:

中
国
45

3、对于同一种类型,输出结果不一样

    public class Print_Test {  
        public static void main(String[] args) {  
             char c = (char) 2354;  
             System.out.println(c);  
             char c1 = (char) 2354;  
             System.out.println(+c1);  
             char c2 = (char) 2354;  
             System.out.println(' '+c2);  
        }  
    }  

   输出结果:
    ?  
    2354  
    2386  

出现上述结果是因为在java里面很重要的一个特性就是多态,这里System.out.pringln();虽然看上去都是调用同一个方法,但是在实际情况下,System.out.pringln()实现了方法的重载,于是就出现了:

System.out.pringln(c),调用的是System.out.pringln(char c); 

System.out.println(+c1)和System.out.println(' '+c2),调用的是System.out.println(int x);

这样调用同一个方法,同一个变量值但不同类型,可能出现不同的值。因为它们实际调用的是不同的方法。


4、char的算术运算结果和字节型运算结果不一样

                char firstChar='中';
		int intChar=firstChar+1;
		char LastChar=(char) intChar;
		System.out.println("char:"+LastChar);
以上的运行结果如下

char:丮
firstchar+1,获取的是Unicode表中的下一个字符,所以输出的是一个字符型的字符,这和字节型的数据+1是完全不相同的两个结果

总结

1、char是无符号型的,可以表示一个整数,不能表示负数,而byte是有符号型的,可以表示-128至127的一个数

2、char可以表示中文,byte不可以

3、字符型的常量也可以用16进制编码方式表示,范围是'\u0000'-'\uFFFF',一共可以表示65536个字符,其中前256个字符('\u0000'-'     \uFFFF')和ASCII码中的字符完全重合。

    不仅如此,字符型的值也可以作为整数型来使用,但它是无符号整数,但他是一个16位的无符号整数,表示范围0----65535,

    如果把一个0----65535内的int型整数赋值给char类型的变量,系统会自动把这个int型整数当成char类型来处理。

4、如果对基本数据类型执行算术运算或按位运算,大家会发现只要类型比int小(即char,byte,或者short),那么在运算之前,这     些值会自动转换成int, 这样一来,最总生成的结果就是int类型。如果想把结果赋值给较小的类型,就必须使用类型转换(既然 把结果赋值给了较小的类型,那就可能出现信息丢失)。
      通常,表达式中出现的最大的数据类型决定了表达式最终结果的数据类型。
      如果将一个float值与一个double值相乘,结果就是double;如果将一个int和一个long值相加,则结果为long


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值