java编程那些事儿23—逻辑运算符.doc

上传人:scccc 文档编号:11186768 上传时间:2021-07-11 格式:DOC 页数:25 大小:62KB
返回 下载 相关 举报
java编程那些事儿23—逻辑运算符.doc_第1页
第1页 / 共25页
java编程那些事儿23—逻辑运算符.doc_第2页
第2页 / 共25页
java编程那些事儿23—逻辑运算符.doc_第3页
第3页 / 共25页
java编程那些事儿23—逻辑运算符.doc_第4页
第4页 / 共25页
java编程那些事儿23—逻辑运算符.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《java编程那些事儿23—逻辑运算符.doc》由会员分享,可在线阅读,更多相关《java编程那些事儿23—逻辑运算符.doc(25页珍藏版)》请在三一文库上搜索。

1、Java编程那些事儿17基本数据类型Java, 修饰符, 父类, 子类, public 3.5 基本数据类型 程序中最核心的就是一系列的数据,或者叫程序状态,计算机为了方便的管理数据,就为数据设定了一组类型,这样在为数据分配内存以及操作数据时都比较方便,这就是数据类型的由来。其实现实生活中也存在各种数据类型,例如数字型,字符型等,数字型又可以划分为整数型和小数型,只是没有很可以的划分罢了。 在数据类型中,最常用也是最基础的数据类型,被称作基本数据类型。可以使用这些类型的值来代表一些简单的状态。 3.5.1 概述 学习数据类型的目的就是在需要代表一个数值时,能够选择合适的类型。当然,有些时候好几

2、种类型都适合,那就要看个人习惯了。 学习数据类型需要掌握每种数据类型的特征,以及对应的细节知识,这样会有助于对类型的选择。所以在初次学习时,需要记忆很多的内容Java语言的基本数据类型总共有以下8种,下面是按照用途划分出的4个类别: 整数型:byte(字节型)、short(短整型)、int(整型)、long(长整型) 小数型:float(单精度浮点型)、double(双精度浮点型) 字符型 布尔型 3.5.2 整数型 整数型是一类代表整数值的类型。当需要代表一个整数的值时,可以根据需要从4种类型中挑选合适的,如果没有特殊要求的话,一般选择int类型。4种整数型区别主要在每个数据在内存中占用的空

3、间大小和代表的数值的范围。具体说明参看下表:类型名称关键字占用空间(字节)取值范围默认值字节型byte1-2727-10短整型short2-215215-10整型int4-231231-10长整型long8-263263-10 说明: 1、Java中的整数都是有符号数,也就是有正有负。 2、默认值指在特定的情况下才自动初始化,具体的情况后续将有叙述。 3、程序中的整数数值默认是int以及int以下类型,如果需要书写long型的值,则需要在数值后面添加字母L,大小写均可。 4、程序中默认整数是十进制数字,八进制数字以数字字符0开头,例如016、034等,十六进制数字以数字字符0和字母x(不区分大

4、小写)开头,例如0xaf、0X12等。 3.5.3 小数型 小数型是一类代表小数值的类型。当需要代表一个小数的值时,可以根据需要从以下2种类型中挑选合适的。如果没有特殊要求,一般选择double类型。 由于小数的存储方式和整数不同,所以小数都有一定的精度,所以在计算机中运算时不够精确。根据精度和存储区间的不同,设计了两种小数类型,具体见下表:类型名称关键字占用空间(字节)取值范围默认值单精度浮点型float4-3.4E+383.4E+380.0f双精度浮点型double8-1.7E+3081.7E+3080.0 说明: 1、取值范围以科学计数法形式进行描述。 2、在程序中,小数的运算速度要低于

5、整数运算。 3、float类型的小数,需要在小数后加字母f,不区分大小写,例如1.01f. 3.5.4 字符型 字符型代表特定的某个字符,按照前面介绍的知识,计算机中都是以字符集的形式来保存字符的,所以字符型的值实际只是字符集中的编号,而不是实际代表的字符,由计算机完成从编号转换成对应字符的工作。 Java语言中为了更加方便国际化,使用Unicode字符集作为默认的字符集,该字符集包含各种语言中常见的字符。 在程序代码中,字符使用一对单引号加上需要表达的字符来标识,例如A、a等,当然也可以直接使用字符编码,也就是一个非负整数进行表示。字符型参数表类型名称关键字占用空间(字节)默认值字符型cha

