第二章 数据类型
§2.5字符型数据
一、字符常量
字符常量是用单引号括起来的一个字符,如‘a','A'。另外,与C、C++相同,Java也提供转义字符,以反斜杠(\)开头,将其后的字符转变为另外的含义,下面列出了Java中的转义字符。
与C、C++不同,Java中的字符型数据是16位无符号型数据,它表示Unicode集,而不仅仅是ASCII集,例如\u0061表示ISO拉丁码的‘a'。
转义字符描述:
\ddd1到3位8进制数据所表示的字符(ddd)
\uxxxx1到4位16进制数所表示的字符(xxxx)
\'单引号字符
\\反斜杠字符
\r回车
\n换行
\f走纸换页
\t横向跳格
\b退格
二、字符型变量
字符型变量的类型为char,它在机器中占16位,其范围为0~65535。字符型变量的定义如∶
charc='a';//指定变量c为char型,且赋初值为'a'
与C、C++不同,Java中的字符型数据不能用作整数,因为Java不供无符号整数类型。但是同样可以把它当作整数数据来操作。
例如:
intthree=3;
charone='1';
charfour=(char)(three+one);//four='4'
上例中,在计算加法时,字符型变量one被转化为整数,进行相加,最后把结果又转化为字符型。
三、字符串常量
与C、C++相同,Java的字符串常量是用双引号("")括起来的一串字符,如"Thisisastring.\n"。但不同的是,Java中的字符串常量是作为String类的一个对象来处理,而不是一个数据。有关类String,我们将在第七章讲述。
§2.6布尔型数据
布尔型数据只有两个值,true和false,且它们不对应于任何整值。在流控制中常用到它。
布尔型变量的定义如:
boolean b=true;//定义b为布尔型变量,且初值为true
§2.7举例
例2.1.下例中用到了前面提到的数据类型,并通过屏幕显示们的值。
public class SimpleTypes{
public static void main(Stringargs[]){
byte b=0x55;
short s=0x55ff;
int i=1000000;
long l=0xfffL;
char c='c';
float f=0.23F;
double d=0.7E-3;
boolean bool=true;
System.out.println("b="+b);
System.out.println("s="+s);
System.out.println("i="+i);
System.out.println("l="+l);
System.out.println("c="+c);
System.out.println("f="+f);
System.out.println("d="+d);
System.out.println("bool="+bool);
}
}
编译并运行该程序,输出结果为:
C:\>java SimpleTypes
b=85
s=22015
i=1000000
l=4095
c=c
f=0.23
d=0.0007
bool=true
§2.8各类数值型数据间的混合运算
一、自动类型转换
整型、实型、字符型数据可以混合运算。运算中,不同类?
的数据先转化为同一类型,然后进行运算。转换从低级到高级。
转换规则为:
①(byte或short)opint→int
②(byte或short或int)oplong→long
③(byte或short或int或long)opfloat→float
④(byte或short或int或long或float)opdouble→double
⑤charopint→int
其中,箭头左边表示参与运算的数据类型,op为运算符(如加减、乘、除等),右边表示转换成的进行运算的数据类型。
例2.2
public class Promotion{
public static void main(Stringargs[]){
byte b=10;
char c='a';
int i=90;
long l=555L;
float f=3.5f;
double d=1.234;
float f1=f*b;//float*byte->float
int i1=c+i;//char+int->int
long l1=l+i1;//long+int->ling
double d1=f1/i1-d;//float/int->float,float-double->double}
}
二、强制类型转换
高级数据要转换成低级数据,需用到强制类型转换,如:
int i;
byte b=(byte)i;//把int型变量i强制转换为byte型
这种使用可能会导致溢出或精度的下降,最好不要使用。
(未完,请继续)