ch3Java语言基础.ppt

上传人:本田雅阁 文档编号:2148863 上传时间:2019-02-22 格式:PPT 页数:92 大小:631.01KB
返回 下载 相关 举报
ch3Java语言基础.ppt_第1页
第1页 / 共92页
ch3Java语言基础.ppt_第2页
第2页 / 共92页
ch3Java语言基础.ppt_第3页
第3页 / 共92页
亲,该文档总共92页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《ch3Java语言基础.ppt》由会员分享,可在线阅读,更多相关《ch3Java语言基础.ppt(92页珍藏版)》请在三一文库上搜索。

1、Java语言基础,目标,通过本章学习,您将可以: 熟悉Java用于数字、字符及类似的简单数据地的数据类型。这些类型称为基本类型。 了解赋值语句及表达式。 了解Java分支语句,循环的概念。 了解数给以及如何在简单的Java程序中使用数组。 学习如何采用数组作为参数,以及如何定义方法以返回数组。 熟悉多维数组。,Java标识符(identifier),只能包含字母、数字(09)和下划线(_). 首字符不能是数字。 不能包含空格或任何其他字符,比如点号(.)或(*)。 Java是区分大小写的。 名字的长度没有限制。 关键字不能用作类、对象或除其原义之外的任何事物的名字。 不应该在标识符中使用$符号

2、。,标识符用法举例,numberOfBaskets. NumberOfBaskets, number_of_baskets 通常用大小字母来“断开”由多个单词组成的名字。 inputStream YourClass CarWash hotCar 不合法:My.class go-team 7eleven,关键字,关键字也被称为保留字(reserved word)。 不能重新定义任意关键字。 它们的含义是由Java语言确定的,无法改变。 不能将任意一个关键字作为变量名、方法名或类名。 null, true ,这些单词不被当作关键字。但是,有些作者会将它们列为关键字。保险起见,我将它们当作关键字看

3、待,你们也应该如此。,Java基本数据类型,逻辑型(boolean) 文字型(char) 整数类型(byte 、short、 int 和long) 浮点型(float double),逻辑型(boolean),只有两个值,即true(真),false(假) 命名boolean变量时,要选择在boolean表达式的值为true时也为真的表述方式。 要避免使用那些不能很清楚地描述变量值含义的名字,比如isPositive 和systemAreOK等。这样,将其用在while循环、if-else语句或其他控制语句中时,你就很容易理解其含义。 不要使用numberSign 、systemStatus这

4、样的名字,。,文字型(char),用于单个字符,比如字母或百分号。 Java程序中给出一个字符时,会将其包围在单引号中,而不是包围在比引号中。 在字符两边使用的是相同的引用符号。,char symbol; Symbol=A; System.out.println(symbol);,转义字符,The word “Java” names a language, not just a drink!,以反斜杠指示的特殊字符。 每个转义字符都写成两个符号,但实际,String类,Java中没有用于字符串的基本类型。 String类型的值是引用字符串,它是被当作一个单独项处理的字符序列。 可以用+运算符拼

5、接任意数量的String对象。甚至可以通过+运算符将一个String变量和任何其他类型的对象拼接起来。结果总是一个String对象。,1.String solution=“The answer is “ + 42; 2.String name=“xiaoshenyang”; String greeting = “Hi ” + name; System.out.println(greeting);,整数类型,整数类型:byte, short, int 和 long,类型 长度 取值范围 byte 8位 -27 27-1 short 16位 -215 215-1 int 32位 -231 231-

6、1 long 64位 -263 263-1,整型常量,Java中缺省整型是 int 有3种形式:十进制、八进制、十六进制,十进制 八进制 十六进制 _ int 24 0771 0XAB07 long 24L 0771L 0XAB07L,浮点型,浮点型:float 和 double 长度: float : 32位 double: 64位 双精度类型double比单精度类型float具有更高的精度和更大的表示范围,但float类型具有速度快、占用内存小的优点。 浮点型变量的默认值是0.0。 常量缺省是 double 类型。,变量,程序中的变量(variable)是用来存储数字和字母这样的数据的。可