6、r20-216-10 说明: 1、字符型的编号中不包含负数。 2、字符型由于存储的是编号的数值,所以可以参与数学运算。 3、字符型可以作为Java语言中的无符号整数使用。 4、字符型的默认值是编号为0的字符,而不是字符0 3.5.5 布尔型 布尔型代表逻辑中的成立和不成立。Java语言中使用关键字true代表成立,false代表不成立。布尔型是存储逻辑值的类型,其实很多程序中都有逻辑值的概念,Java把逻辑的值用布尔型来进行表达。布尔型参数表类型名称关键字占用空间(字节)取值范围默认值布尔型booleantrue或falsefalse 说明: 1、布尔型占用的空间取决于Java虚拟机(JVM)

7、的实现,可能是1位也可能是1个字节。 3.5.6 小结 这里简单的介绍了8种基本数据类型的基本特征,在实际的程序设计中,可以根据需要选择对应的类型。 由于Java语言是一种强类型的语言,所以在使用数据类型是需要小心。Java编程那些事儿18变量和常量Java, 变量, 常量3.6 变量和常量 在程序中存在大量的数据来代表程序的状态,其中有些数据在程序的运行过程中值会发生改变,有些数据在程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变量和常量。 在实际的程序中,可以根据数据在程序运行中是否发生改变,来选择应该是使用变量代表还是常量代表。 3.6.1 变量 变量代表程序的状态。程序通过改

8、变变量的值来改变整个程序的状态,或者说得更大一些,也就是实现程序的功能逻辑。 为了方便的引用变量的值,在程序中需要为变量设定一个名称,这就是变量名。例如在2D游戏程序中,需要代表人物的位置,则需要2个变量,一个是x坐标,一个是y坐标,在程序运行过程中,这两个变量的值会发生改变。 由于Java语言是一种强类型的语言,所以变量在使用以前必须首先声明,在程序中声明变量的语法格式如下: 数据类型 变量名称; 例如:int x; 在该语法格式中,数据类型可以是Java语言中任意的类型,包括前面介绍到的基本数据类型以及后续将要介绍的复合数据类型。变量名称是该变量的标识符,需要符合标识符的命名规则,在实际使

9、用中,该名称一般和变量的用途对应,这样便于程序的阅读。数据类型和变量名称之间使用空格进行间隔,空格的个数不限,但是至少需要1个。语句使用“;”作为结束。 也可以在声明变量的同时,设定该变量的值,语法格式如下: 数据类型 变量名称 = 值; 例如:int x = 10; 在该语法格式中,前面的语法和上面介绍的内容一致,后续的“=”代表赋值,其中的“值”代表具体的数据。在该语法格式中,要求值的类型需要和声明变量的数据类型一致。 也可以一次声明多个相同类型的变量,语法格式如下:数据类型 变量名称1,变量名称2,变量名称n;例如:int x,y,z;在该语法格式中,变量名之间使用“,”分隔,这里的变量

10、名称可以有任意多个。 也可以在声明多个变量时对变量进行赋值,语法格式如下: 数据类型 变量名称1=值1,变量名称2=值2,变量名称n=值n; 例如:int x = 10,y=20,z=40; 也可以在声明变量时,有选择的进行赋值,例如:int x,y=10,z;以上语法格式中,如果同时声明多个变量,则要求这些变量的类型必须相同,如果声明的变量类型不同,则只需要分开声明即可,例如: int n = 3; boolean b = true; char c; 在程序中,变量的值代表程序的状态,在程序中可以通过变量名称来引用变量中存储的值,也可以为变量重新赋值。例如: int n = 5; n = 1

11、0; 在实际开发过程中,需要声明什么类型的变量,需要声明多少个变量,需要为变量赋什么数值,都根据程序逻辑决定,这里列举的只是表达的格式而已。 3.6.2 常量 常量代表程序运行过程中不能改变的值。 常量在程序运行过程中主要有2个作用: 代表常数,便于程序的修改 增强程序的可读性 常量的语法格式和变量类型,只需要在变量的语法格式前面添加关键字final即可。在Java编码规范中,要求常量名必须大写。 则常量的语法格式如下: final 数据类型 常量名称 = 值; final 数据类型常量名称1 = 值1, 常量名称2 = 值2,常量名称n = 值n; 例如: final double PI =

12、 3.14; final char MALE=M,FEMALE=F; 在Java语法中,常量也可以首先声明,然后再进行赋值,但是只能赋值一次,示例代码如下: final int UP; UP = 1; 常量的两种用途对应的示例代码分别如下: 代表常数 final double PI = 3.14; int r =5; double l = 2 * PI * r; double s = PI * r * r; 在该示例代码中,常量PI代表数学上的值,也就是圆周率,这个是数学上的常数,后续的变量r代表半径,l代表圆的周长,s代表圆的面积。 则如果需要增加程序计算时的精度,则只需要修改PI的值3.1

13、4为3.1415926,重新编译程序,则后续的数值自动发生改变,这样使代码容易修改,便于维护。 增强程序的可读性 int direction; final int UP = 1; final int DOWN = 2; final int LEFT = 3; final int RIGHT = 4; 在该示例代码中,变量direction代表方向的值,后续的四个常量UP、DOWN、LEFT和RIGHT分辨代表上下左右,其数值分别是1、2、3和4,这样在程序阅读时,可以提高程序的可读性。 3.6.3 语句块 在程序中,使用一对大括号包含的内容叫做语句块,语句块之间可以互相嵌套,嵌套的层次没有限制

14、,例如: int a; 语句块的嵌套: int b; char c; 以上代码只是演示语法,没有什么逻辑意义。在后续的语法介绍中,还会有语句块的概念,就不再重复介绍了。 3.6.4 变量的作用范围 每个变量都有特定的作用范围,也叫做有效范围或作用域,只能在该范围内使用该变量,否则将提示语法错误。通常情况下,在一个作用范围内部,不能声明名称相同的变量。 变量的作用范围指从变量声明的位置开始,一直到变量声明所在的语句块结束的大括号为止。例如以下代码: int a = 10; a = 2; char c; 在该代码中,变量a的作用范围即从第三行到第五行,变量c的作用范围即从第六行到第七行。 3.6.

15、5 常量的作用范围 常量的作用范围和变量的作用范围规则完全一致。 3.6.6 总结 对于变量和常量的内容就介绍这么,下面是一个完整的代码,可以在JDK或Eclipse中进行编译和运行。代码文件名为VariableAndConst.java,示例代码如下: public class VariableAndConst public static void main(String args) int n = 0; char c = A; System.out.println(n); n = 10; System.out.println(n); System.out.println(c); 说明:在该

16、代码中,System.out.println的功能是输出变量中存储的值Java编程那些事儿19数据类型转换Java, 数据类型转换3.7 数据类型转换 Java语言是一种强类型的语言。强类型的语言有以下几个要求: 变量或常量必须有类型 要求声明变量或常量时必须声明类型,而且只能在声明以后才能使用。 赋值时类型必须一致 值的类型必须和变量或常量的类型完全一致。 运算时类型必须一致 参与运算的数据类型必须一致才能运算。 但是在实际的使用中,经常需要在不同类型的值之间进行操作,这就需要一种新的语法来适应这种需要,这个语法就是数据类型转换。 在数值处理这部分,计算机和现实的逻辑不太一样,对于现实来说,

17、1和1.0没有什么区别,但是对于计算机来说,1是整数类型,而1.0是小数类型,其在内存中的存储方式以及占用的空间都不一样,所以类型转换在计算机内部是必须的。Java语言中的数据类型转换有两种: 自动类型转换 编译器自动完成类型转换,不需要在程序中编写代码。 强制类型转换 强制编译器进行类型转换,必须在程序中编写代码。 由于基本数据类型中boolean类型不是数字型,所以基本数据类型的转换是出了boolean类型以外的其它7种类型之间的转换。下面来具体介绍两种类型转换的规则、适用场合以及使用时需要注意的问题。 3.7.1 自动类型转换 自动类型转换,也称隐式类型转换,是指不需要书写代码,由系统自

