IT兄弟连 Java语法教程 数据类型3

字符型

在Java中,用于存储字符串的数据类型是char。然而,C/C++程序员要当心:Java中的char与C或C++中的char是不同的。在C/C++中,char的宽度是8位。而在Java中不是这样的。相反,Java使用Unicode表示字符。Unicode定义了一个完全国际化的字符集,能够表示全部人类语言中的所有字符。unicode是数十种字符集的统一体,比如拉丁字符集、希腊字符集、阿拉伯字符集、斯拉夫语字符集、希伯来语字符集、日文字符集、韩文字符集和中文字符集等。为此,Unicode需要16位宽度。因此,在Java中char是16位类型。char的范围为0~65536。没有负的char值。ASCII标准字符集的范围仍然是0~127;而扩展的8位字符集ISO-Latin-1,其范围是0~255。既然Java的设计初衷是允许程序员编写在世界范围内均可使用的程序,那么使用Unicode表示字符是合理的。当然,对于英语、德语、西班牙语或法语这类语言,使用Unicode在一定程度上会降低效率,因为可以很容易地使用8位表示这类语言的字符。但这是为了在全球获得可移植性而必须付出的代价。

下面是演示char变量用法的一个程序:

public class CharDemo{

    public static void main(String[] args){

         char c1 = 97;

         char c2 = 'a';

         System.out.println("c1: " + c1);

         System.out.println("c2: " + c2);

    }

}

编译并运行这个程序,控制台将显示如图1所示的信息。

960a1922b7ea49d0946c1f174383746c.png

图1 CharDemo运行结果


注意,c1被赋值为整数97,该数值是与字母'a'对应的ASCII(以及Unicode)值。前面提到过,ASCII字符集占用Unicode字符集中前127个值。因此,在其它语言中对字符使用的所有“旧式技巧”,在Java中依然管用。

尽管char被设计成容纳Unicode字符,但它可以用作整数类型,可以对char类型的变量执行算术运算。例如,可以将两个字符相加到一起,或者增加字符变量的值。分析下面的程序:

public class CharDemo2{

    public static void main(String[] args){

         char c1 = 'b';

         System.out.println("c1: " + c1);

         char c2 = 'a' + 1;

         System.out.println("c2: " + c2);

    }

}

编译并运行这个程序,控制台将显示如图2所示的信息。

在该程序中,首先将'b'赋值给c1并输出,字符b在ASCII和Unicode字符集中的编码都是98,接下来声明了char变量c2,使用字符a加1初始化了c2变量,我们知道字符a在ASCII和Unicode字符集中的编码是97,那么97加1就是字符b在ASCII和Unicode中的字符编码,所以最后输出了字符b。

注意,在Java的正式规范中,char被当作整数类型,这意味着它和int、short、byte和long位于同一分类中。然而,因为char类型的主要用途是表示unicode字符,所以通常考虑将char放到单独的分类中。


eb9c5b5f49b44bf984e3bb0357263ef8.png

图2  CharDemo2运行结果


布尔型

Java中有一种称为boolean的基本数据类型,用于表示逻辑值。他只能是两个可能的值之一:true或false。所有关系运算(例如a<b)都返回这种类型的值。对于if和for这类控制语句的条件表达式。也需要boolean类型。

下面的程序演示了boolean类型:

public class BooleanDemo{

    public static void main(String[] args){

         boolean b = false;

         System.out.println("b: " + b);

         b = true;

         System.out.println("b: " + b);

         if(b) System.out.println("这段代码被执行了");

         b = false;

         if(b) System.out.println("这段代码不会被执行");

         System.out.println("10>9么? :" + (10 > 9));

    }

}

编译并运行这个程序,控制台将显示如图3所示的信息。

关于这个程序有三个有趣的地方需要注意。首先可以看出,当通过println()方法输出boolean值时,显示的是true或false。其次,对于控制语句if来说,boolean变量的值本身是足够的。不需要像下面这样编写if语句:

if(b == true) …


0d2224e5a93d45918cd9b896ba147a65.png

图3  BooleanDemo运行结果

最后,关系运算符(例如<)的输出的是boolean值。这就是为什么表达式10>9显示true的原因。此外,10>9周围的圆括号是必须的,因为运算符+比>具有更高的优先级。


猜你喜欢

转载自blog.51cto.com/14311187/2415647
今日推荐