资源描述
1,第二章java语言基础,java语言的词法数据类型变量操作符与表达式流程控制语句数组与字符串,2,java语言的词法,空格与分号注释标识符关键字,第二章java语言基础,3,java语言的词法1.空格与分号,Java是一种自由格式的语言,可以用任意个空格、制表符、换行符隔开每个词。如:System.out.println(Counted+count+chars.);分号作为语句的结束符,每个语句必须以分号作为结束符。,第二章java语言基础,4,java语言的词法2.注释,三种注释格式:/实现单行注释/*这是*一段注释,*它跨越了多个行*/*JDK的javadoc工具用这种注释信息能自动从程序中抽出类的公共接口形成文档。*/,第二章java语言基础,5,java语言的词法3.标识符,定义:标识符用来作为类、方法和变量的名字语法规则:以字母、下划线(_)、美元符号($)开始,后跟这三种符号或数字。例如:identifier_sys_var1$changeuserNameuser_name必须要区分大小写没有长度限制,第二章java语言基础,6,java语言的词法3.标识符续,约定:类名,接口名:首字母应该大写。classThisIsAClassNameinterfaceAccount字段、方法以及对象:首字母应小写。thisIsMethodOrFieldName()对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。例如:常量:全部用大写字母表示。如:GREENHEAD_COUNTJava包(Package)属于一种特殊情况:它们全都是小写字母,即便中间的单词亦是如此。如:packagejava.awt.event,第二章java语言基础,7,第二章java语言基础,java语言的词法4.关键字,关键字是由系统定义的一些词,它们在程序里代表特定的含义。定义表示符时要避免使用这些词。,8,数据类型,基本数据类型(primitivetype:)引用数据类型(referencetype),第二章java语言基础,9,字符型:char整型:byte,short,int,andlong浮点型:double,float布尔型:boolean(取值true或false),第二章java语言基础,数据类型基本数据类型(primitivetype:),10,数据类型字符型数据,第二章java语言基础,字符型常量:字符常量是用单引号括起来的一个字符,如a,A转义字符,以反斜杠()开头,将其后的字符转变为另外的含义,11,数据类型字符型数据,转义字符描述ddd1到3位8进制数所表示的字符(ddd)uxxxx1到4位16进制数所表示的字符(xxxx)单引号字符双引号字符反斜杠字符r回车n换行f走纸换页t横向跳格b退格,第二章java语言基础,12,数据类型字符型数据,第二章java语言基础,2.字符型变量(char):它在机器中占16位,其范围为065535字符型变量的定义如:charc=a;可以把它当作整数数据来操作。例如:intthree=3;charone=1;charfour=(char)(three+one);/four=4,13,数据类型字符型数据,第二章java语言基础,3.字符串型常量:字符串常量是作为String类的一个对象来处理的,而不是一个基本数据.字符串常量是用双引号(“”)括起来的一串字符,如“Thisisastring.n”。字符串连接使用+操作符intcount=7例如:Counted+count+chars.,14,数据类型字符型数据,第二章java语言基础,3.字符串型常量:字符串连接使用+操作符intx=0,y=1,z=2;StringsString=x,y,z;System.out.println(sString+x+y+z);System.out.println(x+sString);,15,数据类型整型数据,第二章java语言基础,整型常量:三种表示形式:十进制整数,如123,456,0八进制整数,以0开头,如0123表示十进制数83,011表示十进制数9。十六进制整数,以0 x或0X开头,如0 x123表示十进制数291默认整型常量为int类型。在机器中占32位对于long型值,则要在数字后加L或l,如123L表示一个长整数。在机器中占64位。,16,第二章java语言基础,2.整型变量整型变量的类型有byte,short,int,long四种整型长度数据类型取值范围8bitsbyte-27to27-116bitsshort-215to215-132bitsint-231to231-164bitslong-263to263-1,数据类型整型数据,17,第二章java语言基础,3.整型变量的定义例如:byteb;/指定变量b为byte型shorts;/指定变量s为short型inti;/指定变量i为int型longl;/指定变量l为long型,数据类型整型数据,18,数据类型浮点型数据,第二章java语言基础,1.实型常量Java的实常数有两种表示形式:十进制数形式:由数字和小数点组成,且必须有小数点,如0.123,.123,123.,123.0科学计数法形式:如:123e3或123E3,其中e或E之前必须有数字,且e或E后面的指数必须为整数。实常数默认类型为double型,在机器中占64位,对于float型的值,则要在数字后加f或F,如12.3F,它在机器中占32位,且表示精度较低。,19,数据类型浮点型数据,第二章java语言基础,2.实型变量实型变量的类型有float和double两种:数据类型所占位数float32double643.实型变量定义例如:floatf;/指定变量f为float型doubled;/指定变量d为double型,20,数据类型举例,第二章java语言基础,请看Literals.java,21,数据类型引用数据类型(referencetype),第二章java语言基础,数组Array,类class,接口interface属于reference类型。reference类型的变量是所引用的对象的内存地址。例子:,22,数据类型引用数据类型(referencetype),第二章java语言基础,publicclassMyDateprivateintday=1;privateintmonth=1;privateintyear=2000;publicMyDate(intday,intmonth,intyear).publicvoidprint().publicclassTestMyDatepublicstaticvoidmain(Stringargs)MyDatemy_birth=newMyDate(22,7,1964);,23,数据类型引用数据类型(referencetype),第二章java语言基础,创建一个类对象:MyDatemy_birth=newMyDate(22,7,1964);,24,数据类型引用数据类型(referencetype),第二章java语言基础,两个引用变量的赋值将会产生如下结果:intx=7;inty=x;MyDates=newMyDate(22,7,1964);MyDatet=s;t=newMyDate(22,12,1964);两个变量指向一个对象:,25,数据类型引用数据类型(referencetype),第二章java语言基础,当t变量赋予一个新值时:t=newMyDate(22,12,1964);两个变量分别指向两个对象:,26,数据类型引用数据类型(referencetype),第二章java语言基础,见例题:Assignment.java结果:1:n1.i:9,n2.i:472:n1.i:47,n2.i:473:n1.i:27,n2.i:27将一个对象传递到方法内部时,也会产生此现象见例题:PassObject.java输出结果如下:1:x.c:a2:x.c:z,27,变量,第二章java语言基础,1.变量的定义变量名是一个合法的标识符它是字母、数字、下划线或美元符“”的序列变量名不能以数字开头不能为保留字变量名区分大小写变量名应具有一定的含义,以增加程序的可读性,28,变量,第二章java语言基础,2.变量的作用域变量的作用域指明可访问该变量的一段代码按作用域来分,变量可以有下面几种:局部变量Localvariable类变量Membervariable方法参数Methodparameter例外处理参数Exception-handlerparameter,29,2.变量的作用域,第二章java语言基础,1.变量的作用域,2.变量的作用域,30,变量,第二章java语言基础,3.变量的声明格式:typeidentifier=value,identifier=value;例如:inta,b,c;doubled1,d2=0.0;方法参数和例外处理参数的变量值是由调用者给出。,31,变量,第二章java语言基础,4.变量的默认初始化值,32,运算符和表达式,第二章java语言基础,运算符指明对操作数所进行的运算。按功能分类:算术运算符(+,-,*,/,%,+,-)关系运算符(,=,Integern2=newInteger(47);System.out.println(n1=n2);System.out.println(n1!=n2);结果:falsetrue,37,运算符和表达式关系运算符,第二章java语言基础,说明:若想对比两个对象的实际内容是否相同,使用方法equals()。例如:publicclassEqualsMethodpublicstaticvoidmain(Stringargs)Integern1=newInteger(47);Integern2=newInteger(47);System.out.println(n1.equals(n2);,38,运算符和表达式关系运算符,第二章java语言基础,说明:假设您创建了自己的类,结果如何?例如:classValueinti;publicclassEqualsMethod2publicstaticvoidmain(Stringargs)Valuev1=newValue();Valuev2=newValue();v1.i=v2.i=100;System.out.println(v1.equals(v2);,结果:false,39,运算符和表达式布尔逻辑运算符,第二章java语言基础,逻辑运算符AND(idoubled2=35.1;if(d2=d1)System.out.println(d2+=+d1);elseSystem.out.println(d1+=+d2);,55,流程控制语句switch语句,第二章java语言基础,switch语句是实现多分支选择结构的另一个语句:switch(整数选择因子)case整数值1:语句;break;case整数值2:语句;break;case整数值3:语句;break;case整数值4:语句;break;case整数值5:语句;break;/.default:语句;,56,流程控制语句switch语句,第二章java语言基础,说明:表达式expression可以返回任一整型类型的值(如整型、字符型)case子句中的值必须是常量,而且所有case子句中的值应是不同的case通常与break语句联用,以保证多路分支的正确实现。多个case可以公用一组执行语句。case1:case2:case3:cout“hello”case1,2,3:cout“hello”/error,57,流程控制语句switch语句,第二章java语言基础,例题:根据考试成绩的等级打印出百分制分数段。publicclassGradeLevelpublicstaticvoidmain(Stringargs)System.out.println(n*firstsituation*);chargrade=C;/normaluseswitch(grade)caseA:System.out.println(grade+is85100);break;caseB:System.out.println(grade+is7084);break;caseC:System.out.println(grade+is6069);break;caseD:System.out.println(grade+is60);break;default:System.out.println(inputerror);,58,流程控制语句for循环语句,第二章java语言基础,格式for(初始表达式;布尔表达式;步进)语句;说明:无论初始表达式,布尔表达式,还是步进,都可以置空。可在for语句里定义多个变量,但它们必须具有同样的类型:for(inti=0,j=1;i10,59,流程控制语句for循环语句,第二章java语言基础,说明:Java里唯一用到逗号运算符的地方就是for循环的控制表达式。publicclassCommaOperatorpublicstaticvoidmain(Stringargs)for(inti=1,j=i+10;i5;i+,j=i*2)System.out.println(i=+i+j=+j);,输出如下:i=1j=11i=2j=4i=3j=6i=4j=8,60,流程控制语句while循环语句,第二章java语言基础,格式:while(布尔表达式)语句例子:publicclassWhileTestpublicstaticvoidmain(Stringargs)doubler=0;while(r0.99d)r=Math.random();System.out.println(r);,61,流程控制语句do-while循环语句,第二章java语言基础,格式:do语句while(布尔表达式)例子:,62,流程控制语句其他循环控制语句,第二章java语言基础,63,流程控制语句breaklabel语句,第二章java语言基础,不带标号的break语句,跳出它所在的循环语句或switch语句,并从紧跟该循环语句或switch语句后的第一条语句处执行带标号的break语句:对Java来说,唯一用到标签的地方是在循环语句之前。label1:循环语句跳出标号所指定的块,并从紧跟该块后的第一条语句处执行,64,流程控制语句breaklabel语句,第二章java语言基础,例题:,65,流程控制语句continuelabel语句,第二章java语言基础,不带标号的continue语句,用来结束本次循环,跳过循环体中下面尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环带标号的continue语句跳转到标号指明的外层循环中。,66,流程控制语句continuelabel语句,第二章java语言基础,例题:,67,流程控制语句continuelabel语句,第二章java语言基础,例题1:BreakAndContinue.java例题2:LabeledFor.java例题3:LabeledWhile.java,68,练习,(1)写一个程序,打印出1到100间的整数。(2)编写一个for语句的双重循环,练习breaklabel和continuelabel语句。(3)创建一个switch语句,为每一种case都显示一条消息。在每个case后面都放置一个break,并对其进行测试。然后,删除break,看看会有什么情况出现。,第二章java语言基础,69,数组,相同的数据类型元素类型按一定的顺序排列就构成了数组数组元素可以为:基本数据类型某一类的对象建立java数组需要以下三个步骤:声明数组创建数组空间初始化数组元素,第二章java语言基础,70,数组声明数组,声明数组的语法格式有两种如下:数组元素类型数组名;数组元素类型数组名;例如:chars;或:chars;Pointp;Pointp;,第二章java语言基础,71,数组创建数组空间,说明:为数组开辟内存空间,在创建数组空间时必须为它指明数组的长度。一个数组是一个对象,所以用new来创建数组语法格式为:数组名=new数组元素类型数组元素的个数;例如:intMyIntArray;MyIntArray=newint10;,第二章java语言基础,PointMyIntArray;MyIntArray=newPoint10;,72,数组创建数组空间,说明:也可以在创建数组空间的时候,同时将初值给出来,例如:intMyIntArray=1,2,3,4,5,6,7,8,9;存储空间的分配等价于使用new基本数据类型的数组元素会自动初始化成“空”值(对于数值,空值就是零;对于char,它是null;而对于boolean,它却是false)。数组名是对数组对象的一个引用。,第二章java语言基础,73,数组创建数组空间,第二章java语言基础,创建一个基本数据类型元素的数组:publiccharcreateArray()chars;s=newchar26;for(inti=0;i26;i+)si=(char)(A+i);returns;,74,数组创建数组空间,第二章java语言基础,创建一个对象数组:publicPointcreateArray()Pointp;p=newPoint10;for(inti=0;i10;i+)pi=newPoint(i,i+1);returnp;,75,数组创建数组空间,第二章java语言基础,说明:可以动态创建数组空间:inta;a=newintpRand(20);见例题:ArrayNew.java,76,数组数组边界,第二章java语言基础,所有数组的上标从0开始intlist=newint10;for(inti=0;ilist.length;i+)System.out.println(listi);,77,数组初始化数组,有两种方式:1先定义数组,分配空间,然后直接对每个元素进行赋值。2在定义数组的同时进行初始化。这种做法大多数时候都很有用,但限制也是最大的,因为数组的大小是在编译期间决定的。例如:对基本数据类型intnums;nums=newint3;nums0=1;nums1=2;nums2=3;,第二章java语言基础,intnums=1,2,3;,78,数组初始化数组,例如:对非基本数据类型MyDatedates;dates=newMyDate3;dates0=newMyDate(22,7,1964);dates1=newMyDate(1,1,2000);dates2=newMyDate(22,12,1964);或:,第二章java语言基础,MyDatedates=newMyDate(22,7,1964),newMyDate(1,1,2000),newMyDate(22,12,1964);,79,数组初始化数组,第二章java语言基础,publicclassArrayInitpublicstaticvoidmain(Stringargs)Integera=newInteger(1),newInteger(2),newInteger(3),;/第二种方式Integerb=newIntegernewInteger(1),newInteger(2),newInteger(3),;,80,数组初始化数组,第二章java语言基础,对非基本数据类型的第二种初始化,可以带来更大的灵活性。例如:publicclassVarArgsstaticvoidf(Objectx)for(inti=0;ix.length;i+)System.out.println(xi);publicstaticvoidmain(Stringargs)f(newObjectnewInteger(47),newFloat(3.14),newDouble(11.11);f(newObjectone,two,three);,81,数组多维数组,第二章java语言基础,1.定义方式:type维数arrayName;例如:intintArray;inta2;2.分配内存空间:有两种方法:直接为每一维分配空间,如inta=newint23;inttwoDim=newint4;/error分别为每一维分配空间如:inta=newint2;a0=newint3;a1=newint3;可以为每行设置为空间大小不同的数组。如:a0=newint3;a1=newint5;,82,数组多维数组,第二章java语言基础,说明:Java中多维数组被看作数组的数组。例如二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。3.初始化有两种方式:先定义数组,分配空间,然后直接对每个元素进行赋值在定义数组的同时进行初始化。如:inta=2,3,1,5,3,4;见例题:MultiDimArray.java,83,数组改变数组,第二章java语言基础,不能改变一个已定义的数组的大小可以改变引用变量所指向的数组intmyArray=newint6;myArray=newint10;,84,数组数组的拷贝,第二章java语言基础,使用System.arraycopy()方法:/originalarrayintelements=1,2,3,4,5,6;/newlargerarrayinthold=10,9,8,7,6,5,4,3,2,1;/copyalloftheelementsarraytothehold/array,startingwiththe0thindexSystem.arraycopy(elements,0,hold,0,elements.length);,85,见例题:Arrays.java,数组数组的拷贝,第二章java语言基础,86,1.创建两个一维整型数组,并初始化,并实现值和地址的拷贝。2.用多种方法创建几个二维数组:定义固定大小的二维数组定义每行不同列数的数组定义时同时初始化。先定义后初始化,数组习题,第二章java语言基础,
展开阅读全文