18、动完成的类型转换。由于实际开发中这样的类型转换很多,所以Java语言在设计时,没有为该操作设计语法,而是由JVM自动完成。 转换规则从存储范围小的类型到存储范围大的类型。 具体规则为: byteshort(char)intlongfloatdouble 也就是说byte类型的变量可以自动转换为short类型,示例代码: byte b = 10; short sh = b; 这里在赋值时,JVM首先将b的值转换为short类型,然后再赋值给sh.在类型转换时可以跳跃。示例代码: byte b1 = 100; int n = b1; 注意问题 在整数之间进行类型转换时,数值不发生改变,而将整数类型

19、,特别是比较大的整数类型转换成小数类型时,由于存储方式不同,有可能存在数据精度的损失。 3.7.2 强制类型转换 强制类型转换,也称显式类型转换,是指必须书写代码才能完成的类型转换。该类类型转换很可能存在精度的损失,所以必须书写相应的代码,并且能够忍受该种损失时才进行该类型的转换。 转换规则 从存储范围大的类型到存储范围小的类型。 具体规则为: doublefloatlongintshort(char)byte 语法格式为:(转换到的类型)需要转换的值 示例代码: double d = 3.10; int n = (int)d; 这里将double类型的变量d强制转换成int类型,然后赋值给变

20、量n.需要说明的是小数强制转换为整数,采用的是“去1法”,也就是无条件的舍弃小数点的所有数字,则以上转换出的结果是3.整数强制转换为整数时取数字的低位,例如int类型的变量转换为byte类型时,则只去int类型的低8位(也就是最后一个字节)的值。 示例代码: int n = 123; byte b = (byte)n; int m = 1234; byte b1 = (byte)m; 则b的值还是123,而b1的值为-46.b1的计算方法如下:m的值转换为二进制是10011010010,取该数字低8位的值作为b1的值,则b1的二进制值是11010010,按照机器数的规定,最高位是符号位,1代表

21、负数,在计算机中负数存储的是补码,则该负数的原码是10101110,该值就是十进制的-46. 注意问题 强制类型转换通常都会存储精度的损失,所以使用时需要谨慎。 3.7.2 其它 后续的复合数据类型,如类和接口等,也存在类似的转换。Java编程那些事儿20空白、语句结束和注释Java3.8 空白 在前面的内容中,已经介绍了在编写代码中,单词和单词之间需要使用空格进行间隔,至于空格的数量则不限制。 而实际的编码中,为了使代码的结构清晰,一般需要在代码的前面加入一定数量的空格,例如如下格式: public class Blank public static void main(String arg

22、s) int n; n = 10; System.out.println(n); 在该代码中,除了第一行和最后一行外,每行都包含一定数量的空格,这种编码的格式称为代码缩进。 在实际代码中,只要存在包含关系,则代码就应该缩进,语句块是最典型的包含关系之一。说明:在编译时,每行开始的空格都会被忽略掉。 3.9 语句结束 Java语法中,语句以“;”作为行结束符,例如: int n = 2; 通常情况下,代码中每行只写一句代码,但是也可以写多句,例如: int n = 2; byte b = 10; 但是一般为了代码结构清楚,只在一行中书写一句代码。 有些时候代码本身比较长,则也可以把一句代码写在多

23、行,而代码语句结束的地方书写一个“;”即可。 在实际代码中,一般大括号开始和结束的地方,以及大部分小括号结束的地方都不需要书写“;”来进行结束。 3.10 注释 注释(comment)是对代码功能和用途的说明。在程序中编写适当的注释,将使程序代码更容易阅读,增强代码的可维护性。 注释在程序编译时都会被忽略,所以注释不会增加class文件的大小。 Java语言中注释的语法有三种:单行注释、多行注释和文档注释。 3.10.1 单行注释 单行注释指只能书写一行的注释。单行注释属于注释中最简单的语法格式,用于对于代码进行简单的说明,例如变量功能等。 单行注释的语法格式为:/注释内容注释以两个斜线开始,