7、以视为某种类型的容器。 变量中的数字、字母或其他数据项称为它的值。值是可以改变的。 变量是作为存储单元实现的。每个变量都分配了一个存储单元。在为其赋值时,该值就被放置在变量的存储单元中。 变量的命名规则遵循Java标识符拼写规则。除此之外,还应该选择一些有帮助的变量名。 使用Java程序中的每个变量之前都必须先对其进行声明。,变量的作用域,局部变量。在一个方法或一对 表示的代码块内定义。也称为自动变量或临时变量。作用域是所在的方法或代码块。 类成员变量。在方法外声明且属于一个类的定义体的变量。作用域是整个类。 方法参数。方法调用时传递的参数。作用域是所在的方法。 异常处理器参数。是catch语

8、句块的入口参数。作用域是catch语句后由 表示的语句块。,变量,块内说明的变量将屏蔽其所在类定义的同名变量。 同一块中如果定义两个同名变量则引起冲突。Java允许屏蔽,但冲突会引起编译错误。,变量的初始化,类成员变量是系统自动进行初始化。 局部变量必须在使用前手工赋初值进行初始化。如局部变量没有经过初始化,就将产生编译错误。,变量,创建一个对象后,使用new运算符分配存储空间时,系统按下表中的值自动初始化成员变量。,变量,自动变量在使用之前必须初始化。 例: int x = (int)( Math.random( ) * 100 ); int y; int z; if (x 50) y =

9、9; z = y +x; / 可能在初始化之前使用导致编译错误,Java操作符类别,算术运算操作符:+,-,*,/, %, +, - - 关系操作符:, =, , , & , |, (逐位异或), (按位取反) 逻辑操作符:&, |, !, (异或),&, | 赋值操作符:=, +=, -=, *=, /=, %=,&=, |=, =, =, = 其它操作符: ?: , , . , ( ),(type), new, instanceof,程序 3-1,class Customer /* 说明变量的作用域*/ public static void main(String args) Custom

10、er customer = new Customer(); String name = “John Smith”; String name = “Tom David”; customer.name = name; System.out.println( “The customers name: ”+customer.name); private String name; ,逻辑操作符与位操作符,逻辑操作符与位操作符相同的,根据操作数判定是何种运算符 &, | - 称为不短路与、或; &,| - 称为短路与、或。,右移操作符 和 , :带符号右移 1010 2 111010. :无符号右移,以0

11、 填充 1010 2 001010 .,Java 强制类型转换,Java语言不支持变量类型间的任意转换,有时必须显式地进行变量类型的转换。 一般形式:(type) expression 例:(float)x/2 对强制类型转换的限制: 整型与浮点型可以相互转换,但基本类型和数组、对象等复合类型之间不能互相转换。,表达式的提升和转换,例: long bigval = 6; int smallval = 99L; float z = 12.414F; float z1 = 12.414;,/6是整型量,所以该语句正确,/99L是长整型量, smallval是int型量,赋值不相容,该语句错误,/1

12、2.414F是浮点量,该语句正确,/12.414是双精度量,不能赋给单精度变量z1。该语句错误,表达式的提升和转换,显式转换如下: long bigValue = 99L; int squashed = (int) (bigValue); 转换时,目标类型用括号括起来,放到要修改的表达式的前面。,流控制,语句是Java的最小执行单位,语句间以分号(;)作为分隔符。,表达式语句,下面是一些表达式语句: customer1 = new Customer(); point2 = new Point(); x = 12; x+;,表达式语句,方法调用通常返回一个值,一般用在表达式中。有的方法调用可直接

13、当作语句。 如: System.out.println(“Hello World!”);,块,块是一对花括号“”和“”括起来的语句组。 如, Point point1 = new Point(); int x = point1.x; 第一个块是空块,其中不含任何语句。第二个块含两条语句。 方法体是一个块。块还用在流控制的语句中,如if语句、switch语句及循环语句。,分支语句,分支语句根据一定的条件,动态决定程序的流程方向,从程序的多个分支中选择一个或几个来执行。 分支语句共有两种:if语句和switch语句。,分支语句,if语句的基本语法是: if (逻辑表达式) 语句1; else 语句

14、2; if语句中的else子句是可选的。 if关键字之后的逻辑表达式必须得到一个逻辑值,不能以数值来代替。,1. if语句,if语句的含义,当逻辑表达式结果为true时,执行语句1,然后继续执行if后面的语句。当逻辑表达式为false时,如果有else子句,则执行语句2,否则跳过该if语句,继续执行后面的语句。 语句1和语句2既可以是单语句,也可以是语句块。 if语句可以嵌套,嵌套时,规定else子句属于离它最近的if语句。,例,int count; count = getCount(); / 程序中定义的一个方法 if (count 0) System.out.println( “Error

15、: count value is negative!”); else System.out.println(“There will be” +count +“ people for lunch today.”); ,if语句的嵌套,例: if (firstVal = 0) if (secondVal = 1) firstVal+; else firstVal-;,2. switch语句,switch语句是多重分支语句,它的语法格式是: switch (表达式) case c1: 语句组1; break; case c2: 语句组2; break; case ck: 语句组k; break; d

16、efault: 语句组; break; ,2. switch语句,表达式的计算结果必须是int型或字符型,即是int型赋值相容的。 当用byte,short或char类型时,要进行提升。,2. switch语句,switch语句不允许使用浮点型或long型表达式。 c1,c2,ck是int型或字符型常量。default子句是可选的,并且,最后一个break语句完全可以不写。,switch语句的语义,计算表达式的值,用该值依次和c1,c2,ck相比较。如果该值等于其中之一,那么执行其后的语句组,直到遇到break语句跳到switch之后的语句。如果没有相匹配的值,则执行default之后的语句。

17、,switch语句的语义,switch语句中各ci之后的语句既可以是单语句,也可以是语句组。 不论执行哪个分支,程序流都会顺序执行下去,直到遇到break语句为止。,2. switch语句示例,例: / colorNum是整型变量 switch (colorNum) case 0: setBackground(Color.red); break; case 1: setBackground(Color.green); break; default: setBackground(Color.black); break; ,2. switch语句示例,switch语句和if语句可以互相代替。 例:

18、 if (colorum = 0) setBackground(Color.red); else if (colorNum = 1) setBackground(Color.green); else setBackground(Color.black);,循环语句,循环语句控制程序流多次执行一段程序。 Java语言提供三种循环语句:for语句、while语句和do语句。,1.for语句,for语句的语法格式是: for (初始语句;逻辑表达式;迭代语句) 语句; 初始语句和迭代语句中可以含有多个语句,各语句间以逗号分隔。 for语句括号内的三部分都是可选的,逻辑表达式为空时,默认规定为恒真,f

19、or语句的语义,先执行初始语句,判断逻辑表达式的值,当逻辑表达式为真时,执行循环体语句,执行迭代语句,然后再去判别逻辑表达式的值。这个过程一直进行下去,直到逻辑表达式的值为假时,循环结束,转到for之后的语句。 for语句中定义的循环控制变量只在该块内有效。,循环语句示例,for (int i = 0; i 3; i+) System.out.println(“Are you finished yet?”); System.out.println(“Finally!”);,结果,Are you finished yet? Are you finished yet? Are you finish

20、ed yet? Finally!,循环语句示例,for ( ; ; ) System.out.println(“Always print!”); 该语句等价于: for ( ; true ; ) System.out.println(“Always print!”);,这段循环不会停止。,循环语句示例,int sumi = 0, sumj = 0; for ( int i = 0, j = 0; j 10; i+, j+) sumi += i; sumj += j; ,2. while循环,while循环的语法是: while (逻辑表达式) 语句; while语句中的逻辑表达式不能用数值来代

21、替。,2. while循环,while语句的语义是: 计算逻辑表达式,当逻辑表达式为真时,重复执行循环体语句,直到逻辑表达式为假时结束。,while语句的语义,如果第一次检查时逻辑表达式为假,则循环体语句一次也不执行。 如果逻辑表达式始终为真,则循环不会终止。,while循环示例,例: int i = 0; while (i 3) System.out.println(“Are you finished yet?”); i+; System.out.println(“Finally!”);,3. do循环语句,do语句的语法格式是: do 语句; while (逻辑表达式);,3. do循环语

22、句,do语句的语义是: 首先执行循环体语句,然后判定逻辑表达式的值,当表达式为真时,重复执行循环体语句,直到表达式为假时结束。 不论逻辑表达式的值是真是假,do循环中的循环体都至少执行一次。,do循环示例,do int i = 0; do System.out.println(“Are you finished yet?”); i+; while (i 3); System.out.println(“Finally!”);,循环语句,for、while及do语句可互相替代。 例如: do 语句1; while (逻辑表达式); 等价于: 语句1; while(逻辑表达式) 语句1;,特殊的流控

23、制语句,Java语言使用两条特殊的流控制语句: Break continue 用在分支语句或循环语句中。,特殊的流控制语句,1. 标号 标号可以放在for,while或do语句之前。 语法格式为: 标号:语句;,特殊的流控制语句,2. break语句 break语句可用于switch,for,while及do语句中。 语义:跳过本块中余下的所有语句,转到块尾,执行其后的语句。,break语句示例,for (int i = 0; i 100; i+) if ( i = 5 ) break; System.out.println(“i= ” +i); ,特殊的流控制语句,break语句还可以和标号

24、结合使用。 语法格式为: break 标号; 语义:是跳出标号所标记的语句块,继续执行其后的语句。,break语句示例,class Break public static void main (String args) int i, j = 0, k = 0, h; label1:for( i = 0; i 100; i+, j += 2) label2: label3:switch( i%2 ) case 1: h=1; break; default: h=0; break; if( i=50 ) break label1; System.out.println(“i=” +i); ,特殊的

25、流控制语句,3. continue语句 在循环语句中,continue可以立即结束当次循环而执行下一次循环,当然执行前先判断循环条件是否满足。 continue语句也可以和标号一起使用。 语法格式为: continue 标号;,continue语句示例,outer: for (int i = 0; i i ) System.out.println(); continue outer; System.out.print(“*”); ,数组,数组说明 一个数组是一系列的匿名变量,数组中的元素可通过下标来访问。 在Java中,数组是对象。 类Object中定义的方法都可以用于数组。,数组说明,程序员

26、可以说明任何类型的数组,数组元素可以是基本类型,也可以是类类型,当然还可以是数组。 例 char s ; Point points ; s的每个元素都是char类型的,points的每个元素都是类Point类型的。,等价的数组说明,char s; Point points; 这两行说明与前面的说明完全等价。,创建数组,和所有对象一样,程序中使用new关键字创建数组,方括号中的数字表示数组元素个数。 例: s = new char20; points = new Point100; points0 = new Point(); points1 = new Point(); Java中没有静态的数

27、组定义,数组的内存都是通过new动态分配的。,Point类定义如下: class Point int x, y; Point ( int x1, int y1) x = x1; y = y1; Point() this(0, 0); ,图说明,说明语句: Point points; 执行完毕,系统为变量points分配一个引用空间。 说明语句: points = new Point 100; 执行完毕,系统在内存中分配一个数组对象并把数组引用赋给变量points, 说明语句: points1 = new Point ();,数组说明与数组创建可以合并: char s = new char 20

