《java2(Java语言基础).ppt》由会员分享,可在线阅读,更多相关《java2(Java语言基础).ppt(69页珍藏版)》请在三一办公上搜索。
1、Java 语言基础,Lecture2,提纲,Java语言的词法 变量和常量简单数据类型操作符和表达式流程控制,Java语言的词法,分号块空白注释标识符关键字,分号,在Java 编程语言中,语句是一行由分号(;)终止的代码。例如totals=a+b+c+d+e+f;与下式相同total=a+b+c+d+e+f;,块,一个块(block)或一个复合语句是以上括号和下括号()为边界的语句集合;块语句也被用来组合属于某个类的语句。一个块可被用在一个类的定义中 public class Date int day;int month;int year;,块,块语句可以被嵌套 语句块可被嵌套。HelloWo
2、rldApp 类由main方法构成,这个方法就是一个语句块,它是一个独立单元,单元本身可作为在类HelloWorldApp 块中的一组事务之一。public class HelloWorldApp public static void main(String args)System.out.println(Hello World!);,块,其它一些块语句或组的例子如下:/一个语句块 x=y+1;y=x+1;/一个语句嵌套再另一个语句中while(i large)a=a+i;if(a=max)b=b+a;/nested block is here a=0;,空白,Java 程序中允许任意多的空白
3、,在源代码元素之间允许空白,空白的数量不限。空白(包括空格、tabs 和新行)可以改善你对源代码的视觉感受。int x;x=23*54;int x;x=23+54;,注释,Java语言提供三种注释方法单行注释:/多行注释:/*/文档注释方法:/*/注释的原则注释时以增加代码的清晰度为目的保存注释的简洁在写代码之前先写注释在写注释时不但要写出做什么,还要写出为什么这么做。,标识符,在Java 编程语言中,标识符是赋予变量、类或方法的名称。变量名的开头可以是任何字母、下划线(_)或者是货币符号($)标识符开始不能是数字不能以关键字作为标识符Java标识符是区分大小写的标识符的长度不受限制,例子,有
4、效标识符如下:identifieruserNameUser_name_sys_varl$changeString 和string是不同的,abstract double int super boolean else interface switch break extends long synchronized byte final native this case finally new throw catch float package throws char for private transient class goto*protected try const*if public vo
5、id continue implements return volatile default import short while do instanceof static,关键字,目前Java语言一共定义了48个保留关键字。这些关键字与运算符和分隔符的语法一起构成Java语言的定义。,关键字,关键字对Java 技术编译器有特殊的含义,它们可标识数据类型名或程序构造(construct)名。以下是有关关键字的重要注意事项:true、false 和null 为小写,而不是象在C+语言中那样为大写。严格地讲,它们不是关键字,而是文字。然而,这种区别是理论上的。无sizeof 运算符;所有类型的长度
6、和表示是固定的,不依赖执行。goto 和const 不是Java 编程语言中使用的关键字。,常量和变量,常量定义 在程序运行过程中,不再发生改变的量称为常量。用保留字final来实现 final typeSpecifier varName=value,varName=value;如:final int NUM=100;常量分类整数常量浮点数常量字符常量布尔常量,十进制常量如100,200注意第一位不能为0八进制常量以0开头如072,065 十六进制常量以0 x或0X开头如0XFF长整形常量以L或l结尾 缺省情况下为int整形,32位,长整形常量为64位。,整数常量,浮点常量,默认情况下浮点型常
7、量是double型的后面带f的为float类型如 2e3f 3.f 4f 5.027763e+34 3.6,字符常量,用单引号包起来英文字母a、A 数字1、2转义序列,布尔常量true,falsetrue1,false0,布尔常量,语法 modifier*type id=value,id=valuetype:byte|short|int|long|char|float|double|boolean|class ID|interface ID value:constants or expressions of the typeinitialization:Assignment(id=value)
8、,Default(0,null)modifier:static|final|public|protected|private|abstract|native|synchronized,变量,作用域:有效范围 在一个作用域中声明的变量对于该作用域外定义的代码是不可见的外部作用域中声明的对象在内部作用域是可见的变量进入其作用域时被创建,离开其作用域时被清除。只有离开作用域它就不再保存它们的值了不能重复声明变量,变量作用域例子,/Demonstrate block scopeclass Scope public static void main(String args)int x;x=10;if(x
9、=10)int y=20;System.out.println(“x and y:”+x+“”+y);x=y*2;y=100;tln(“x is”+x);,变量作用域例子,/This is program will not compileclass Scopeerr public static void main(String args)int bar=1;int bar=2;,Java 数据类型,强类型:安全性和鲁棒性,类型分类 简单(基本)数据类型:byte,short,int,long,char,float,double,boolean 复合(引用)数据类型:Array,Class,In
10、terface,简单数据类型,Type,Size,Range,Default,注意,(1)符号:所有的整数都是有符号的(2)C中的整数 有符号或无符号 int j;定义一个整数,大小由CPU决定,Unicode定义的国际化的字符集能表示迄今为止人类语言的所有字符集。它是几十个字符集的统一,例如拉丁文,希腊语,阿拉伯语,古代斯拉夫语,希伯来语,日文片假名,匈牙利语等等,这也是为了可移植性特点设置的。,Unicode,编码:国际化,Unicode(16),ISO-Latin-1(8),ASCII(7),表示:没有Unicode 字符编辑器 ASCII(7),ISO-Latin-1(8)Unicod
11、e(16),自动转换:(1)这2种类型是兼容的(2)目的类型的范围要比来源类型的大(3)基本规律:表示的范围 byteint,charint,charint,longfloat,floatdouble,类型转换,强制转换:缩小(1)“由大缩小”(2)语法:(type)value(3)例如:doublelong,floatint,doublefloat(4)instanceof:,类型转换,整型,实型,字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级;,(1)byte a=40,b=50,c=100;int d=a*b/c;a*b is lifted
12、 as int before divided by c,类型转换示例,(2)byte b=50;b=b*2;,(3)byte b=42;char c=a;short s=1024;int i=50000;float f=5.67f;double d=.1234?(f*b)+(i/c)-(d*s)float+int-double double,(4)short s=-134;byte b=(byte)s;/b=122,类型转换示例,class Lecture02 public static void main(String args)double fv1,fv2;int iv1=123;fv1=
13、iv1/50;fv2=iv1/50.0;System.out.println(fv1:+fv1);System.out.println(fv2:+fv2);,Java 操作符,()+-!instanceof*,/%+-,=!=&,|&|?:=op=,Java 操作符,操作数的数目划分一元操作符二元操作符三元操作符按照功能划分赋值运算算术运算位运算关系运算条件运算其他,按操作数划分,一元操作符(),!二元操作符,*,/,%=,Op=,=,=,!=,|,&,&,|三元操作符?:,赋值运算,赋值运算符=,及其扩展赋值运算符如+=,=,*=,/=等。例如:i=3;i+=3;/等效于i=i+3;,算术运
14、算,算术运算符为如下几种:+,-,*,/,%,+,-,算术运算,对整数进行“/”除法运算时,所有的余数要被舍去 int i=9;int j=4;求 i/j的值+a,-a表示先对a加一,然后对a进行其他的操作,而a+,a是先对a进行操作,然后对a进行加一操作。int i=0 count=2+i+求i和count的值 int i=0 count=2+i 求i和count的值,位运算,运算符有如下几种:,&,|,,位运算,例如:a=10011101;b=00111001;则有如下结果:a3=11110011 a3=00010011;a,关系运算,关系运算符为如下几种:,=,=,=,!=,关系运算,例
15、如:count3;i=0;n!=-1;注意:比较运算符的表达式的值为布尔型。,逻辑运算,逻辑运算符的类型有如下几种:|,,逻辑运算,逻辑与或者逻辑或的运算是按照从左向右检测,对于逻辑或,如果第一个表达式为真,那么后面的表达式将不再计算,对于逻辑与,如果第一个表达式为假,那么其后面的表达式将不再计算,例如:class test public static void main(String args)int i=0;System.out.println(Test:+(23)|(0i+);System.out.println(“i:+i);,条件运算,?:表示if()then elsea?x:y如果
16、a为真,则运行x,否则运行y例如:result=(sum=0)?1:num/sum);,优先级,优先级是指同一个式子中多个运算符被执行的次序,同一级里的操作符具有相同的优先级,相同优先级的操作符号相遇时,根据结合性决定运算次序 由于优先级和结合性都比较难记忆,所以最好用括号括起来指定其优先级,其它,包括分量运算符下标运算符 实例运算符instanceof内存分配运算符new强制类型转换运算符(类型)方法调用运算符()等例如:System.out.println(hello world);int array1=new int4;,优先级,1.()2.+-!instanceof3.new(type
17、)4.*/%5.+-6.=8.=!=9.&,10.11.|12.&13.|14.?:15.=+=-=*=/=%=16.&=|=,运算符连接变量、常量等构成的一个序列表达式的值由各构成元素共同确定单独的变量和常量也称为表达式例如:a+b;a+,a-,a,+a 方法调用:.(*);ab;,表达式语句,分支语句,分支语句提供了一种控制机制,使得程序的执行可以跳过某些语句不执行,而转去执行特定的语句。条件语句 if-else if(布尔表达式)语句或块;或if(条件为真)语句或块;else 语句或块;,例子:int count;count=getCount();if(count 0)System.ou
18、t.println(Error:count value is negative.);else System.out.println(There will be+count+people for lunch today.);,分支语句,注意 在Java 编程语言中,if()用的是一个布尔表达式,而不是数字值,这一点与C/C+不同。前面已经讲过,布尔类型和数字类型不能相互转换。因而,如果出现下列情况:if(x)/x is int你应该使用下列语句替代:if(x!=0)全部else 部分是选择性的,并且当测试条件为假时如不需做任何事,else 部分可被省略。,分支语句,switch(expressi
19、on)case value1:statement1;break;case value2:statement2;break;case valueN:statemendN;break;default:defaultStatement;,多分支语句,多分支语句,表达式expression的返回值类型必须是这几种类型之一:int,byte,char,short;case子句中的值valueN必须是常量,而且所有case子句中的值应是不同的;default子句是可选的;break语句用来在执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行(在一些特殊情况下,多个不同的ca
20、se值要执行一组相同的操作,这时可以不用break);当变量或表达式的值不能与任何case 值相匹配时,可选缺省符(default)指出了应该执行的程序代码;如果任一个表达式不能与case值相匹配且没有default子句时,则程序不作任何操作,而是直接跳出switch语句。如果没有break 语句作为某一个case 代码段的结束句,则程序的执行将继续到下一个case,而不检查case表达式的值。,多分支语句,例1switch(colorNum)case 0:setBackground(Color.red);break;case 1:setBackground(Color.green);brea
21、k;default:setBackground(Color.black);break;,多分支语句,例2:switch(colorNum)case 0:setBackground(Color.red);case 1:setBackground(Color.green);default:setBackground(Color.black);break;,循环语句,循环语句使语句或块的执行得以重复进行,直到满足终止循环的条件为止。Java 编程语言支持三种循环构造类型:while语句do-while语句for语句for 和while 循环可能连一次循环体都未执行,而do while 将至少执行一次
22、循环体。,while语句,while语句while(布尔表达式)语句或块 例如:int i=0;while(i 10)System.out.println(Are you finished yet?);i+;System.out.println(Finally!);,do-while语句,do-while语句 do 语句或块;while(布尔测试)例如:int i=0;do System.out.println(Are you finished yet?);i+;while(i 10);System.out.println(Finally!);,for语句,for语句for 循环的句法是:fo
23、r(init_expr;boolean testexpr;alter_expr)statement or block for语句执行时,首先执行初始化操作,然后判断终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。初始化、终止以及迭代部分都可以为空语句(但分号不能省),三者均为空的时候,相当于一个无限循环。在初始化部分和迭代部分可以使用逗号语句,来进行多个操作。逗号语句是用逗号分隔的语句序列。,for语句,例如:for(int i=0;i 10;i+)System.out.println(Are you finished yet?);Syst
24、em.out.println(Finally!);注意Java 编程语言允许在for()循环结构中使用逗号作为分隔符。例如,for(i=0,j=0;j10;i+,j+)是合法的;它将i 值初始化为零,并在每执行完一次循环体后,增加一次它们的值。for(i=0,j=10;ij;i+,j-),跳转语句,break语句continue语句返回语句return,break语句,在switch语中,break语句用来终止switch语句的执行。使程序从switch语句后的第一个语句开始执行。在Java中,可以为每个代码块加一个括号,一个代码块通常是用大括号括起来的一段代码。加标号的格式如下:BlockL
25、abel:codeBlock break语句的第二种使用情况就是跳出它所指定的块(如果没有指定就是跳出当前块),并从紧跟该块的第一条语句处执行。例如:break BlockLabel;,break语句,break语句 a:/标记代码块a b:/标记代码块b c:/标记代码块c break b;/此处的语句块不被执行/此处的语句块不被执行/从此处开始执行,例子,Example1:Exit current loop(while,do-while,for)or switch int i;for(i=0;i Objs.length;i+)if(Objsi=null)break;Example2:Exi
26、t outer loop/block search:for(y=0;y Matrix.length;y+)for(x=0;x Matrixy.length;x+)if(Matrixyx=flag)found=true;break search;,例子,boolean t=true;a:b:c:System.out.println(“Before the Break”);if(t)break b;System.out.println(“This wont execute”);System.out.println(“This wont execute”);System.out.println(“T
27、his is after b”);,continue,continue语句用来结束本次循环,跳过循环体中下面尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。对于for语句,在进行终止条件的判断前,还要先执行迭代语句。它的格式为:continue;也可以用continue跳转到括号指明的外层循环中,这时的格式为 continue outerLable;,例子,例如:outer:for(int i=0;i10;i+)/外层循环 inner:for(int j=0;j10;j+)/内层循环 if(ij)continue outer;,例子,继续当前循环for(int i=0;i i)Sy
28、stem.out.println(“i=”+i);continue outer;System.out.print(“”+(i*j);,return,返回语句returnreturn语句从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续程序的执行。返回语句有两种格式:return expression;return;return语句通常用在一个方法体的最后,否则会产生编译错误,除非用在if-else语句中,例子,boolean t=true;System.out.println(“Before the return”);return;/error should be if(t)return;System.out.println(“This wont execute);,小节,Java语言的词法 注释、关键字和标识符变量和常量变量的作用域简单数据类型类型的转换操作符和表达式操作符的优先级流程控制break和continue的用法,