24、该行后续的内容都是注释的内容,注释内容不能换行。 单行注释一般书写在需要说明的代码的上一行,或者该行代码的结束处,示例结构如下: /循环变量 int i = 0; char sex; /性别 3.10.2 多行注释 多行注释指可以书写任意多行的注释。多行注释一般用于说明比较复杂的内容,例如程序逻辑或算法实现原理等。 多行注释的语法格式为: /* 注释内容 */ 注释以一个斜线和一个星号开始,后续是注释内容,注释内容可以书写任意多行,最后注释以一个星号和一个斜线结尾。 很多多行注释在每行以星号开始,这个不是语法必需的。 3.10.3 文档注释 文档注释指可以被提取出来形成程序文档的注释格式,这是

25、Java语言有特色的注释格式。一般对于程序程序的结构进行说明,例如类、属性、方法和构造方法进行说明,这些概念在后续将详细介绍。 文档注释的语法格式为: /* 注释内容*/ 注释以一个斜线和两个星号开始,后续是注释内容,注释内容可以书写任意多行,最后注释以一个星号和一个斜线结尾。 在后续内容中还将完善该注释的语法格式。 3.10.4 其它 在规范的代码中,一般有10%-20%的注释,也就是每100行代码中包含10-20行注释的内容,但是国内很多开发公司都远远达不到这个要求。 另外需要特别注意的是,在实际的项目开发中,在修改代码后,一定要对应的修改注释的内容,保持代码和注释内容的同步。Java编程

26、那些事儿21算术运算符Java, 运算符, 算数运算符, Java基础第四章 运算符 计算机,顾名思义,就是计算的机器,所以在编程中,也要进行大量的计算(运算),运算的符号简称为运算符。 由于计算机可以进行各种运算,所以提供了很多的运算符号,这些运算符号一部分是现实里经常使用的,也有不少是计算机中新增的。 学习运算符,首先要掌握每种运算的运算规则,然后在适当的时候使用对应的运算符。这需要对于运算符最够的熟悉,并具备一定的计算机基础知识。 运算符的种类很多,为了方便学习,以下按照类别来进行介绍。 4.1 算术运算符 算术运算符,也称数学运算符,是指进行算术运算的符号,语法中对应的符号、功能以及说

27、明参看下表表4-1 算术运算符符号 名称 功能说明+ 加 加法运算- 减 减法运算* 乘 乘法运算/ 除 除法运算% 取余 求两个数字相除的余数 在算术运算符中,+、-、*和/的运算规则和数学基本相同,在四则运算中,乘除优先于加减,计算时按照从左向右的顺序计算,不同的地方在于: 程序中乘号不能省略,在数学上可以写y = 2x,但是程序中必须写成y=2 *x. 运算结果的类型和参与运算的类型中最高的类型一致,例如整数加整数还是整数。影响最大的是除法,整数除整数结果还是整数,例如10/3的结果是3,而不是3.333. 接着来说说取余运算符,%的功能是取两个数字相除的余数,例如10%3表示计算10除

28、以3的余数,则结果应该是1.取余运算在编程中的用途也比较大,比较常见的用途有:控制规则变化,控制随机数字的区间等。 算术运算符基本使用的示例代码如下: int n = 3 + 5; int a = 10; int b = 20; int c = a * b; double d = 100.2; double d1 = d + a; 在算术运算符部分,需要特别注意的一个语法现象是“晋升”。晋升指低于int的3种数字类型(byte、short和char)进行算术运算后,结果会自动提升成int类型。示例代码如下: byte b1 = 10; byte b2 = 20; byte b3 = b1 +

