您的位置:首页 > 编程语言 > Java开发

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

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

一、数据之间的转换

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

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

按照上述顺序总结如下:

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

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

二、Byte和char之间的区别

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

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: