第二讲语言基础_第1页
第二讲语言基础_第2页
第二讲语言基础_第3页
第二讲语言基础_第4页
第二讲语言基础_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二讲语言基础1第1页,课件共71页,创作于2023年2月java语言的词法1、分隔符2、注释3、标识符4、关键字

2第2页,课件共71页,创作于2023年2月1.分隔符

Java是一种自由格式的语言,可以用任意个空格、制表符、换行符隔开每个词。如:System.

out.

println

("Counted"+count+"chars.");

分号作为语句的结束符,每个语句必须以分号作为结束符。3第3页,课件共71页,创作于2023年2月2.注释三种注释格式://

实现单行注释/*

这是

一段注释,

它跨越了多个行

*//**JDK的javadoc工具用这种注释信息能自动从程序中抽出类的公共接口形成文档。

*/4第4页,课件共71页,创作于2023年2月3.标识符1.标识符可以由字母、数字和两个特殊字符下划线(_)、美元符号($)组合而成。2.标识符必须以字母、下划线或美元符号开头。3.Java是大小写敏感的语言,class和Class分别代表不同的标识符。4.应该是标识符能一定程度上反映它所表示的变量、常量、对象或类的意义。例如:User_Name,_sys_val,$change为合法的标识符,而2mailroom#,class为非法的标识符。5第5页,课件共71页,创作于2023年2月4.关键字abstractbooleanbreakbytecasecatchcharclassconst*continuedefaultdodoubleelseextendsfinalfinallyfloatforgoto*ifimplementsimportinstanceofintinterfacelongnativenewnullpackageprivateprotectedpublicreturnshortstaticsuperswitchsynchronizedthisthrowthrowstransienttryvoidvolatilewhile关键字是由系统定义的一些词,它们在程序里代表特定的含义。定义标识符时要避免使用这些词。1.java语言中的保留字均用小写字母表示。2.goto和const虽然在Java中不被使用,但仍是关键字。

6第6页,课件共71页,创作于2023年2月变量:是java程序中的基本存储单元,它的定义包括变量名、变量类型和作用域几个部分。其定义格式如下:typeSpecifiervarName=value;

如:intcount;charc='a';

变量★变量必须先说明后使用。★变量名是一个合法的标识符,以小写字母开头,若一个变量名由超过一个单词所组成,则第一个单词之后的所有单词都以大写字母开头,以便于理解该变量名。7第7页,课件共71页,创作于2023年2月

Java的变量有两种:局部变量、类成员变量。局部变量在使用前必须给定初值,否则,Java将不编译,而类成员变量无此要求。

变量类型可以是基本数据类型和引用类型。变量

变量的作用域指明可访问该变量的一段代码,按作用域来分,变量可以有下面几种:局部变量Localvariable类变量Membervariable方法参数Methodparameter例外处理参数Exception-handlerparameter8第8页,课件共71页,创作于2023年2月局部变量在方法或方法的一个块代码中声明,它的作用域为它所在的代码块(整个方法或方法中的某块代码)。类变量在类中声明,而不是在类的某个方法中声明,它的作用域是整个类。方法参数传递给方法,它的作用域就是这个方法。例外处理参数传递给例外处理代码,它的作用域就是例外处理部分。

变量的作用域9第9页,课件共71页,创作于2023年2月例1.变量的作用域

10第10页,课件共71页,创作于2023年2月常量是指在程序运行过程中其值不变的量。常量的表示形式:

final变量类型变量名常量finaltypeSpecifiervarName=value;

如:finalintNUM=100;11第11页,课件共71页,创作于2023年2月数据类型基本/简单数据类型(primitivetype:)

字符型:char

整型:byte,short,int,long

浮点型:double,float

布尔型:boolean(取值true或false)引用/参考数据类型(referencetype)

classinterface

数组12第12页,课件共71页,创作于2023年2月数据类型名占用内存空间数值范围缺省值说明byte1字节(-128)~1270整型short2字节(-32768)~327670int4字节(-2147483648)~21474836470long8字节(-9223372036854775808)~92233720368547758070float4字节(±3.4028347E+38)~(±1.40239846E-45)0.0F

浮点型double8字节(±1.79769313486231570E+308)~(±4.94065645841246544E-324)0.0Dchar2字节\u0000~\uFFFF\u0000字符型boolean1字节true或false

False布尔型

基本数据类型表注:缺省值就是默认的初值,只对成员变量有用,局部变量在使用前必须人为地给定初值13第13页,课件共71页,创作于2023年2月布尔型变量--boolean

