1、【本章导读本章导读】l本章主要介绍数据类型、数组、字符串、运算符与表达式、流程控制语句。这些都是Java语言中最为基础的部分。对于Java初学者,首先要理解这些基本概念,掌握Java的基本语法,为今后的学习打下必要的基础。【本章要点本章要点】数据类型 数组字符串运算符与表达式流程控制语句2.1 Java语言的数据类型语言的数据类型类型分类类型名称简单数据类型布尔型字符型整型byteshortintlong浮点型(实型)floatdouble复合数据类型类接口数组booleancharclassinterafce标识符和关键字标识符和关键字l用于标识各种对象的名称的有效字符序列称为标识符。l构成
2、规则:在Java中,标识符以字母、下划线或$开头,由字母、下划线、$和数字组成。严格区分大小写,没有长度限制。l分类:关键字,用户自定义标识符常量常量l在程序的运行期间不能被修改的量。l分类:普通常量,标识符常量l标识符常量的声明格式:final 数据类型 常量名=数值 如:final int a=345 变量变量l变量是Java程序中的基本存储单元l声明格式:数据类型 变量名=数值,变量名=数值l变量的数据类型决定了变量所能容纳的数值类型和它能进行的运算操作类型变量变量l变量名命名规则l变量的赋值 (1)在定义同时进行赋值 (2)先定义后赋值l在Java程序中,定义的变量若是还没有赋初值,J
3、ava会自动给予一个默认值。但不适用于局部变量。不同数据类型的默认值不同数据类型的默认值数据类型默认值 byte0short0int0long0Lfloat0.0fdouble0.0dcharu0000booleanfalse变量的作用域变量的作用域l变量的作用域是指它的存在范围,只有在这个范围内,程序代码才能访问它。l局部变量:定义在方法中或方法内的一个代码块中,其作用域为它所在的代码块。整型整型l整型变量:byte b;short s;int i;long l;变量类型所占内存位数取值范围byte8-27(27-1)short16-215(215-1)int32-231(231-1)lon
4、g64-263(263-1)整型整型整型常量有三种形式:l十进制整数:如236,-10,0l八进制整数:以0开头,如012l十六进制整数:以0 x开头,如0 x12浮点型浮点型l浮点型变量:float myFloat;double myDouble;类型所占内存位数取值范围float32-3.4e383.4e038double64-1.7e081.7e308浮点型浮点型浮点型常量有两种表示法:(1)十进制表示法:3.25,76.32f,-5.8f,256.(2)科学表示法:5.24e-8f (=5.24*10-8)-3.1425e+2 (=-3.1425*102)字符型字符型lJava对字符采
5、用Unicode字符编码。l由于计算机的内存只能存储二进制数据,因此必须为各个字符进行编码。l所谓字符编码,是指用一串二进制数来表示特定的字符。字符型字符型lASCII编码:是一个7位字符集,能表示128种字符,扩展的8位字符集ISO-Latin-1能表示256种字符。lUnicode编码:能表示世界各地官方语言中所必须的可显示字符集,Java采用16位的Unicode编码来表示字符。能表示65536种字符。字符型字符型l字符型常量 h,Hl转义字符序列 Java还允许使用一种特殊形式的字符常量来表示一些难以用一般字符来表示的字符,这种特殊形式的字符是以一个“”开头的字符序列,称为转义字符。J
6、ava转义字符转义字符 转义字符意义ddduxxxx”rnfbt1到3位八进制数所表示的字符1到4位十六进制数所表示的字符单引号字符双引号字符反斜杠字符回车换行走纸换页退格横向跳格(水平制表符)字符型字符型l字符变量 char c=a;lchar类型的值能够被自动转换成int型,并且能够进行加减运算。l字符串常量 String str=“This is a boy.”布尔型布尔型lJava的布尔型变量的取值范围只有两个值:false(假)和true(真)。lJava中的布尔型不能转换成其他类型。类型转换类型转换l自动类型转换整型、实型和字符型数据需要进行混合运算时,首先需要把不同类型的数据转化
7、为同一类型,然后才能进行运算。转换时,系统将按照数据类型的表示范围由小到大的转换原则自动进行。数据类型的表示范围由小到大的顺序依次为:小 大byte short char int long float double类型转换类型转换l强制类型转换当表示范围大的数据类型要转换成表示范围小的数据类型时,需要用到强制类型转换,强制类型转换的语法形式为:(目标类型)要转换的变量名或值int i=3;byte b=(byte)i;/int型变量i强制转换为byte型类型转换类型转换有时当两个整数相除时,系统会把这种运算归为整数类型的运算,因而会自动截去小数部分,使运算结果保持为整数。这显然不是预期的结果,
8、因此想要得到运算的结果为实型数,就必须将两个整数中的一个(或两个)强制转换为实型,此时下面的三种写法均可行:l(float)a/b la/(float)b l(float)a/(float)b 只要在变量前面加上欲转换的类型,运行时系统就会自动将这一行语句里的变量进行类型转换处理,但不会影响该变量原先定义的类型。2.4 运算符与表达式运算符与表达式 l对各中类型的数据处理过程称为运算。l表示不同运算的符号成为运算符。l参与运算的数据称为操作数。l表达式由标识符、常量、变量和运算符组成,是程序的基本组成部分。算术运算算术运算类别名称运算符运算规则运算对象表达式实例运行结果一元正取原值整型(或)浮
9、点型+3+3负取负值-4-4二元加加法4+59减减法8-53乘*乘法整型(或)浮点型4*936除除法7.0/23.5模%整除取余 整型浮点型8%32n传统算术运算 算术运算算术运算l自增自减运算符 如果要进行加1或者减1的运算,可以使用一种快捷运算符,又称为自增自减运算符:“+”和“-”。例如:i=i+1;它等同与下面的语句:i+;算术运算算术运算运算符名称示例说明+自加1a+;a先参加运算再加1+a;a先加1后参与运算-自减1a-;a先参加运算再加1-a;a先参加运算再加1算术运算算术运算l算术运算的优先规则(从高到低):(+、-同一级别)(*、/、%同一级别)(+、-同一级别),同一级别内
10、部,按照出现的先后顺序执行计算。关系运算关系运算l 关系运算实际上是“比较运算”,将两个值通过关系运算符进行比较,关系运算符都是二元运算符,由关系运算符组成的关系表达式的计算结果为布尔类型。关系运算关系运算名称运算符运算规则运算对象表达式实例运行结果小于满足则为真不满足则为假整型(或)实型(或)字符型等23true小于或等于=6abfalse大于或等于=7.8=5.6true等于=9=9true不等于!=8!=8false逻辑运算逻辑运算l逻辑运算符经常用来连接关系表达式,对关系表达式的值进行逻辑运算,因此逻辑运算符的运算对象必须是布尔型数据,其逻辑表达式的运行结果也是布尔型数据。lJava的
11、逻辑运算符有三种。逻辑运算逻辑运算类别名称运算符运算规则运算对象一元逻辑非!参看下表布尔型二元逻辑与&逻辑或|逻辑运算逻辑运算ab!aa&ba|bfalsefalsetruefalsefalsefalsetruefalsetruetruefalsefalsefalsetruetruetruetruetrue逻辑运算逻辑运算l在Java中,运算符&和|的运算规则遵循一种在电工学中称为“短路”的执行方式,即对于逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的结果时,才执行该运算符。逻辑运算逻辑运算l 逻辑表达式往往可用于表示比较复杂的条件。例如要判
12、别某一年year是否是闰年,闰年的判别条件是:能被4整除但不能被100整除,或者能被400整除。可以用一个逻辑表达式来表示:(year%4=0&year%100!=0)|year%400=0当year为某一整数值时,上述表达式值为true,则year年为闰年,否则为非闰年。位运算位运算l位运算符用来对以二进制位为单位的数据进行操作和运算,其结果为整型值。运算符说明用法举例&转换为二进制数进行与运算1&1=1,1&0=0,0&1=0,0&0=0|转换为二进制数进行或运算1|1=1,1|0=1,0|1=1,0|0=0转换为二进制数进行异或运算11=0,10=1,01=1,00=0 进行数值的相反数
13、减1运算100=-100-1=-101向右移位151=7向左移位15无符号向右移位151=7赋值运算符赋值运算符l当需要为各种不同的变量赋值时,就必须使用赋值运算符“=”,这里的“=”不是“等于”的意思,而是“赋值”的意思。la1=3;la1=a1+1;lj=i=3;复合赋值运算符复合赋值运算符 运算符用法举例说明意义+=a+=ba+b的值存放到a中a=a+b-=a-=ba-b的值存放到a中a=a-b*=a*=ba*b的值存放到a中a=a*b/=a/=ba/b的值存放到a中a=a/b%=a%=ba%b的值存放到a中a=a%b条件运算符条件运算符l条件运算符是三元运算符,其使用的语法形式为:l?
14、e1:e2l其中表达式值的类型为逻辑型,若表达式的值为真,则返回e1的值;表达式值为非真,返回e2的值。运算符的优先级运算符的优先级lJava语言规定了运算符的优先级与结合性。在表达式求值时,先按运算符的优先级别由高到低的次序执行,例如,算术运算符中采用“先乘除后加减”。如果在一个运算对象两侧的优先级别相同,则按规定的“结合方向”处理,称为运算符的“结合性”。Java规定了各种运算符的结合性,如算术运算符的结合方向为“自左至右”,即先左后右。Java中也有一些运算符的结合性是“自右至左”的。运算符的优先级运算符的优先级例如:当 a=3,b=4 时若 k=a 5+b,则 k=2(先计算a-5,再
15、计算-2+b)若 k=a+=b-=2,则 k=5(先计算b-=2,再计算a+=2)2.5 流程控制语句流程控制语句 l顺序结构按照语句出现的先后次序依次执行。l选择结构在多条执行路径中选择一条执行。l循环结构在满足一定的条件下反复执行某段程序。顺序结构顺序结构l顺序结构开始语句1语句2语句n结束选择结构选择结构l单分支l语法if(条件表达式)语句块表达式语句块true选择结构选择结构l双分支结构l语法 if(条件表达式)语句块1 else 语句块2truefalse表达式语句块2语句块1选择结构选择结构l嵌套if(多分支结构)l语法:if()if()语句1;else 语句2;else if()
16、语句3 else 语句4;选择结构选择结构lifelse if(多分支结构)l语法:if(条件1)语句块1else if(条件2)语句块2else if(条件n)语句块nelse语句块n+1truetruetruefalsefalsefalse表达式1表达式2表达式n语句块1语句块2语句块n语句块n+1选择结构选择结构lswitch语句l语法:switch case 数值1:语句块1 break;case 数值2:语句块2 break;case 数值n:语句块n break;default:语句块n+1falsetruetruetruefalsefalse数 值1数 值2数 值n语句块1语句块
17、2语句块ndefaultbreakbreakbreakswitch语句说明语句说明l执行switch语句时,首先计算表达式的值,其类型是整型或字符型。表达式的值与各个case的常量作比较,若相同,则执行该case后面的语句块;ldefault子句为可选。如果表达式的值与任何一个case的常量都不相同,则执行default之后的语句快,若没有default子句,则什么都不执行。switch语句说明语句说明l break语句的作用是当执行完一个case分支后,从switch结构中退出。l如果没有break语句,当程序执行完匹配的case子句块后,还会继续执行下一个语句块,直到遇到break语句或遇
18、到“”。循环结构循环结构l当在满足一定条件的前提下需要反复执行一些相同的操作时,使用循环结构语句便是最好的选择。lJava语言提供的循环结构语句包括for语句、while语句和do-while语句。l作为一个循环结构来说,应该包含如下内容:l赋初值部分:用于设置循环控制的一些初始条件。l循环体部分:需要反复执行的代码(块),当然也可以是一句单一的语句。l循环控制变量增减方式部分:用于更改循环控制变量的状况。l判断条件部分:是一个返回逻辑(布尔)值的表达式,用于判断是否满足循环终止条件,以便及时结束循环。while语句语句 l语法:while(判断条件)(循环体)语句块;循环控制变量增(减)值;
19、l利用while循环语句计算从1累加到100的结果。判断条件循环体truefalse循环控制变量赋初值循环控制变量增(减)值do-while语句语句 l语法:do 循环体;while(循环条件);l利用do-while循环语句计算从1累加到100的结果。falsetrue判断条件循环体;循环控制变量增(减)值;赋循环控制变量初值do-while语句语句l在不知道一个循环体会被重复执行多少次的情况下,可以使用while循环结构或者do-while循环语句。l编程序计算当n为多大时下列不等式成立。10131211+nfor循环语句循环语句 l语法:for(表达式1;表达式2;表达式3)循环体;循环
20、变量赋初值循环条件循环变量增减值判断条件循环体truefalse赋循环控制变量初值循环控制变量增(减)值for循环语句循环语句lfor 循环语句的适应于明确知道重复执行次数的情况。l利用for循环语句计算从1累加到100的结果。循环的嵌套循环的嵌套l当循环中循环体又是一个循环结构,这种形式称为循环的嵌套。l根据嵌套的层数不同,可分为二重循环、三重循环等。l多层循环的执行过程:外层循环每执行一次,内层循环就要从头开始执行一轮。输出九九乘法表输出九九乘法表public class MuiTable public static void main(String args)int i,j;for(i=
21、1;i=9;i+)/外层循环 for(j=1;j=9;j+)/内层循环 System.out.print(i+*+j+=+(i*j)+t);System.out.println();转向控制语句转向控制语句l转向控制语句用在选择结构和循环结构中,使程序员更方便地控制程序执行的方向。l三种转向控制语句:break,continue,return语句。break语句语句l用在switch语句和循环语句中。l作用:使程序的流程从一个语句内部转移出去。l语法:break标号l标号的定义方法标号:循环块l使用带标号的break语句,可以从多重循环内部跳出所有的循环。continue语句语句l用在循环语句
22、中。l作用:终止当前这一轮的循环,不再执行它后面的语句,直接进入下一轮的循环。l语法:continue标号l标号的定义方法标号:循环块l使用带标号的continue语句,将执行由标号标明的循环语句的下一轮循环。continue语句语句public class TestContinuepublic static void main(String args)int i,j,sum;outer:for(i=1;i4;i+)for(j=1;ji)continue outer;sum=i+j;System.out.println(i+j+=+sum);return语句语句l用在方法中。l作用:终止当前方
23、法的执行,返回调用这个方法的程序中。l语法:return表达式;l带参数的return语句后跟一个表达式,当程序执行到一个语句时,就计算这个表达式的值,然后将这个表达式的值返回到调用该方法的程序中。return语句语句public class TestReturnpublic static void main(String args)TestReturntr=new TestReturn();System.out.println(无返回值类型的return语句测试);tr.test1();System.out.println(有返回值类型的return语句测试);int n=tr.test2();System.out.println(n=+n);public void test1()for(int i=1;i10;i+)if(i=4)return;System.out.println(i=+i);public int test2()return 10;