java第3章Java语言基础程序0810.ppt

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

《java第3章Java语言基础程序0810.ppt》由会员分享,可在线阅读,更多相关《java第3章Java语言基础程序0810.ppt(90页珍藏版)》请在三一文库上搜索。

1、第三章,第三章 Java语言基础,本节要点和目标.,一、语言与程序 Java程序的构成 二、数据类型、常量、变量 三、表达式 四、流程控制语句,本节要点和目标,语言与程序,人类语言: 汉语、英语、法语,计算机语言: C、java、VB,语言与程序,人类语言: 汉语、英语、法语,计算机语言: C、java、VB,词法,字符构成标识符、运算符。,public class appl3_0 public static void main(String args ) int i; for(i=1;i3;i+) System.out.print(i+“*“+i); System.out.println(“

2、=“+i*i); ,程序(文章),语句,词法:,标识符-系统定义标识符(保留字,不能再用) 用户定义标识符,系统定义标识符 (类名、方法名、语句名、数据类型名、修饰符),用户定义标识符(类名、变量名、常量名、函数名),字母或下划线 + 字母、下划线、数字 + ,各种名称,类名,变量名i,Java程序,值可变,可显示,可运算,一、Java程序的构成,一,java程序结构,public class appl2_5 / 定义public类appl2_5 public static void main(String args ) int i; for(i=1;i3;i+) System.out.pri

3、nt(i+“*”+i); / 输出变量、字符串 System.out.println(“=“+i*i); ,for循环体(程序段),for循环程序头,public类程序头,决定源程序文件名:appl2_5.java,public类appl2_5的程序体,main() 方法method的程序头,main() method的程序体,一个Java程序的基本框架结构: Java程序由一个或多个独立的类组成,但其中必须有一个公有类(如:HelloWorld),而且源代码文件必须与这个公有类的名字相同(如:HelloWorld.java)。 Java的类可以由一个或多个方法组成,其中公有类中的main方法

4、可用作程序运行的入口。,/ The First Java Program public class HelloWorld public static void main(String args) System.out.println(“Hello World!“); ,程序头的注释,HelloWorld公共类,main方法,修饰符,方法头,方法体,方法名,参数,返回类型,二、数据类型、常量、变量,二,数据 类型、常量、变量,java数据类型分为两大类: 基本数据类型 引用数据类型,(一)数据类型,数据类型,Java数据类型,基本类型,引用类型,数值类型,整数类型 占字节 1)字节型 byte

5、1Byte 2)短整型 short 2B 3)整型 int 4B 4)长整型 long 8B 浮点数 1)浮点型 float 4B 2)双精度型 double 8B 字符类型 1)字符型 char 2B,布尔类型 boolean 1Byte,1)类类型 class 2)接口类型 interface 3)数组类型 (专讲) 4)字符串 String,又称复合类型,传递数值,传递地址,整理如下表,内部存储器,数值,Java数据类型,基本数据类型 取值范围与缺省值,逻辑,字符,小数,integer,整数,应有后缀(大、小写均可),应有后缀(大、小写均可),应有后缀(大、小写均可),应有后缀(大、小写

6、均可),十亿量级,万亿亿量级,地球人难有机会用到如此大之数,基本数据类型,Java数据类型 记忆,基本数据类型: byte、short、int、long;float、double;char、Boolean 1 2 4 8 4 8 2 1 基本数据的 首字母小写; 引用类型的 首字母大写。 基本数据类型都有相应的包装类(Wrapper) 如:Integer-int, Double-double 这些包装类已经是“类”了,也就是引用类型了。 类是引用数据类型,占用字节数,求最大值(长整型(long)的):,java.lang.Long. MAX_VALUE java.lang.Long.MIN_V

7、ALUE java.lang.Integer. MAX_VALUE java.lang.Integer.MIN_VALUE java.lang.Short. MAX_VALUE java.lang.Short.MIN_VALUE java.lang.Byte. MAX_VALUE java.lang.Byte.MIN_VALUE java.lang.Float. MAX_VALUE java.lang.Float.MIN_VALUE java.lang.Double. MAX_VALUE java.lang.Double.MIN_VALUE,java.lang,Long,MAX_VALUE,类