29、b2; /语法错误,类型不匹配 int n = b1 + b2; /或者 byte b3 = (byte)(b1 + b2); 在程序中使用算术运算符实现程序中的数学运算,在运算时也可以加入小括号,和数学一样,在程序中也是先计算小括号内部的,然后再计算小括号外部的内容,示例代码如下: int a = 1; int b = 2; int c = 3; int d = c * (a + b) + c; 另外一个需要注意的就是,变量在计算时必须被赋值,否则直接报语法错误,例如: int n; int m = 2 * n;Java编程那些事儿22比较运算符Java, 比较运算符, 运算符 4.2 比较

30、运算符 比较运算符实现数据之间大小或相等的比较。 比较运算符运算的结果是一个boolean类型的值,如果比较结果成立则为true,否则为false. Java语言中比较运算符的表示和功能见下表4-2.表4-2 比较运算符符号名称功能说明 大于比较左侧数字是否大于右侧数字=大于等于比较左侧数字是否大于或等于右侧数字=的意思是大于或等于,两者成立一个即可,所以5=5成立。 在数学上表示的区间1,10),也就是数字大于等于1同时小于10,在程序中不能写成如下格式:1=n 3); /该条件成立,则将值true赋值给变量b boolean c = (b = true); /条件成立,结果为true在实际

31、代码中,数值、变量以及运算结果都可以直接参与比较,只是程序中为了增强可读性,有些时候需要将比较分开进行书写。 比较运算符是程序设计中实现数据比较的基础,也是很多逻辑实现的基础,在程序逻辑中,经常通过比较一定的条件,来判断后续的程序该如何执行。Java编程那些事儿23逻辑运算符Java, 运算符, 算数运算符, Java基础, 逻辑运算符 4.3 逻辑运算符 逻辑运算符是指进行逻辑运算的符号。逻辑运算主要包括与(and)、或(or)和非(not)三种,在程序中主要用来连接多个条件,从而形成更加复杂的条件。 逻辑运算符的运算结果是boolean类型。 参与逻辑运算的数据也必须是boolean类型。

32、 关于逻辑运算符的种类和说明参看表4-3.表4-3 逻辑运算符符号名称功能说明&逻辑与两个条件同时为true才为true,否则为false|逻辑或两个条件有一个为true则为true,否则为false!逻辑非只操作一个数据,对数据取反 逻辑运算符使用示例代码: boolean b1 = true; boolean b2 = false; boolean b3 = b1 & b2; /则b3的值是false b3 = b1 | b2; /则b3的值是true b3 = !b1; /则b3的值是false 在实际程序中,可以根据逻辑的需要使用对应的逻辑运算符号。实际使用示例: 表示变量n是否属于0

33、,10)区间int n = 4;boolean b = (n =0) & (n10);对于变量n来说,只要n同时满足大于等于零,且小于10,则位于0,10)区间,由于程序中无法书写0=n= 0) & (n 10); 这里,对于属于该区间的条件取反,则可以获得不属于该区间的条件。 另一种写法是: int n = 4; boolean b = (n = 10); 这里做了一个简单的变通,如果变量n不属于该区间,则在数学上只需要满足n小于0或者n大于等于10的任何一个条件即可,这样的或者关系在程序中实现时使用逻辑或实现。 在程序设计中,根据逻辑需要,使用对应的逻辑运算符,可以实现相对比较复杂的组合条

34、件,从而实现对应程序的功能。 最后说一下&和&的区别,其实在进行逻辑与运算时,既可以使用&也可以使用&,在功能上本身没有区别。两者区别的位置在,对于&来说,如果左侧条件为false,也会计算右侧条件的值,而对于&来说,如果左侧的条件为false,则不计算右侧的条件,这种现象被称作短路现象。 示例代码: int n = -1; boolean b1 = (n = 0) & (n = 0) & (n = 0这个条件不成立,则n 10根本不会被执行。当然,两者得到的最终结果是一样的。 对于现在的代码来说,区别不大,但是如果后续的条件是一个方法(方法的概念后续将介绍到),则将影响程序逻辑。 验证&和&功能的示例代码如下: public class Test public static void main(String args) int n = 10; boolean b = (n 8) & (n = 1) != 0); int m = 20; boolean b1 = (m 8) & (m = 1) != 0); System.out.println(n); System.out.println(m);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1