布尔型数据只有两个值true和false,且它们不对应于任何整数值。布尔型变量的定义如:

booleanb=true;简单数据类型---布尔型数据14第14页,课件共71页,创作于2023年2月

1.字符型常量:字符常量是用单引号括起来的一个字符,如‘a’,‘A’Unicode代码,用16位表示一个字符转义字符,以反斜杠(\)开头,将其后的字符转变为另外的含义简单数据类型---字符型数据15第15页,课件共71页,创作于2023年2月转义字符名称Unicode值\b退格\u0008\t跳格\u0009\n换行\u000a\r回车\u000d\”双引号\u0022\ˊ单引号\u0027\\反斜杠\u005c简单数据类型---字符型数据16第16页,课件共71页,创作于2023年2月2.字符型变量(char):它在机器中占16位,其范围为0~65535字符型变量的定义如:charc=’a’;可以把它当作整数数据来操作。例如:

intthree=3; charone=’1’; charfour=(char)(three+one);//four=’4’简单数据类型---字符型数据17第17页,课件共71页,创作于2023年2月3.字符串型常量:字符串常量是作为String类的一个对象来处理的,而不是一个基本数据.字符串常量是用双引号(“”)括起来的一串字符,如“Thisisastring.\n”。字符串连接使用+操作符

intcount=7

例如:"Counted"+count+"chars."字符串连接使用+操作符

intx=0,y=1,z=2;

StringsString="x,y,z";

System.out.println(sString+x+y+z);

System.out.println(x+sString);简单数据类型---字符型数据18第18页,课件共71页,创作于2023年2月1.整型常量:

三种表示形式:十进制整数,如123,-456,0

八进制整数,以0开头,例055表示十进制数45。

十六进制整数,以0x或0X开头,如0x123表示十进制数291整型常量默认为int类型,在机器中占32位对于long型值,则要在数字后加L或l,如123L表示一个长整数,在机器中占64位简单数据类型---整型数据19第19页,课件共71页,创作于2023年2月简单数据类型---整型数据2.整型变量整型变量的类型有byte,short,int,long四种数据类型所占位数数的范围Byte8-27~27-1Short16-215~215-1Int32-231~231-1Long64-263~263-120第20页,课件共71页,创作于2023年2月3.整型变量的定义

例如:byteb;//指定变量b为byte型shorts;//指定变量s为short型inti;//指定变量i为int型longl;//指定变量l为long型

简单数据类型---整型数据21第21页,课件共71页,创作于2023年2月浮点型数据的表示形式:

十进制数形式

由数字和小数点组成,且必须有小数点,如0.123,1.23,123.0

科学计数法形式

如:123e3或123E3,其中e或E之前必须有数字,且e或E后面的指数必须为整数。

浮点型变量有两种类型:float和double。前者长度为32位,后者为64位。一个小数默认为double型,若想强调其是float类型,必须在数字后加f或F,如floatt=1.23f。

简单数据类型---浮点型数据22第22页,课件共71页,创作于2023年2月

Java中整型、实型、字符型数据可以混合运算。

运算过程中,不同类型的数据会自动转换为同一类型。自动类型转换原则:

从低数据类型向高数据类型转换即:

(byte

,char)→short→int

→long→float→double

注意:布尔型与其它基本类型之间不能转换强制类型转换:高级数据要转换成低级数据类型转换23第23页,课件共71页,创作于2023年2月1.自动类型转换规则

整型,实型,字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级;操作数1类型操作数2类型转换后的类型byte、short、char

int

intbyte、short、char、int

long

longbyte、short、char、int、long

float

floatbyte、short、char、int、long、float

double

double24第24页,课件共71页,创作于2023年2月形式为:

(类型名)表达式例如:

longl=156;

byteb;

b=(byte)l;

注意:1.一般使用强制类型转换可能会导致数值溢出或精度的下降,应尽量避免。2.布尔型与其它基本类型之间不能转换强制类型转换25第25页,课件共71页,创作于2023年2月运算符和表达式

运算符指明对操作数所进行的运算,按功能分类:算术运算符(+,-,*,/,%,++,--)关系运算符(>,<,>=,<=,==,!=)布尔逻辑运算符(!,&&,||,|,&)位运算符(>>,<<,>>>,&,|,^,~)赋值运算符(=,及其扩展赋值运算符如+=)条件运算符(?:)其它(包括分量运算符·,下标运算符[],实例运算符instanceof,内存分配运算符new,强制类型转换运算符(类型),方法调用运算符()等)26第26页,课件共71页,创作于2023年2月算术运算符算术运算符:+,―,*,/,=,++,--

Java对“+”运算符进行了扩展,使它能够进行字符串的连接,如“abc”+“de”,得到串“abcde”

增值/减值操作符:++,--

注:i++或i--:先将值返回,再执行增1或减1的操作,

++i或--i:先执行增1或减1操作,再将值返回。

eg:inti=10;intj=++i;intk=i++;27第27页,课件共71页,创作于2023年2月关系运算符说明:Java中,任何数据类型的数据(包括基本类型和组合类型)都可以通过==或!=来比较是否相等(这与C、C++不同)。关系运算的结果返回true或false,而不是C、C++中的1或0。等于和不等于适用于所有内建的数据类型,但其他比较不适用于boolean类型。

28第28页,课件共71页,创作于2023年2月说明:检查对象是否相等publicclassEquivalence{publicstaticvoidmain(String[]args){Integern1=newInteger(47);Integern2=newInteger(47);System.out.println(n1==n2);System.out.println(n1!=n2);}}结果:false true

关系运算符29第29页,课件共71页,创作于2023年2月说明:若想对比两个对象的实际内容是否相同,使用方法equals()。例如:publicclassEqualsMethod{publicstaticvoidmain(String[]args){Integern1=newInteger(47);Integern2=newInteger(47);System.out.println(n1.equals(n2));}}关系运算符30第30页,课件共71页,创作于2023年2月说明:假设您创建了自己的类,结果如何?例如:classValue{ inti;}publicclassEqualsMethod2{publicstaticvoidmain(String[]args){Valuev1=newValue();Valuev2=newValue();v1.i=v2.i=100;System.out.println(v1.equals(v2));}}结果:false关系运算符31第31页,课件共71页,创作于2023年2月逻辑运算符

逻辑运算符AND(&&,&)、OR(||,|)、XOR(^)以及NOT(!)能生成一个布尔值(true或false)。说明:只可将AND,OR或NOT应用于布尔值。不可将一个非布尔值当作布尔值在逻辑表达式中使用例如:以下是非法的。inti=1,j=2;i&&ji||j!i以下是合法的:(i<10)&&(j<10)(i<10)&&(j<10)32第32页,课件共71页,创作于2023年2月说明:

对浮点数字的比较是非常严格的。短路运算:与“&&”,或“||”注:逻辑操作符运算时先将两端的表达式计算出来,然后再进行逻辑运算。短路操作符在某些情况下跳过对右边表达式的计算。1、a&&b&&c2、a||b||c3、x=y=true,a=5,b=3,c=2,d=1(x=a<b)&&(y=c<d)x,y=?逻辑运算符33第33页,课件共71页,创作于2023年2月publicclassMyshort{publicstaticvoidmain(Stringargs[]){intx=616; inta;booleant; a=0;t=((x==616)||(a++==1));

System.out.println("a="+a+",t="+t);

a=0;t=((x==616)|(a++==1));

System.out.println("a="+a+",t="+t);

a=0;t=((x!=616)||(++a==1));

System.out.println("a="+a+",t="+t);}}34第34页,课件共71页,创作于2023年2月运算符用法描述~~op按位取反&op1&op2按位与|op1|op2按位或^op1^op2按位异或>>op1>>op2op1右移op2位<<op1<<op2op1左移op2位>>>op1>>>op2op1无符号右移op2位位运算符35第35页,课件共71页,创作于2023年2月位运算符(>>,>>>)说明:>>:将一个数的各二进制位全部右移若干位,移到右端的低位被舍弃,最高位则移入原来高位的值

例如: a=00110111,则a>>2=00001101 b=11010011,则

b>>2=11110100>>>:一个数的各二进制位无符号右移若干位,与运算符>>相同,移出的低位被舍弃,但不同的是最高位补0。如a=00110111,则a>>>2=00001101 b=11010011,则b>>>2=0011010036第36页,课件共71页,创作于2023年2月赋值运算符说明:在赋值运算符两侧的类型不一致的情况下:Java允许将任何基本类型转换为为其他任何一种基本类型。但布尔值(bollean)要除外。如果左侧变量的数据类型的级别高,则右侧的数据被自动转化为与左侧相同的高级的数据类型,然后赋给左侧变量否则,需要使用强制类型转换运算符类对象不能随便进行强制类型转换37第37页,课件共71页,创作于2023年2月说明:〈续〉例如:longbigValue=99L;intsquashed=bigValue;//Wrongintsquashed=(int)bigValue;//OKintsquashed=99;//defaultintegerliteraldoublez=12.414F;//12.414Fisfloat,OKfloatz1=12.414;//12.414isdouble,illegal38第38页,课件共71页,创作于2023年2月扩展赋值运算符运算符例子解释+=x+=ax=x+a-=x-=ax=x-a*=x*=ax=x*a/=x/=ax=x/a%=x%=ax=x%a&=x&=ax=x&a|=x|=ax=x|a^=x^=ax=x^a<<=x<<=ax=x<<a>>=x>>=ax=x>>a<<<=x<<<=ax=x<<<a39第39页,课件共71页,创作于2023年2月条件运算符条件运算符

?:为三元运算符,它的一般形式为:expression?statement1:statement2例如:ratio=denom==0?0:num/denom;40第40页,课件共71页,创作于2023年2月优先级运算符类型1()2+、-、++、--、!、~单目运算符3*、/、%算术运算符4+、-算术运算符5<<、>>、>>>移位运算符6<、<=、>、>=关系运算符7==、!=关系运算符8&&逻辑运算符9¦¦逻辑运算符10?:条件运算符11=、+=、-=、*=、/=、%=、^=赋值运算符12&=、|=、<<=、>>=、>>>=运算符的优先级41第41页,课件共71页,创作于2023年2月表达式

表达式是由操作数和运算符按一定的语法形式组成的符号序列。1.表达式的类型

表达式的类型由运算以及参与运算的操作数的类型决定,可以是简单类型,也可以是复合类型:

布尔型表达式:x&&y||z;

整型表达式:num1+num2;2.运算符的优先次序

表达式的运算按照运算符的优先顺序从高到低进行,同级运算符从左到右进行:先单运算符,而后乘除加减,然后位运算符,之后比较运算,然后赋值运算。42第42页,课件共71页,创作于2023年2月程序结构

Java程序通过控制语句来执行程序流,完成一定的任务。程序流由若干个语句组成,语句可以是单一的一条语句,如c=a+b,也可以是用大括号{}括起来的一个复合语句。Java中的控制语句有以下几类:分支语句:if-else,switch循环语句:while,do-while,for与程序转移有关的跳转语句:break,continue,return,label例外处理语句:try-catch-finally,throw43第43页,课件共71页,创作于2023年2月if-else语句的语法形式:

if(布尔表达式)语句1[else语句2]若无else部分,if语句的流程如图1所示:若有else部分,if语句的流程如图2所示。若语句1,语句2也是if-else语句便形成嵌套if–else语句44第44页,课件共71页,创作于2023年2月布尔表达式语句1if的后继语句falsetrue图1无else部分的if语句的流程45第45页,课件共71页,创作于2023年2月布尔表达式if的后继falsetrue图2有else部分的if语句的流程语句1语句246第46页,课件共71页,创作于2023年2月例题:比较两个数的大小,并按从小到大的次序输出。publicclassCompareTwo{ publicstaticvoidmain(Stringargs[]){ doubled1=23.4; doubled2=35.1; if(d2>=d1) System.out.println(d2+">="+d1); else System.out.println(d1+">="+d2);}47第47页,课件共71页,创作于2023年2月

if-else语句中内嵌的语句1或语句2又是if-else语句的情况称为if-else语句的嵌套。如:

if(布尔表达式1)语句1

elseif(布尔表达式2)语句2…

elseif(布尔表达式m)语句m

else语句nif–else语句的嵌套48第48页,课件共71页,创作于2023年2月

switch语句根据表达式的结果来执行多个可能操作中的一个,它的语法形式如下:switch(表达式){case常量1:语句1;[break;]case常量2:语句2;[break;]…case常量n:语句n;[break;][default:缺省处理语句;break;]

//这的break语句不必要}switch语句49第49页,课件共71页,创作于2023年2月表达式语句1break语句2breakbreak语句nbreak缺省处理语句后继语句常量2defaultswitch语句的流程常量1…常量n…50第50页,课件共71页,创作于2023年2月表达式expression可以返回任一整型类型的值(如整型、字符型);case子句中的值必须是常量,而且所有case子句中的值应是不同的;default子句是任选的,当表达式的值与任一case子句中的值都不匹配时,程序执行default后面的语句;如果表达式的值与任一case子句中的值都不匹配且没有default子句,则程序不做任何操作,而是直接跳出switch语句。如果将default语句放在了第一行,程序该如何执行呢?switch语句--说明51第51页,课件共71页,创作于2023年2月case通常与break语句联用,以保证多路分支的正确实现。因为case子句只是起到一个标号的作用,用来查找匹配的入口并从此处开始执行,对后面的case子句不再进行匹配,而是直接执行其后的语句序列。多个case可以公用一组执行语句。

case1: case2: case3:cout<<“hello”;break;

case1,2,3:cout<<“hello”//errorswitch语句--说明52第52页,课件共71页,创作于2023年2月classSwitchDemo{publicstaticvoid

main(Stringargs[]){

intmonth=7;Stringseason;switch(month){case12:

case1:

case2:season=”冬季“;break;case3:case4:

case5:season=“春季”;

break;

case6:

case7:

case8:season=“夏季”;

break;case9:case10:

case11:season=”秋季”;

break;default:

season=”错!”;}System.out.println(“月份季节”);

System.out.println(month+“

”+season);}}例用switch语句判断一个月份属于一年哪个季节(春、夏、秋、冬)。值为12、1和2时将都执行:season=”冬季“;break;

该程序运行后输出:月份季节7夏季53第53页,课件共71页,创作于2023年2月

Java循环语句有while、do-while和for三种。while语句do-while语句for语句循环的嵌套循环语句54第54页,课件共71页,创作于2023年2月while语句形式如下:

while(布尔表达式)语句while语句while语句的关键字循环条件循环体,是一个语句,若是多个语句则应构成复合语句55第55页,课件共71页,创作于2023年2月classsum{publicstaticvoid

main(Stringargs[]){

intn=100;

inti=1;floats=0;

while(i<=100){s=s+(1.0f/i);

i++;}System.out.println(“s=”+s);}}

例.用while循环语句计算s=1+1/2+1/3+……+1/100。56第56页,课件共71页,创作于2023年2月

do-while语句的语法形式如下:

do

{语句}

while(布尔表达式A);do-while语句do语句的关键字循环体,是一个语句,若是多个语句则应构成复合语句循环条件程序先执行循环体中语句,然后检查A是否满足,满足则执行循环体中的语句,执行完再检查A是否满足,如此反复执行直到A不满足为止。57第57页,课件共71页,创作于2023年2月for语句的语法形式为:

for(表达式1;表达式2;表达式3)语句for语句的执行过程如下:(1)按表达式1将初值赋给循环控制变量。(2)按表达式2判断循环是否成立,即判断控制变量的值for语句循环体,是一个语句,若是多个语句则应构成复合语句循环条件58第58页,课件共71页,创作于2023年2月求解表达式1表达式2循环体求解表达式3for语句的下一语句falsetruefor语句的流程59第59页,课件共71页,创作于2023年2月逗号语句分隔的语句系列,被看作一个语句,这样就可以在只能放一个语句的地方放任意多个语句,只须用逗号将它们分隔开。如:

for(i=1,j=10;i<j;i++,j--){……}表达式1、表达式2及表达式3都可以为空语句(但分号不能省略)如:

for(;;){…}使用for语句还需注意:循环内修改循环控制变量,往往会带来预想不到的结果,因此应慎用。60第60页,课件共71页,创作于2023年2月

for(inti=0;i<3;i++){System.out.println(i);}intj=2;for(;j<10;){System.out.println(j);j++;}61第61页,课件共71页,创作于2023年2月

一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多重循环。上述三种循环(while循环,do-while循环和for循环)语句之间可以相互嵌套使用。循环的嵌套62第62页,课件共71页,创作于2023年2月

Java不支持无条件跳转的goto语句。Java的跳转语句有三种break语句

continue语句

return语句跳转语句63第63页,课件共71页,创作于2023年2月作用:使程序的流程从一个语句块的内部跳转出来。1)从switch语句的分支中跳出来2)从循环体内跳出来

break语句格式:break[标号];

1)无标号:跳出当前整个语句块

2)有标号:跳出标号指处的语句块64第64页,课件共71页,创作于2023年2月

continue语句只能在循环语句中使用

格式:continue[标号];(1)无标号:用来结束所在循环语句块的本次循环

(2)有标号:跳过标号所指的循环语句所有余下部分语句,直接转入标号标明的循环层次。注:break使程序跳出当前循环,continue终止当前这一轮的循环,跳过本轮剩余的语句,直接进入当前循环的下一轮。continue语句65第65页,课件共71页,创作于2023年2月

outer:for(inti=0;i<10;i++)//外层循环

{

inner:for(intj=0;j<10;j++)//内层循环

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论