8、库,长整型,取最大值,各基本数据类型的,最大值和最小值:,类库,长整型,取最大值,类库,长整型,取最大、最小值,类库,数据类型,/ appl3_1,输出Java定义的整数常数的最大、最小值 public class appl3_1 public static void main(String args ) long lmax=java.lang.Long.MAX_VALUE; int imax=java.lang.Integer.MAX_VALUE; short smax=Short.MAX_VALUE; /省略类库java.lang byte bmax=Byte.MAX_VALUE; / 省

9、略类库java.lang System.out.println(“Max value of long : “+lmax); System.out.println(“Max value of int : “+imax); System.out.println(“Max value of short : “+smax); System.out.println(“Max value of byte : “+bmax); ,Java中类首字均应大写。System类的带包路径是 java.lang.System ,java.lang包默认引入。,求取最大值,显示输出,(二)标识符,1、由字母、数字、下划

10、线_及美元符$组合而成。 2、首字符必为字母、下划线或美元符之一。 3、区分大小写。 4、应能表征其意义。,(四)标识符,第2章 基本元素,本章通过讲解数据和数据类型、变量和常量、表达式和运算符,开始Java程序设计语言的探索之旅; 重点掌握基本数据类型、各种表达式、及语句的书写规范。,2.1 标识符,Java中,标识符由:下划线、$、英文字母、数字组成,除了数字其余三种均可作为首字;Java标识符不限长度。 Java语言使用的是Unicode字符集,含65535个字符,其中前256个是ASCII码及其扩展码。,2.2 关键字,(三)变量,在程序运行过程中,其值可以发生变化的量称变量。,创建变

11、量的语句格式: 数据类型 变量名,(三)变量,例: int n1,n2,n3; float num1,num2;,(二)常量,常量: 在程序运行过程中,其值不能被改变的量。 相当于数学中的常数。如: e=2.71828 =Pai=3.1415926,(二)常量,(1)整数常量,(2)实数常量,十进制整数: 0 9 八进制整数: 0 7 07,0177,036,0418 十六进制整数: 0 9 A F 0x11,0xff,0x3A2C,0X2e,小数形式: -2.13D, 3.14, 1.3F, 4.5f 指数形式: 0.3e9D, -3E10, 2e-2f,注意:long、float、doub

