版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章程序数据变量和计算第1页,共56页,2023年,2月20日,星期三第二章程序、数据、变量和计算本章将介绍Java语言的基础知识,包括基本语言要素、基本数据类型、变量、数组、运算符等。扎实地掌握这些内容对后续学习是很有必要的。第2页,共56页,2023年,2月20日,星期三标识符(Identifier)保留字(ReservedWord)1、Java语言基本元素第3页,共56页,2023年,2月20日,星期三程序员对程序中的各个元素加以命名时使用的命名记号称为标识符(identifier)包括:类名、变量名、常量名、方法名、…
Java语言中,标识符是以字母,下划线(_),美元符($)开始的一个字符序列,后面可以跟字母,下划线,美元符,数字。合法的标识符
identifieruserNameUser_Name_sys_value$change非法的标识符
2mail room# class
Java语言是一种区分大小写字母
republican≠Republican1、Java语言基本元素 ——标识符第4页,共56页,2023年,2月20日,星期三具有专门的意义和用途,不能当作一般的标识符使用,这些标识符称为保留字(reservedword)。
abstractbreakbytebooleancatchcaseclasscharcontinuedefaultdoubledoelseextendsfalsefinalfloatforfinally ifimportimplementsintinterfaceinstanceoflonglengthnativenewnullpackageprivateprotectedpublicfinalreturnswitchsynchronizedshortstaticsupertrytruethisthrowthrowsthreadsafetransientvoidwhile1、Java语言基本元素 ——保留字第5页,共56页,2023年,2月20日,星期三数据和返回值类型:int,void,return……包/类/成员/接口:package,class,interface访问控制:public,private,protected循环及循环控制:if,switch,break例外处理:throw,try,finally保留词(无含义但不能使用):goto,const1、Java语言基本元素 ——保留字:基本分类第6页,共56页,2023年,2月20日,星期三在Java中,true、false和null都是小写的。区别于C++中大写的TRUE、FALSE和NULL。所有的数据类型所占用的字节数都是固定的,并且和实现无关的,因此在Java中没有sizeof操作符。1、Java语言基本元素 ——保留字:注意事项第7页,共56页,2023年,2月20日,星期三2、Java数据类型
常量(Constant)变量(Variable)数据类型(DataType)基本数据类型(PrimaryDataTypes)复合数据类型(CompositeDataTypes)第8页,共56页,2023年,2月20日,星期三Java中的常量值是用文字串表示的,它区分为不同的类型,如整型常量123,实型常量1.23,字符常量‘a’,布尔常量true、false以及字符串常量"Thisisaconstantstring."。与C、C++不同,Java中不能通过#define命令把一个标识符定义为常量,而是用关键字final来定义2、Java数据类型 ——常量(Constant
)第9页,共56页,2023年,2月20日,星期三定义常量的语法格式(C、C++
#define命令
)
finalTypevarName=value[,varName[=value]…];
关键字
类型常量名常量值finalintglobalAccount=100,nationalAccount=50;finaldoublePI=3.14159布尔常量truefalse整型常量一般常量:32bit长整型常量:64bit(88L)十进制数:非0开头的正负整数105,-23八进制数:0开头的正负整数017(15),-023(-19)十六进制:0x开头的正负整数0x2F(47),-0xa8(-168)2、Java数据类型 ——常量(Constant
)第10页,共56页,2023年,2月20日,星期三浮点常量一般浮点常量(32bit)3.14F6.18E3F双精度浮点数(64bit)7.56D6.02E23(D可省)char型常量:用单引号界定‘’,‘a’采用Unicode码,从‘\u0000’-‘\uFFFF’,其中‘\u00’-‘\uFF’为ASCII码字符串常量:用双引号界定“HELLO,WORLD”+号的特殊用法“Hello”+“World”即“HelloWorld”若a=4,则“a=”+a即“a=4”2、Java数据类型 ——常量(Constant
)第11页,共56页,2023年,2月20日,星期三特殊字符引用方法对应Unicode码 意义 ‘\b’ ‘\u0008’ 退格 ‘\t’ ‘\u0009’横向跳格、水平制表符tab‘\n’ ‘\u000a’ 换行 ‘\r’ ‘\u000d’ 回车 ‘\”’ ‘\u0022’ 双引号‘\’’ ‘\u0027’ 单引号‘\\’ ‘\u005c’ 反斜线2、Java数据类型 ——常量(Constant
)第12页,共56页,2023年,2月20日,星期三程序中的基本存储单元变量声明:先声明,后使用声明变量的格式(包括变量名、变量类型和作用域几个部分)typevariableName1,variableName2,···;typevariableName1[=initValue],variableName2[=initValue],···;
类型变量名[变量初始值]如:doublea,b,c;intnSecond=10;
2、Java数据类型 ——变量第13页,共56页,2023年,2月20日,星期三Java中变量的缺省初值都是确定的:布尔变量的初值为:false整数变量的初值为:0浮点数变量的初值为:0.0引用(复合)变量的初值为:null在方法实现中定义的变量必须显式的初始化。变量的作用域指可访问变量的一段代码,在程序中不同的地方声明的变量具有不同的作用域:局部变量、类变量、方法参数、例外处理参数。在一定的作用域内,变量名必须唯一。2、Java数据类型 ——变量第14页,共56页,2023年,2月20日,星期三Unicode码字符集是一种标准字符集。开发Unicode码字符集的目的是,使得它能对几乎所有语言所必需的字符进行编码例2、Java数据类型 ——变量名和Unicode码第15页,共56页,2023年,2月20日,星期三Javatypesystemprimitivereferencenullcharnumericbooleanclassinterfacearrayintegralfloating-pointbyteshortintlongfloatdouble2、Java数据类型 ——数据类型基本数据类型复合数据类型第16页,共56页,2023年,2月20日,星期三所有基本类型所占的位数都是确定的,并不因操作系统的不同而不同。所有基本类型的关键词都是小写的。数据类型 所占位数 数的范围 缺省数值
char 16 0~65535‘\u0000’byte 8 -27~27-10short 16 -215~215-1 0int 32 -231~231-1 0long 64 -263~263-1 0float 32 3.4e-038~3.4e+0380.0F
double 64 1.7e-308~1.7e+3080.0Dboolean8falseortruefalse2、Java数据类型 ——基本数据类型第17页,共56页,2023年,2月20日,星期三布尔型数据只有两个值true和false,且它们不对应于任何整数值
布尔型变量的定义如: booleanb=true; 布尔型数据只能参与逻辑关系运算:&&||==!=!示例:
Boolean.java2、Java数据类型 ——基本数据类型:布尔类型(boolean)注意:boolean型变量不同于其他基本数据类型,它不能强制转换成其他基本数据类型,而且其他数据基本类型也不能转换成boolean型第18页,共56页,2023年,2月20日,星期三char型变量存储一个字符,每个字符在内存中占用16位,两个字节。(Unicode)字符常量是用单引号括起来的一个字符‘a’‘B’‘\n’‘\u0030’说明和初始化字符变量:charmyCharacter=‘X’;这条语句用字母‘X’的Unicode码字符表示初始化变量。
2、Java数据类型 ——基本数据类型:字符类型(char)第19页,共56页,2023年,2月20日,星期三——字符转义序列通过指定转义序列中字符代码的十六进制表示,编程者可以定义Unicode码字符\表示转义序列开始。把\u放在由4个十六进制数字表示的字符前,为该Unicode码字符建立转义序列。例由于字母X的Unicode编码为0x0058,所以:charmyCharacter=‘X’;charmyCharacter=‘\u0058’;第20页,共56页,2023年,2月20日,星期三特殊字符的常量表示法:反斜线(Backslash) ‘\\’退格(Backspace) ‘\b’回车(Carriagereturn) ‘\r’进纸符(Formfeed) ‘\f’制表符(Formfeed) ‘\t’换行(Newline) ‘\n’单引号(Singlequote) ‘\’’八进制数(‘\0’~‘\377’) ‘\DDD’Unicode字符 ‘\uHHHH’2、Java数据类型 ——基本数据类型:字符类型(char)第21页,共56页,2023年,2月20日,星期三
char型变量,内存分配给2个字节,占16位,最高位不是符号位,没有负数的char。char型变量的取值范围是0~65536。要观察一个字符在Unicode表中的顺序位置,必须使用int类型显示转换,不可以使用short型转换,因为char的最高位不是符号位。同样,要得到一个0~65536之间的数所代表的Unicode表中相应位置上的字符也必须使用char型显示转换。下面的例子2中,分别用显示转换来显示一些字符在Unicode表中的位置,以及某些位置上的字符。2、Java数据类型 ——基本数据类型:字符类型(char)第22页,共56页,2023年,2月20日,星期三字符放入算数运算charmyCharacter=‘X’;myCharacter+=1;‘Y’2、Java数据类型 ——基本数据类型:字符类型(char)
charachar=0;charbchar=‘\u0028’;achar=(char)(2*bchar+8)X的代码值0x0058第23页,共56页,2023年,2月20日,星期三整型常量1.十进制整数 如123,-456,02.八进制整数 以0开头,如0123表示十进制数83,-011表示十进制数-9。3.十六进制整数 以0x或0X开头,如0x123表示十进制数291,-0X12表示十进制数-18。整型变量整型变量的定义如: intx=123; //指定变量x为int型,且赋初值为123byteb=8;shorts=10;longy=123L;longz=123l;2、Java数据类型——基本数据类型:整数类型(byte,short,int,long)第24页,共56页,2023年,2月20日,星期三64位长整数以l或L结尾:12l,-343L,
0xfffffffffL没有以l或L结尾的数字,根据其实际值所属范围,可以被用作byte,short,或int型整数以l或L结尾的数字,无论其实际值所属范围怎样,都被用作long型整数2、Java数据类型——基本数据类型:整数类型(byte,short,int,long)第25页,共56页,2023年,2月20日,星期三实型常量1.十进制数形式 由数字和小数点组成,且必须有小数点,如0.123,.123,123.,123.02.科学计数法形式 如:123e3或123E3,其中e或E之前必须有数字,且e或E后面的指数必须为整数。当编程者指定浮点型常量时,按照默认方式这些常量将是双精度类型。当编程者希望指定单精度型数值时,只需在该数值后加后缀F或f.0.23f,1.23E-4f,
.18F2、Java数据类型——基本数据类型:浮点数类型,实型(float,double)第26页,共56页,2023年,2月20日,星期三实型变量类型为float或double,float在机器中占32位,double占64位。实型变量的定义如:doubled1=127.0; \\赋初值为127doubled2=127; \\赋初值为127floatf1=127.0f; \\必须在数字后加f或Ffloatf2=4.0e38f; \\错误!32位浮点数不能超过 \\3.4028234663852886e38floatf3=(float)d1; \\必须强制类型转换2、Java数据类型 ——基本数据类型:浮点数类型,实型(float,double)第27页,共56页,2023年,2月20日,星期三同种数据类型转换:短类型
长类型:默认长类型短类型:强制例不同数据类型转换——字符/数值:强制 例:inta; longb; charc; b=a; a=(int)b;c=(char)a;a=(int)c布尔型与其他数据类型之间不能强制类型转换byteshortintlongfloatdouble2、Java数据类型 ——基本数据类型:数据类型转换第28页,共56页,2023年,2月20日,星期三importjava.io.*;publicclassa{publicstaticvoidmain(Stringargs[]){inti=65;charc=‘a’,cc=‘刘’;System.out.println(i); 65System.out.println((char)i); ASystem.out.println(c); aSystem.out.println((int)c); 97 System.out.println(cc); 刘System.out.println((int)cc); 21016System.out.println((char)29579); 王}}2、Java数据类型 ——基本数据类型:数据类型转换第29页,共56页,2023年,2月20日,星期三数据类型转换必须满足如下规则:不能对boolean类型进行类型转换。不能把对象类型转换成不相关类的对象。在把容量大的类型转换为容量小的类型时必须使用强制类型转换。2、Java数据类型 ——基本数据类型:数据类型转换第30页,共56页,2023年,2月20日,星期三例如
intx=(int)34.89;输出x将是34,强制转换运算可能导致精度的损失。当把一个整数赋值给一个byte、short、int或long型变量时,不可以超出这些变量的取值范围,否则必须进行类型转换运算。下面我们看一个例子:2、Java数据类型 ——基本数据类型:数据类型转换第31页,共56页,2023年,2月20日,星期三在Java中,引用(reference)指向一个对象在内存中的位置,本质上它是一种带有很强的完整性和安全性限制的指针。当你声明某个类、接口或数组类型的变量时,那个变量的值总是某个对象的引用或者是null。指针就是简单的地址而已,引用除了表示地址而外,还是被引用的数据对象的缩影,还提供其他信息。指针可以有++、--运算,引用不可以运算。引用型变量只支持有限的逻辑判断:相等判断(是否同一个对象的引用):==!=theObject==null otherObject!=theObject2、Java数据类型 ——复合(引用)数据类型第32页,共56页,2023年,2月20日,星期三运算符(Operator)和表达式(Expression)注释(Comment)语句(Statement)代码段(CodeBlock)作用域(Scope)3、Java语言的结构第33页,共56页,2023年,2月20日,星期三(1)运算符算术运算符:+,―,*,/,%,++,――关系运算符:>,<,>=,<=,==,!=布尔逻辑运算符:!,&&,||位运算符:>>,<<,>>>,&,|,^,~赋值运算符:=,及其扩展赋值运算符如+=,―=,*=,/=等。条件运算符:?:3、Java语言的结构 ——运算符和表达式第34页,共56页,2023年,2月20日,星期三其它分量运算符·,下标运算符[],实例运算符instanceof,内存分配运算符new,强制类型转换运算符(类型),方法调用运算符()…由于数据类型的长度是确定的,所以没有长度运算符sizeof。3、Java语言的结构 ——运算符和表达式第35页,共56页,2023年,2月20日,星期三(2)表达式表达式是由操作数和运算符按一定的语法形式组成的符号序列。一个常量或一个变量名字是最简单的表达式,其值即该常量或变量的值;表达式的值还可以用作其他运算的操作数,形成更复杂的表达式。例: x num1+num2 a*(b+c)+d 3.14 x<=(y+z) x&&y||z3、Java语言的结构 ——运算符和表达式第36页,共56页,2023年,2月20日,星期三(3)运算符的优先次序1) .,
[],() 9) &2) ++,--,!,~,instanceof 10) ^3) new(type) 11) |4) *,/,% 12) &&5) +,- 13) ||6) >>,>>>,<< 14) ?:7) >,<,>=,<= 15) =,+=,-=,*=,/=,%=,^=8) ==,!= 16) &=,|=,<<=,>>=,>>>=3、Java语言的结构 ——运算符和表达式第37页,共56页,2023年,2月20日,星期三举例://单行注释,简单的解释语句含义./*多行注释,用来说明更多的内容,包括算法等.……*/3、Java语言的结构 ——注释第38页,共56页,2023年,2月20日,星期三一个由分号(;)结尾的单一命令是一条语句(Statement),一条语句一般是一行代码,但也可以占多行代码。inta=1;//变量定义及初始化语句用大括号({……})围起来的多条语句构成一个代码段(Codeblock);classAclass{ for(inti=0;i<=1;i++){…… …… } }3、Java语言的结构 ——语句和代码段第39页,共56页,2023年,2月20日,星期三作用域(Scope)决定了变量可使用的范围成员变量(Globalvariables):变量可以在整个类中被访问;例本地变量(Localvariables):变量只能在定义其的代码段中被访问。例作用域规则:在一个代码段中定义的变量只能在该代码段或者该代码段的子代码段中可见。3、Java语言的结构 ——作用域第40页,共56页,2023年,2月20日,星期三classScoping{intx=0;voidmethod1(){inty;y=x;//OK.method1可以访问y.}voidmethod2(){intz=1;z=y;//Error.y在method2的作用域之外定义}}3、Java语言的结构 ——作用域第41页,共56页,2023年,2月20日,星期三位运算符用来对二进制位进行操作,分为左移位操作和右移位操作。(1)左移位运算符左移位运算的符号为:<<,是双目运算符。左移位运算符左面的操作元称作被移位数,右面的操作数称作移位量,操作元必须是整型类型的数据。假设a是一个被移位的整型数据,n是位移量。a<<n运算的结果是通过将a的所有位都左移n位,每左移一个位,左边的高阶位上的0或1被移出丢弃,并用0填充右边的低位。3、Java语言的结构 ——移位运算符第42页,共56页,2023年,2月20日,星期三
对于byte或short型数据,a<<n的运算结果是int型精度。当进行a<<2运算时,计算系统首先将a升级为int型数据,对于正数将高位用0填充;负数用1填充,然后在进行移位运算。例如,对于bytea=-8;11111000在进行a<<1运算时,首先将11111000生级为int型,将高位用1填充:11111111111111111111111111111000然后在进行移位运算得到-16:111111111111111111111111111100003、Java语言的结构 ——移位运算符第43页,共56页,2023年,2月20日,星期三
因此,如果把a<<1的结果赋值给一个byte型变量就必须进行强制转换运算:byteb=(byte)(a<<1);在进行a<<n运算时,如果a是byte、short或int型数据,系统总是先计算出n%32的结果m,然后进行a<<m运算。例如,a<<33的计算结果与a<<1相同。对于long型数据,系统总是先计算出n%64的结果m,然后进行a<<m运算。3、Java语言的结构 ——移位运算符第44页,共56页,2023年,2月20日,星期三(2)右移位运算符右移位运算的符号为:>>,是双目运算符。假设a是一个被移位的整型数据,n是位移量。a>>n运算的结果是通过将a的所有位都右移n位,每右移一个位,右边的低阶位被移出丢弃,并用0或1填充左边的高位,a是正数用0填充,负数时用1填充。因此,a每右移一次,如果该数的每一计算有效位都没有从低位移出时,就相当于将a除以2并舍弃了余数。整数不断右移位的最后结果一定是0,而负数不断右移位的最后结果是-1。对于byte或short型数据,a>>n的运算结果是int型精度。3、Java语言的结构 ——移位运算符第45页,共56页,2023年,2月20日,星期三
在进行a>>n运算时,如果a是byte、short或int型数据,系统总是先计算出n%32的结果m,然后进行a>>m运算,例如,a>>33的计算结果与a>>1相同。对于long型数据,系统总是先计算出n%64的结果m,然后进行a>>m运算。在下面的例子中,用户输入移位运算的两个操作元,程序给出右移和左移后的结果。3、Java语言的结构 ——移位运算符第46页,共56页,2023年,2月20日,星期三
(1)“按位与”运算符“&”是双目运算符,对两个整型数据a、b按位进行运算,运算结果是一个整型数据c。运算法则是:如果a、b两个数据对应位都是1,则c的该位是1,否则是0。(2)“按位或”运算符“|”是双目运算符。对两个整型数据a、b按位进行运算,运算结果是一个整型数据c。运算法则是:如果a、b两个数据对应位都是0,则c的该位是0,否则是1。(3)“按位非”运算符“~”是单目运算符。对一个整型数据a按位进行运算,运算结果是一个整型数据c。运算法则是:如果a对应位是0,则c的该位是1,否则是0。3、Java语言的结构 ——位运算符第47页,共56页,2023年,2月20日,星期三(4)“按位异或”运算符“^”是双目运算符。对两个整型数据a、b按位进行运算,运算结果是一个整型数据c。运算法则是:如果a、b两个数据对应位相同,则c的该位是0,否则是1。
在下面的例子中,利用“异或”运算的性质,对几个字符进行加密并输出密文,然后再解密。3、Java语言的结构 ——位运算符第48页,共56页,2023年,2月20日,星期三
条件运算符是一个3目运算符,它的符号是:“?:”,需要连接3个操作元,用法如下:op1?op2:op3要求第一个操作元op1的值必须是boolean型数据。运算法则是:当op1的值是true时,op1?op2:op3运算的结果是op2的值;当op1的值是false时,op1?op2:op3运算的结果是op3的值。例如,12>8?100:200的结果是100;12<8?100:200的结果是200。3、Java语言的结构 ——条件运算符第49页,共56页,2023年,2月20日,星期三运算符例—移位移位>>带符号右移:左侧空出位全用符号位填充<<左移:符号位被挤掉x二进制补码表示 x<<2x>>2 30 00011110 0111100000000111 -17 11101111 1011110011111011 128>>1128/21=64256>>4256/24=16-256>>4-256/24=-16128<<1128*21=25616<<216
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中葡经贸中心招聘6人备考题库及一套答案详解
- 2026贵州黔南州荔波县事业单位引进高层次人才和急需紧缺专业人才18人备考题库及答案详解【夺冠系列】
- 2026广西崇左宁明县那堪镇卫生院招聘1人备考题库及答案详解(易错题)
- 2026贵州黔东南州三穗县招聘社会化服务市场监管协管人员2人备考题库带答案详解(突破训练)
- 2026清华大学出版社校园招聘备考题库及答案详解(新)
- 2026江西鹰潭市邮政分公司现面向社会招聘合同用工B类若干名备考题库及答案详解【考点梳理】
- 2026福建医科大学附属第一医院招聘非在编合同制人员20人备考题库(二)附答案详解(a卷)
- 2026上半年四川成都职业技术学院(考核)招聘高层次人才8人备考题库附参考答案详解(巩固)
- 2026广东韶关市新丰县医共体招聘专业技术人员公30人告及答案详解(各地真题)
- 2026四川宜宾港信资产管理有限公司第一批员工招聘10人备考题库带答案详解(考试直接用)
- 清洁教室劳动课件
- 第一单元《1.多彩的亚洲美术》课件-浙人美版初中美术七年级下册
- 无人机保险相关知识培训课件
- 课件:深入学习习近平总书记关于教育的重要论述
- 医院 全员安全生产责任制
- 超声内镜在胰腺疾病诊疗中的应用
- 供应链协同对农村电商发展的机制分析
- CIP、SIP工艺流程操作说明书
- 桩基施工安全措施方案
- 盘活利用闲置低效厂区厂房实施方案
- 高空安全培训试题及答案
评论
0/150
提交评论