28、; Point points = new Point 100; 数组变量的类型可以不同于所指向的数组类,但应该是它的父类。 例如: Object points; points = new Point 100; 例如: Point points; points = new Object 100;,正确,错误,数组边界,在Java中,数组下标从0开始。 数组中的元素个数length是数组类中唯一的数据成员变量。 使用new创建数组时系统自动给length赋值。 数组一旦创建完毕,其大小就固定下来。 程序运行时使用length进行数组边界检查。 如果发生越界访问,则抛出一个异常。,示例,int li

29、st = new int 10; for (int i = 0; i list.length; i+) / 进行相应处理的代码 循环的结束条件中使用list.length,而不是常数10。 好处:不会引起数组下标越界,使程序更健壮,修改更方便。,数组初始化,数组名加上下标可以表示数组元素。 数组的下标范围为0到length-1。 当创建一个数组时,每个元素都被初始化。 Java允许用初值来创建数组。,示例,String names = Georgianna; Jen; Simon; Tom ;,静态初始化,静态初始化可用于任何元素类型,初值块中每个位置的每个元素对应一个引用。 names =

30、new String4; names0 = “Georgianna“; names1 = “Jen“; names2 = “Simon“; names3 = “Tom“;,多维数组,Java可以建立数组的数组(的数组),由此得到多维数组。 一般来讲,n维数组是n-1维数组的数组。 说明多维数组时使用类型及多对方括号。 多维数组可以从最高维起,分别为每一维分配内存。,示例,int twoDim = new int 4 ; twoDim0 = new int5; twoDim1 = new int5;,二维数组,创建二维数组的一般格式为: type arrayN = new type arrlen

31、g1 ; arrayN 0 = new type arrleng2; arrayN 1 = new type arrleng2; arrayN arrleng1 - 1 = new type arrleng2;,非矩阵数组,在Java中还可以创建非矩阵数组。 例4-4 int twoDim = new int 4 ; twoDim0 = new int2; twoDim1 = new int4; twoDim2 = new int6; twoDim3 = new int8;,twoDim数组为4行,每行的元素个数分别为2,4,6,8个,各不相同。 数组形式如下:,该数组各维的长度如下 twoD

32、im.length = 4 twoDim0.length = 2 twoDim1.length = 4 twoDim2.length = 6 twoDim3.length = 8,二维矩阵数组说明,二维矩阵数组的一般说明格式为 type arrayName = new type length1length2; 其中,arrayName是数组名,length1和length2分别为数组各维的大小,type是数组元素的类型。,例 int matrix = new int 45;,将创建一个有4个数组的数组,每个数组中又有5个整数,即4行5列的整数矩阵。,等价于: int matrix = new

33、int 4 ; for (int j = 0; j matrix.length; j+) matrix j = new int5;,多维数组的初始化,多维数组的初始化与一维数组类似, 以二维数组静态初始化为例: int a = 2,3, 1,5, 3,4; 它的形式如下: 2 3 1 5 3 4 使用两个下标可以访问数组中的任一元素。,正确的说明示例,int a1 = new int 23; int a2 = new int 2 ; int a3 = new int 46;,不正确的说明示例,int errarr123; int errarr2 = new int 4; int errarr3

34、 4 = new int 34;,不允许静态说明数组。,数组的维数说明顺序应从高维到低维。,数组维数的指定只能出现在new运算符之后。,数组拷贝,数组创建后就不能改变它的大小,但是可以使用相同的引用变量指向一个全新的数组。 int elements = new int6; elements = new int10; Java在System类中提供了一个特殊的方法arraycopy( ),它实现数组之间的拷贝。,示例,class ArrayTest public static void main(String args) / 初始数组 int elements = 1, 2, 3, 4, 5, 6 ; / / 增大后的新数组 int hold = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ; / 把elements数组中的所有元素复制到 / hold数组中,下标从0开始 System.arraycopy(elements, 0, hold, 0, elements.length); ,数组hold的内容为:1,2,3,4,5,6,4,3,2,1。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1