12、le类型数据应有后缀l、f、d(大、小写均可),前置0x决定了后面的:ff、3a2c、2e,均为16进制数。,/ appl3_2, 整数错误的范例 public class appl3_2 public static void main(String args ) long num=32998399887;/错:缺后缀l System.out.println(“num= “+num); ,注意!,long num=32998399887L /正确格式,/ appl3_3,整数数据类型的溢出 public class appl3_3 public static void main(String

13、args ) int i=java.lang.Integer.MAX_VALUE; System.out.println(“i=“+i); System.out.println(“i+1=“+(i+1); System.out.println(“i+2=“+(i+2); ,注意!,System.out.println(“i+1=“+(i+1L);,错,错,System.out.println(“i+2=“+(i+2L);,求得Integer类型的最大值,最大值+1=最小值,数值溢出,最大值再加1,即溢出: 等于最小值 往前进一位,加1,等于:,进1,1,若已无存储设备,则该位自动丢失,最小值再

14、减1,也溢出: 等于最大值 向前借一位,例如:8位数,/ appl3_3a,整数数据类型的溢出 public class appl3_3a public static void main(String args ) int i=java.lang.Integer.MIN_VALUE; System.out.println(“i=“+i); System.out.println(“i-1=“+(i-1); System.out.println(“i-2=“+(i-2); ,注意!,求得Integer类型的最大值,最小值-1=最大值,System.out.println(“i-1=”+(i-1L)

15、; System.out.println(“i-2=“+(i-2L);,加尾缀L,类型由int(4字节)转换为long(8字节),不会再溢出。,/ appl3_4,浮点数应用 public class appl3_4 public static void main(String args ) float num=2.0; System.out.println(num+“*“+num+ “=“+(num*num); / 输出num*num的结果 ,注意!,float num=2.0f,错,(3)布尔型常量,(4)字符型常量,只有两个值: true (真) false(假) 用于选择和循环语句中判

16、断条件成立否。,单一字符:a, A, 1, 2, # /单一字符需置单括号中 特殊字符:即转义字符,用反斜杠作为标记,例: n, b, 为:回车,退格,反斜杠 u0001, u0061 为十六进制数 字符串 :“How do you do?” /字符串需置双括号中,/ /appl3_5_,字符类型 -ASCII码 public class appl3_5_ public static void main(String args ) char ch1=97; char ch2=a; char ch3=u0061; System.out.println(“ch1=“+ch1); System.ou

17、t.println(“ch2=“+ch2); System.out.println(“ch3=“+ch3); ,十进制数97是a的ascii码值,十六进制数u0061是a的ascii码值,三句均显示a,System.out.println(“ch1=”+(ch1+1); System.out.println(“ch2=“+(ch2+2); System.out.println(“ch3=“+(ch3+3);,中文单引号要出错,字符与其ASCII码值是相互对应的,public class appl3_5 public static void main(String args) / TODO Au

18、to-generated method stub char ch1=97+1; /b的ASCII值98 char ch2=a+2; /c的ASCII值99 char ch3=u0061+3; /d的ASCII值100 System.out.println(“ch1=“+ch1); /显示b System.out.println(“ch2=“+ch2); /显示c System.out.println(“ch3=“+ch3); /显示d System.out.println(“ch1=“+(ch1+1); /数据99=97+1+1 System.out.println(“ch2=“+(ch2+1

19、); /数据100=97+2+1 System.out.println(“ch3=“+(ch3+1); /数据101=97+3+1 ,a的ascii码是97,a=u0061,中文单引号要出错,常用转义字符,三、表达式,三,表达式,表达式:用运算符号连接各种数据构成的算式。,(一)赋值表达式,age,18,=,变量或对象,设置值,( ),+=、 =、=、/=,由赋值运算符(=)连接变量(常量、对象等)与设定值,构成的算式。,2.3 表达式与运算符,运算符是用来完成一个动作的特定语言的语法记号。 赋值运算符 增减运算符 算术运算符 关系运算符 逻辑运算符 位运算符,2.5.5 赋值运算符和复合赋值

20、运算符,赋值运算符:=; 复合赋值运算符:赋值运算符与算术运算符、位运算符、移位运算符相复合; a += b;即 a = a + b; 左值为变量或常量; 右值要有确定的值;,(二)算术表达式,双目运算符,(二)算术表达式,由算术运算符连接变量、常量、对象等构成的算式。,2.3 表达式与运算符,运算符是用来完成一个动作的特定语言的语法记号。 赋值运算符 增减运算符 算术运算符 关系运算符 逻辑运算符 位运算符,2.5 运算符,运算符是用来完成一个动作的特定语言的语法记号。,2.5.1 算术运算符 +、-、*、/、%; 有值的量才能进行运算; byte、short、char类型的算术运算会转换成

21、int型再计算,其结果也是int型; 整型相除结果为整型; 取余多用于整型运算; 取余的符号与前者相同。,2.3 表达式与运算符,运算符是用来完成一个动作的特定语言的语法记号。 赋值运算符 增减运算符 算术运算符 关系运算符 逻辑运算符 位运算符,单目运算符,2.5.3 递增递减运算符,短路运算 与运算只要有一个为假,则表达式为假,因此前面部分为假时,则不执行后面部分了。 例如:int i = 3;i 2 | i+3;,+、-在后是先使用后自加; +、-在前是先自加后使用;如: int i = 3; int j = i+; / 先赋值给j,i再自加1赋给它本身 int k = +i; / i先

22、自加1赋给本身,再赋值给j,/ appl3_6,算法运算符 public class appl3_6 public static void main(String args ) int a=2,b,c,d,e; b=a+a+a+; c=(+a)+(+a)+(+a); d=b/a; e=c%a; System.out.println(a+”n”+ b+”n” +c+”n” +d+”n”+ e); ,错:单一字符需置单括号中,a=a+=3 b=a+ +a=3+2=5 2+1 +2,a+=3,a+=4 b=a+ +a+=3+2=5 2+1 +2,a+=3,a+=4 b=a+ + a+ +a=9 2

23、+ 3 +4,a+=3,a+=4,a+=5 b=9算完后,才做最后a+,a=a+=3 b=a=2,/ appl3_6,算法运算符 public class appl3_6 public static void main(String args ) int a=2,b,c,d,e; b=a+a+a+; c=(+a)+(+a)+(+a); d=b/a; e=c%a; System.out.println(a+”n”+ b+”n” +c+”n” +d+”n”+ e); ,错:单一字符需置单括号中,即b=a+ + a+ + a+ 因为+运算符在变量a的后边,即先执行+运算,后执行变量a本身的+运算,故

24、可化为: b=a+ + a+ + a+ b=2 + 3 + 4 = 9 a=a+ a+ a+ a=2+ 3+ 4+ = 5,public class appl3_6a public static void main(String args) int a=2,b,c,d,e; b=a+a+a+; /先执行+运算,后执行a+运算 System.out.println(“a=“+a); /a=2,a=a+ a+ a+=5 System.out.println(“b=“+b); / b=2 + 3 + 4 =9 System.out.print(“a+b=“+a+b); /a+b=59,a+b=5 9

25、,a+b=5 9 System.out.print(“,a+b=“+a+ +b); System.out.println(“,a+b=“+a+“ “+b); System.out.println(“a+b=“+(a+b); /a+b=14 a=2; c=(+a)+(+a)+(+a); /c=3+4+5=12 System.out.println(“c=“+c); d=b/a; /*除法*/ e=c%a; /整除 System.out.println(“b=“+b+“,a=“+a+“,d=“+d); System.out.println(“c=“+c+“,a=“+a+“,e=“+e); ,(三)

26、关系表达式,(三)关系表达式,2.3 表达式与运算符,运算符是用来完成一个动作的特定语言的语法记号。 赋值运算符 增减运算符 算术运算符 关系运算符 逻辑运算符 位运算符,2.5.2 关系运算符与逻辑运算符,关系运算符:、=、=、!= 有值的量才能进行比较; 表达式的值是boolean型; 注意=与=的区别。,逻辑运算符:&、|、! 运算符两边都应是boolean型; 表达式结果是boolean型; &和|的短路运算。,(四)逻辑表达式,true或false,x,y,=,( ),?,&、|、!、&、|,(四)逻辑表达式,2.3 表达式与运算符,运算符是用来完成一个动作的特定语言的语法记号。 赋

27、值运算符 增减运算符 算术运算符 关系运算符 逻辑运算符 位运算符,2.5.2 关系运算符与逻辑运算符,关系运算符:、=、=、!= 有值的量才能进行比较; 表达式的值是boolean型; 注意=与=的区别。,逻辑运算符:&、|、! 运算符两边都应是boolean型; 表达式结果是boolean型; &和|的短路运算。,(五)位运算表达式,例P46,(五)位运算表达式,2.3 表达式与运算符,运算符是用来完成一个动作的特定语言的语法记号。 赋值运算符 增减运算符 算术运算符 关系运算符 逻辑运算符 位运算符,2.5.4 位运算符和移位运算符,位运算符:&、|、(异或)、(取反,包括符号位); b

28、oolean的按位“与”、“或”其值为boolean型; 位运算符没有短路现象。 2&3、2|3、23、2; 移位运算符:、(逻辑) 算术左移:高位溢出,低位补0; 算术右移:低位溢出,高位补原高位; 逻辑右移:低位溢出,高位补0; 算术左移一位乘2,右移一位除2(能整除时);,(六)条件表达式, ? : Java语言规定,表达式2和表达式3必须返回相同的数据类型,并且类型不能为void。,(六)条件表达式,2.5.6 条件运算符,(boolean表达式)?表达式1:表达式2 boolean表达式的值为true时,表达式的结果为表达式1; boolean表达式的值为false时,表达式的结果为

29、表达式2; 经常用它求最大、最小值。 max = (ab) ? a : b;,例,int i = 3; int sum = (i+) + (i+) + (i+); a=b | x=y; 判断char型变量ch是否为数字的表达式是: a)00)&(ch=0)&(ch=0)|(ch=9) (a!=b)&(a+b=0)&(a%2=0) 以下表达式的值不是2的是: a) 2&3 b) 11 c) a=2 d) 13,(七)表达式类型转换,(1)自动类型转换 转换前的数据类型与转换后的类型兼容; 转换后的数据类型的表示范围比转换前的类型大。,(七)表达式类型转换,1、占用字节少的转换成字节较多的类型。

30、2、如short类型遇上int类型,会转换成int型。 3、字符类型会转换成short类型。 4、int类型会转换成float类型。 5、表达式中的一个操作数为double类型,则另一个操作数会转换为double类型。 6、布尔类型不能转换至其他的类型。,(2)强制类型转换 如果要将表示范围大的数据类型转换成较小的数据类型,或想得到想要的数据类型的数据则必须强制类型转换。,格式: (欲转换的数据类型)变量或表达式; 如:(int) c,/ appl3_7,数据类型转换 public class appl3_7 public static void main(String args ) int

31、a=2,b=3,d; float c; c=(float)a/b d=(int)c; System.out.println(a+”n”+ b+”n” +c +”n” +d); ,错:单一字符需置单括号中,缺分号:语句结束符,(八)运算符的优先级,/ appl3_8,运算符的优先级与结合性 public class appl3_8 public static void main(String args ) int a=2,b=3,c=4,d=5,e=6; float f; f=a/3+b*c+/(d+=e); System.out.println(f); ,P47,(八)运算符的优先级,2.6

32、表达式和语句,表达式是运算符、操作数、以及方法调用的序列;它用来说明某一个计算过程的计算结果;其结果有一个唯一的类型。 表达式有运算优先级,可以嵌套; 不同数据类型的操作数进行运算,其转换规则如下。,图中:实线表示没有精度损失的转换,虚线表示可能有精度损失的转换。,2.5.7运算符的优先级,大体上是:算术关系逻辑赋值; ()(不是方法,不是强转)最大,弄不明白加括号。,四、流程控制语句,流程控制语句,四,语句,Java中的语句以分号结束; Java中的分号一定要用英文输入法输入; Java中语句分为:控制语句、方法调用语句、表达式语句、空语句、复合语句; 复合语句:又称块语句,由 括起来的简单

33、java语句构成;复合语句中定义的变量的作用范围只在复合语句中;块可以嵌套。 int k = 0; int i = 0; / i的作用范围到此 / k的作用范围到此 Java不允许在内层块中定义与外层块同名的变量。,例,float f1 = 12.3f + 45.9f; float f2 = 89 + 56.3f; byte b1 = 56; byte b2 = 12; int b3 = b1 + b2; boolean b4 = b2f2; int i1 = 5%3;,2.7 注释,注释掉的语句不是可执行的程序语句; 单行注释:/ 常用于解释某行代码; 多行注释:/*/常用于注释废代码。,J

34、ava 程序结构,顺序结构 sequence structure,选择结构 selection structure,循环结构 iteration structure,(一)顺序语句,sequence structure,(一)顺序语句,/ appl3_9.java, 简单的Java程序 public class appl3_9 / 定义public 类appl3_9 public static void main(String args ) / main( ) method,主程序开始 int num; / 声明整数num num=2; / 将num赋值为2 System.out.printl

35、n(“I have “+num+“ dogs“); / 输出字符串及变量内容 System.out.println(“You have “+num+“ dogs, too“); ,(二)选择语句,selection structure,(二)选择语句,If() ;,If() ; else If() ; else if() . else ;,If() ; else ;,/ appl3_10, 选择结构 import java.io.*; /导入在java.io包里的所有类,*是通配符 public class appl3_10 /决定程序名称的唯一公共类 public static void m

36、ain( String args ) throws IOException int score; String str; System.out.print(“Enter the score:“); BufferedReader buf=new BufferedReader(new InputStreamReader(System.in); str=buf.readLine();/将buf(从屏幕得到的字符串)赋值给str score=Integer.parseInt(str); if (score=90),流类的实例,用构造方法实例一个BufferedReader流类实例。,屏幕输入的实例,待

37、续。,非静态方法需实例化,可带参数运行java程序(字串类型数组),含异常处理,/ 续前页:appl3_10, 选择结构 if (score=90) System.out.println(“优“); else if(score=80) System.out.println(“良“); else if(score=70) System.out.println(“中“); else if(score=60) System.out.println(“及格“); else System.out.println(“不及“); ,BufferedReader buf; /流类的实例 buf=new Buf

38、feredReader/*流类的实例*/(new InputStreamReader(System.in);/实例一个新的BufferedReader,用构造方法实例。new InputStreamReader(System.in)也就是得到一个从屏幕输入的实例 String str;/实例化一个String对象,import java.io.FileReader; import java.io.BufferedReader; import java.io.IOException; public class appl3_10ss1 public static void main(String

39、args) try FileReader fr=new FileReader(“mytest.txt“);/*创建一个FileReader对象*/ BufferedReader br=new BufferedReader(fr); /*创建一个BufferedReader 对象*/ String line=br.readLine(); /*读取一行数据*/ while(line!=null) System.out.println(line); line=br.readLine(); /*流的关闭*/ br.close(); fr.close(); catch(IOException e) /c

40、atch(ArrayIndexOutOfBoundsException e)则这个异常就 /会被捕获,并执行catch程序块中的代码. System.out.println(“文件不存在!“); /try-catch过后程序仍然继续执行(不写try-catch则程序抛出异常后自行终止) /*假设try中有语句int i=new int10;如果你调用int14就一定会抛出ArrayIndexOutOfBoundsException 这个异常,如果你写了try-catch且写了 catch(ArrayIndexOutOfBoundsException e) 则这个异常就会被捕获, 并执行catc

41、h程序块中的代码.*/,switch() case :;break; case :;break; case :;break; default : ; ,/ appl3_11, 选择结构SWITCH语句 public class appL3_11 public static void main( String args ) int month=8; switch(month) case 1:System.out.println(“January”);break; case 2:System.out.println(“February”);break; case 3:System.out.prin

42、tln(“March”);break; case 4:System.out.println(“April”);break; case 5:System.out.println(“May”);break; case 6:System.out.println(“June”);break; case 7:System.out.println(“July”);break; case 8:System.out.println(“August”);break; case 9:System.out.println(“September”);break; case 10:System.out.println(

43、“October”);break; case 11:System.out.println(“November”);break; case 12:System.out.println(“December”);break; default :System.out.println(“error!”); ,改进例appl3_10,iteration structure,(三)循环语句,while() ; ,for(表达式1;表达式2;表达式3) ; ,do ; while();,/app3_12, for循环求9*9乘法表 public class app3_12 public static void

44、 main(String args ) int i,j; for (i=1;i=9;i+) / 外层循环 for (j=1;j=9;j+) / 内层循环 System.out.print(i+“*“+j+“=“+(i*j)+“t“); System.out.println(); ,一个有趣的例题,射雕英雄传的朋友,一定还记得黄蓉遇上神算子瑛姑,给她出的三道题目中有一题是这样的: 今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何? 也就是说, 有一个未知数,这个数除以三余二,除以五余三,除以七余二,问这个数是多少?,一个有趣的例题,示例程序 211 “黄蓉的题目”Calc.ja

45、va public class Calc public static void main(String args) int x; for (x=0;x100;x+) if (x%3=2) /end of if /end of for /end of main /end of Calc,First_Loop: for(int i=1;i100;i+) for(int j=2;jI;j+) if(i%j=0) continue First_Loop; System.out.println(i); ,(四)跳转语句,continue,上去,switch() case :; case :;break; case :;break; default : ; ,break,下去,return return 表达式; int method( ) return; /return 2; ,return,回去,作业: P58 E1、4、8 上机:E10 (参照P37),作业,

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

当前位置:首页 > 其他


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