字符型

在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所示的信息。

图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放到单独的分类中。

图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) …

图3  BooleanDemo运行结果

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

IT兄弟连 Java语法教程 数据类型3的更多相关文章

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

    Java是强类型化的语言 Java是一种强类型话的语言,在开始时指出这一点是很重要的.实际上,Java的安全性和健壮性正是部分来自这一事实.强类型意味着什么呢?首先,每个变量都具有一种类型,每个表达式 ...

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

    整型 Java定义了4种整数类型:byte.short.int和long.所有这些类型都是有符号的.正或负的整数.Java不支持无符号的.只是正值的整数.许多其它计算机语言同时支持有符号和无符号整数. ...

  3. IT兄弟连 Java语法教程 数据类型 进制转换

    ●  正十进制转换为二进制 拆分法,将十进制整数拆分为若干个二进制权重的和,若有该权重则下面写1,否则写0.如: 34 = 32 + 2 128 64 32 16 8 4 2 1 0  0  1  0 ...

  4. IT兄弟连 Java语法教程 标识符和关键字

    Java语言也和其它编程语言一样,使用标识符作为变量.对象的名字.也提供了一系列的关键字用以实现特别的功能.本小节将详细介绍Java语言的标识符和关键字等内容. 1.分隔符 Java语言里的分号“;” ...

  5. IT兄弟连 Java语法教程 变量1

    什么是变量 在Java程序中,变量是基本的存储单元.是在程序运行中值可以改变的一块内存区域.变量是通过标识符(变量名).变量类型及可选的初始化器来定义的,此外,所有的变量都有作用域,作用域定义了变量的 ...

  6. IT兄弟连 Java语法教程 Java语言的其他特性

    Java语言中除了非常重要的跨平台特性外,还有如下几个关键特性: ●  语法简单易学 Java语言的语法简单明了,容易掌握,而且是纯面向对象(OOP)的语言,Java语言的简单性主要体现在以下几个方面 ...

  7. IT兄弟连 Java语法教程 数组 数组的初始化

    Java语言中数组必须先初始化,然后才可以使用.所谓初始化,就是为数组的数组元素分配内存空间,并为每个数组元素赋初始值. 这时有人会问,能不能只分配内存空间,不赋初始值呢?答案是肯定不行的,一旦为数组 ...

  8. IT兄弟连 Java语法教程 流程控制语句 循环结构语句1

    循环语句可以在满足循环条件的情况下,反复执行某一点代码,这段被重复执行的代码被称为循环体,当反复执行这个循环体时,需要在合适的时候把循环条件该为假,从而结束循环,否则循环将一直执行下去,形成死循环.循 ...

  9. IT兄弟连 Java语法教程 注释与编码规范

    在程序代码中适当地添加注释可以提高程序的可读性和可维护性.好的编码规范可以使程序更易阅读和理解.下面将介绍Java中的集中代码注释以及应该注意的编码规范. 代码注释 通过在程序代码中添加注释可提高程序 ...

随机推荐

  1. Unity3D 使用Socket处理数据并将数据 在UGUI、NGUI上显示出来

    Unity3d 不支持C#的线程直接调用Unity3D 主线程才能实现的功能.例如:给UGUI text 赋值.改变Color值等.怎样解决这个问题呢?使用一个Loom脚本. 按照惯例贴上代码. 首先 ...

  2. ArrayList 与数组的“纠缠不清”的暧昧

    目录 前言 正话(个人的见解,有误请多指教) 惯例先明白它是什么? 那么它有什么用呢? 怎么用 前言 能不能有一种数组可以在删除掉某些元素自动缩小就好了.可是话说哪里学的Java?数组能删除元素吗?今 ...

  3. MySQL常用SQL语句总结

    1.with rollup 可以实现在分组统计数据基础上再进行相同的统计 SELECT name, SUM(score) as score_count FROM  score GROUP BY nam ...

  4. Dubbo学习笔记-Zookeeper连接失败

    1. 检查服务器的zookeeper端口是否开放,默认为2181 2. 检查zookeeper是否运行成功 # 进入bin文件夹 cd /usr/local/zookeeper/bin # 重启 zk ...

  5. 四面快手、终拿Offer,想告诉你的一些事情

    本篇面经来自于群里粉丝朋友的分享,希望对你有所帮助! 快手高开及以上职级面试 是没有笔试或者机试的,所以从第一轮开始就是直接面对面试官. 一轮 主要考察对Java基础的理解和深入程度. Spring ...

  6. form表单中的button自动刷新页面问题

    form表单中如果存在button的话,有可能会出现一个问题:点击button,触发了页面的自动刷新事件. 原因是因为<button>标签默认的类型是submit,即默认的button点击 ...

  7. 聊聊 Java8 以后各个版本的新特性

    作者:ZY5A59 juejin.im/post/5d5950806fb9a06b0a277412 某天在网上闲逛,突然看到有篇介绍 Java 11 新特性的文章,顿时心里一惊,毕竟我对于 Java ...

  8. [JVM 相关] Java 新型垃圾回收器(Garbage First,G1)

    回顾传统垃圾回收器 HotSpot 垃圾收集器实现 Serial Collector(串型收集器) 使用场景,大多数服务器是单核CPU. 适用收集场景:1. 新生代收集(Young Generatio ...

  9. C# Xamarin 数据绑定入门基础

    目录 关于数据绑定 视图-视图绑定 绑定模式 简单的集合绑定 C# Xamarin 数据绑定入门基础 关于数据绑定 Xamarin 单向.双向绑定 Xaml绑定 C#代码绑定 在此之前,几段 伪代码 ...

  10. Hive安装、配置和使用

    Hive概述 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能. Hive本质是:将HQL转化成MapReduce程序. Hive处理的数据存储 ...