工学第2章Java程序设计语言课件_第1页
工学第2章Java程序设计语言课件_第2页
工学第2章Java程序设计语言课件_第3页
工学第2章Java程序设计语言课件_第4页
工学第2章Java程序设计语言课件_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

1、第 2章Java 程序设计语言概述2.1 Java程序设计语言的发展1995年5月发布Java和HotJava浏览器1995年9月宣布将提供Java开发工具1995年12月发布JavaScript1996年推出JDK1.01996年颁布JavaBeans规范1997年推出JDK1.1.21998年12月Sun公司发布了Java2平台2.1 Java程序设计语言的发展1999年6月SUN公司重新定义了Java技术的框架,形成了现在的3个版本:1、J2ME(Java2 Micro Edition)以消费性电子产品为目标的高度优化的Java运行环境。2、J2SE(Java2 Standard Edi

2、tion)开发客户端应用程序的Java标准平台,是Java2的标准版,主要用于桌面应用软件的编程。3、J2EE(Java2 Enterprise Edition)是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。具有模块化、可重用的JavaBean组件一个java类(参考教材388页)。 要学习j2ee就要先学习j2se2.2 Java程序设计语言的基本特征简捷性面向对象分布式健壮性结构中立安全性可移植性解释执行高性能多线程2.3 Java程序的运行环境编译型源程序字节码程序Java源程序可执行程序exe裸机操作系统解释器编译连接编译运行解释运行.java.cl

3、assJava是解释型的高级编程语言Java虚拟机运行Java程序的基本过程1、利用编辑器编写 Java源程序源文件名:主类名.java2、利用编译器将源程序编译成字节码文件字节码文件名:源文件名.class3、利用虚拟机(解释器)运行工作过程:载入、代码校验、解释执行常见的Java开发环境从网络上直接下载JDK(Java Developer Kit),并利用命令行方式操作javac(编译器);java(解释器)Java集成开发环境(IDE)Visual J+、Visual Cafe、JBuilder、EclipseJava教学集成开发环境BlueJ(需要JDK1.3以上版本的支持)、JCre

4、ater是一个JAVA集成开发环境(IDE)。其最大特点是与机器中所装的JDK完美结合,是其它任何一款IDE所不能比拟的。 其实,有很多高手根本不用这些工具,随便一个文本编辑器(如记事本)+JDK就可编一个非常完美的绝对的纯的Java程序.刚开始学习j2se先建议不要使用IDE,然后渐渐的过渡到使用IDE开发2.4 Java程序的基本结构Application应用程序:它是一个完整的应用程序,可以利用Java虚拟机独立地运行。 Applet(小应用程序):它不是一个完整的应用程序,而是框架程序中的一个模块,因此只能在WWW 浏览器环境下运行。 Application应用程序举例import j

5、ava.io.*;public class MyFirstJavaProgram public static void main(String args) System.out.println(“This is the first Java Application”); Java Application程序基本结构import语句class public static void main(String args) 主类名称方法体Applet 应用程序举例import java.applet.*;import java.awt.*;public class MyFirstJavaApplet e

6、xtends Applet public void paint(Graphics g) g.drawString(“This is the first Applet program.”,50,50); Java Applet小应用程序基本结构import java.applet.*;import java.awt.*;class extends Applet 类名称类成员声明 Applet是一个系统类,是容器类java.awt.Panel类的子类,封装了init(),start(),stop(),paint(),destroy()等方法。 FirstJavaApplet Codebase指定了

7、Java程序在网络上何处可以找到需要的类。Java Applet 工作原理HTML文件嵌入Appletwww服务器www服务器www浏览器请求HTML文件下载HTML文件请求Applet字节码下载Applet字节码解释执行Applet字节码编写Java程序需要注意的几点Java 区分大小写一个程序中可以有一个或多个类,但其中只能有一个主类源程序编写完毕,应该用主类名作为文件名,再加后缀 .java 存储成磁盘文件2.5 Java程序的基本类型 数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。Java语言属于强类型语言,即对于程序中出现的所有变量和表达式,在

8、编译的时候就要求有明确的数据类型,这样才可以由编译程序在编译期间对所有的操作进行数据类型相容性的检查。Java支持的数据类型分为两个类别:基本数据类型和引用数据类型Java的基本数据类型布尔类型:boolean字符类型:char整数类型:byte、short、int、long浮点类型:float、double数据类型占用二进制位数取值范围默认值boolean(布尔类型)8True或falsefalsechar(字符类型)16u0000uFFFF(065535)u0000byte(字节类型)8-128127(-27(27-1)0short(短整型)16-3276832767(-215(215-1

9、)0int(整型)32-21474836482147483647(-231(231-1)0long(长整型)64(-263(263-1)0float(单精度浮点型)32+1.4E-45+3.4028235E+380.0fdouble(双精度浮点型)64+4.9E-324+1.7976931348623157E+3080.0Java语言的基本数据类型在Java语言中,基本数据类型的数据所占用的二进制位数是固定的,与具体的软硬件环境无关。每一种数据类型都有一个默认的初值。所有基本类型的关键词都是小写的。在把容量大的类型转换为容量小的类型时必须使用强制类型转换。boolean只有“true”和“fa

10、lse”两个取值,分别代表“真”和“假”。特点:不能够与任何其他类型进行相互的类型转换操作,不对应于任何整数值,只能参与逻辑关系运算。不能用1和0代表true和false。charJava语言规定,字符采用Unicode编码,每个字符占用两个字节。ASCII字符集是Unicode字符集的一个子集,并且在这两个字符集中,前128个编码所对应的字符完全相同,只是每个字符占用的二进制位数不同。转义符表示一个Unicode字符 uxxxxbyte、short、int、long上面4种数据类型都属于整型数值类型。byte 1个字节short 2个字节int 3个字节long 4个字节Java语言中所有整

11、数类型均为符号数float、doublefloat 单精度 32位double 双精度 64位Java语言中的浮点数值表示遵循IEEE754标准。它不仅包括正零(+0.0)、负零(-0.0)、正无穷大(Infinity)、负无穷大(-Infinity)和一个特别的值NaN(非法的浮点运算结果)。2.6 标识符、关键字、分隔符、常量、变量【标识符】 Java 的标识符由字母、数字、_和$组成,长度不限。其中字母可以是大写或小写的英文字母,数字为 0 到 9。标识符的第一个字符必须为字母、(_)或($)符号。标识符区分大小写。标识符用来命名变量、符号常量、数组、方法、类、对象、接口、包等。为了提高

12、程序的可读性,标识符最好“见名知义”,而且规范大小写的使用方式,标识符命名规范见P42。合法的标识符:Identifier userName User_Name _sys_value $change my$Change非法的标识符:2mail room# class【关键字】又称保留字,是 Java 语言规定了特定含义的标识符。用户只能按照系统规定的方式使用,不能自行定义。关键字一律用小写字母表示。Java 中的关键字有 50 个,按用途划分为:数据类型、语句、修饰、方法、类、接口、包,并保留了const和 goto但并不使用。数据和返回值类型:int, void, return包/类/成员/

13、接口:package, class, interface访问控制:public, private, protected循环及循环控制:if, switch, break例外处理:throw, try, finally保留词(无含义但不能使用):goto, const【关键字简单分类】【分隔符】分隔符被用来区分 Java 源程序中的基本成分(标识符、关键字、运算符和常量),分隔符分为注释、空白符和普通分隔符三种类别。注释是为源程序增加必要的解释说明的内容,其目的是提高程序的可读性,书写注释是编写程序的良好习惯。Java中有三种形式的注释: /* 注释部分 */ / 注释部分 /* 注释部分 *

14、* /Java文档注释,可以通过javadoc生成类和接口的HTML格式的帮助文档。第二种分隔符是空白符,包括空格、回车符、换行符和制表符(Tab键)等。各种 Java 基本成分之间的多个空白符与一个空白符的作用相同。第三种是普通分隔符,具有确定的语法含义,必须按照特定的语法规定使用。它包括四种分隔符: 大括号,用来定义类体、方法体、复合语句或对数组进行初始化。 ; 分号,是语句结束的标志。 , 逗号,分隔方法的参数或声明的变量序列。 : 冒号,用于分隔语句标号。【直接量】基本数据类型和字符串类型的数值表示整型直接量:十、八、十六进制实型直接量:double、float (185.2f)字符直

15、接量:单引号括起来(n)布尔直接量:true 和 false字符串直接量:双引号括起来【变量】在 Java 语言中,所有的变量必须先定义后使用。其格式为:数据类型 标识符1=初值,标识符2.;如果是基本数据类型,变量在声明时就为其分配内存空间;否则,还需要用 new 为声明的变量分配空间。基本数据类型包括布尔类型、字符类型和数值类型。【常量】在Java语言中,可将变量声明成final。final float PI=3.14159f;该类型变量在程序的运行过程中只被赋值一次,其值不能被更改,但并不要求一定在定义的同时为其赋值。2.7 Java程序的基本输入输出Applet 应用程序的输入输出输入

16、:利用图形用户界面的组件接收用户信息输出:以图形或图像的形式输出结果Application应用程序的输入输出字符界面:利用 System.in.read 输入, System.out.print 和 System.out.println 输出图形用户界面:与 Applet 类似字符界面的输入输出import java.io.*;public class SimpleCharInOut public static void main(String args) char ch= ; System.out.print(“Enter a character please: ”); try ch=(ch

17、ar)System.in.read( ); catch(IOException e) ; System.out.println(“Youve entered character ”+c); import java.io.*;public class ApplicationLineInOutpublic static void main(String args) String string=; System.out.print(please enter a string:); try BufferedReader in= new BufferedReader(new InputStreamRea

18、der(System.in); string=in.readLine( ); catch(IOException e) System.out.println(Youve entered string: +string); import java.applet.Applet;import java.awt.*;import java.awt.event.*;public class GUIDemo extends Applet implements ActionListenerButton redButton; /按钮“红色”Button greenButton; /按钮“绿色”Label la

19、bel; /标签public void init() label=new Label(程序开始运行,目前还没有点击任何按钮); redButton=new Button(“红色”); /创建“红色”按钮 greenButton=new Button(“绿色”); /创建“绿色”按钮 redButton.addActionListener(this); /注册监听器 greenButton.addActionListener(this); /注册监听器 add(label); /将标签label添加到容器中 add(RedButton); /将按钮redButton添加到容器中 add(Gree

20、nButton); /将按钮greenButton添加到容器中 图形用户界面的输入输出/点击按钮时自动调用public void actionPerformed(ActionEvent e) if (e.getSource()=RedButton) label.setText(你点击了红色按钮); else if (e.getSource()=GreenButton) label.setText(你点击了绿色按钮); 2.8 运算符与表达式运算符由一至三个字符结合而成,用以表示运算。虽然运算符是由数个字符组合,但Java将其视为一个符号。运算符亦为标记的一种。请特别注意前、后递增,前、后递减的

21、概念。前递增是指被前置的变量先递增后,再指定给另一个变量。而后递增则是指定完后再递增。前递减与后递减亦是同样规则。 算术运算符 运算符 运算 范例 结果 +正号 +33 -负号 b4;-b-4 +加5+510 -减 6-42 *乘3*412 /除5/51 %余数 5%50+前递增 a=2;b=+aa=3;b=3 +(f)后递增 a=2;b=a+a=3;b=2-前递减 a=2;b=-aa=1;b=1 -后递减 a=2;b=a-a=1;b=2 +字符串串连 “Ja”+“va”“Java”赋值运算符 赋值运算符 运算符 运算 范例 结果 =指定数值 a=3;b=2a=3;b=2+=加等于 a+=ba

22、=5;b=2-=减等于 a-=ba=1;b=2*=乘等于 a*=ba=6;b=2/=除等于 a/=ba=1.5;b=2%=余数等于 a%=ba=1;b=2a+=b的意思是a=a+b。其余以此类推。关系运算符 关系运算符 运算符 运算 范例 结果 =相等于 4=3false!=不等于 4!=3true小于 4大于 43true=小于等于 4=大于等于 4=3trueinstanceof 检查是否为类实例 “Hello”instanceof Stringtrue逻辑运算符 逻辑运算符 运算符 运算 范例 结果 &ANDfalse&truefalse|ORfalse|truetrueXORtruef

23、alsetrue!Not!truefalse&简洁 ANDfalse&truefasle|简洁 ORfalse|truetrue?: Conditional(ternary)false?6:99x=10;if(x0)|(+x右移c211111011左移c无符号右移c200111011a=(106)D=(01101010)Bb=(7)D=(00000111)BC= (-17)D=(11101111)B2.8.2 优先级和结合顺序1). , , () 9)&2)+ , - , ! , , instanceof 10) 3) + , - , (type) , new 11)|4)* , / , %

24、12)&5)+ , - 13)|6) , , , = , =15)= , += , -= , *= , /= , %= , =8)= , !=16)&= , |= , = , = 注:红色的从右到左,其余的从左到右;用括号改变结合顺序。 蓝色运算符对byte、short、char作运算时,结果为int型整数。赋值操作中的类型转换Java是强类型语言,因此,在进行赋值操作时要检查类型;当将占位数少的类型赋值给占位数多的类型时,Java自动使用隐式类型转换;当将占位数多的类型赋值给占位数少的类型时,需要由用户使用显式地强制进行类型转换。package java.lang;import java.u

25、til.Random;public final class Math private Math( ) public static final double E = 2.7182818284590452354; public static final double PI = 3.14159265358979323846; public static native double sin(double a); public static native double cos(double a); public static native double tan(double a); public sta

26、tic native double asin(double a); public static native double acos(double a); public static native double atan(double a); public static native double exp(double a); public static native double log(double a); public static native double sqrt(double a); public static native double IEEEremainder(double

27、 f1, double f2); public static native double ceil(double a); public static native double floor(double a); public static native double rint(double a);Math类( import java.lang) public static native double atan2(double a, double b); public static native double pow(double a, double b); public static int

28、round(float a) public static long round(double a) private static Random randomNumberGenerator; public static double random( ) public static int abs(int a) public static long abs(long a) public static float abs(float a) public static double abs(double a) public static int max(int a, int b) public sta

29、tic long max(long a, long b) public static float max(float a, float b) public static double max(double a, double b) public static int min(int a, int b) public static long min(long a, long b) public static float min(float a, float b) public static double min(double a, double b) 顺序结构的语句:空语句、标号语句、表达式语句

30、、复合语句、throw语句、synchronized语句和try语句。该结构语句特点:按书写顺序依次执行。流程控制语句:顺序结构、分支结构和循环结构2.9 流程控制语句分支结构 if (布尔表达式) 语句1; else 语句2; switch (表达式) case 常量1:语句块1; . case 常量n:语句块n; default:语句块n+1; 结果必须为boolean类型结果必须为char,byte,short,int类型循环结构while 格式: while (循环条件) 循环体含义:循环条件为一个布尔表达式,其值为true时,重复执行循环体。循环结构 do 格式:do 循环体 whi

31、le (循环条件);含义:重复执行循环体,直到循环条件为false。继续条件?下一个语句语句truefalse下一个语句true语句继续条件?while (循环条件) 循环体do 循环体 while (循环条件);循环结构for格式:for (表达式1;表达式2;表达式3) 循环体;表达式1:循环初值表达式2:布尔型表达式,循环条件表达式3:循环增量表达式例如:for (int i=0;i=11;i+) total+=Rainyear-1i; 2.9.10 循环语句比较int n = 1, sum = 0;while ( n0);int sum =0;for( int i=1; i=10; i

32、+ ) sum += i;while循环do-while循环for循环控制转移语句break语句:使程序的流程从一个语句块内部转移出去。通常在switch和循环语句中使用。continue语句:只能在循环语句中使用。其作用是终止当前这一轮的循环,直接进入下一轮的循环。2.9.11 程序转移相关语句breaka: /标记代码块a b: /标记代码块b c: /标记代码块c break b; /这段语句将不执行 /代码块c结束 /这段语句也不执行 /代码块b结束 /从这段语句开始执行 /代码块a结束2.9.12 程序转移相关语句continueouter: for( int i=0; i10; i

33、+ ) /外层循环 inner: for( int j=0; j10; j+ ) /内层循环if( ij ) continue outer; /内层循环结束 /外层循环结束for( int i= 0; i 10; i+ ) if( i = 5 ) continue; 2.9.13 程序转移相关语句 returnreturn语句从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续程序的执行。返回语句有两种格式:return expression; /当方法需要返回某种类型数据时return; /当方法的返回类型为void时单独一条return语句放在方法中间时,会产生编译错

34、误,因为其后的语句将不会执行到。若真需要退出方法,可以通过将return语句嵌入某些语句(如if-else)来使程序在未执行完方法中所有语句时退出。2.10 引 用在Java中,引用(reference)指向一个对象在内存中的位置,本质上它是一种带有很强的完整性和安全性限制的指针。当声明某个类、接口或数组类型的变量时,那个变量的值总是某个对象的引用或者是null。引用型变量只支持有限的逻辑判断:相等判断(是否同一个对象的引用):= != theObject = nullotherObject != theObject类型判断(是否是某个类的实例): instanceoftheObject in

35、stanceof Object“” instanceof String引用类型示例(数组) 如float tax=new float5; 数组被声明后,其数组大小值会被放在所分配内存区的第一个地址,并以length作此地址的参考。所以我们可用tax.length来取得此数组的大小值 。 数组被设置数值的方法如下:tax06786.5tax18763.79 2.10 引用类型示例(对象) Student/学生类/一类对象的属性: int No; Cstring major; int sex; /0代表女,1代表男 float Height;/单位CM float Weight; /单位KG/一类

36、对象的功能: Student(int no,Cstring&str1,int sex, float height,float weight); void setNo(int a); int getNo(); int setName(Cstring str); float getHeight(); float getWeight(); void drive(Car redCar); Student a;a=new Student(2001002,”计算机“,0,165,45);int b=a.getNo();a2001002计算机016545对象的方法:int getNo();简单类型和引用类型

37、简单类型的特点:声明时自动分配空间;赋值操作将拷贝数值。引用类型:声明时不分配空间,需要利用new完成空间分配(String隐含分配);赋值操作是地址的拷贝。2.10 数组按照元素的组成分类,数组属于复合数据类型,它是由类型相同的元素组成的有顺序的数据集合。特点: 元素类型相同; 元素有顺序; 所有元素共用一个名称。Java语言中的数组声明格式:数组元素类型 数组名 ; 数组元素类型 数组名;举例: int array_int ; double array_double ; String str; Point P;注意:按照变量的存储方式上分类,Java语言中的数组属于引用类型,是一个动态创建

38、且属于Array的类对象,因此在声明数组引用时不能给出长度。数组的创建声明数组引用后,需要利用new运算来为数组型变量定义长度且分配内存空间,我们将其称之为创建数组。 array_int = new int10;array_double = new double1000;String str = new String10;Java规定,数组创建后系统自动地为数组中的每个元素赋予初值。数组初值数组元素的默认初值:整型:0实型:0.0f 或 0.0d字符:0类对象:null也可以在创建数组的同时,直接为数组赋予特定的初始值。int array_int = 1,2,3,4,5,6,7;String

39、str = “C+”, “QBasic”, “Pascal”;Java语言规定,不需要事先创建数组,也不需要在括号中指出数组元素的数目一维数组元素访问Java数组元素的格式: 数组型变量名下标表达式数组元素的下标从0开始,Java语言会严格检查下标表达式的取值范围,一旦越界,就会抛出ArrayIndexOutOfBoundsException异常。Java语言还为数组封装了length属性,可通过它获得数组的元素数目。一维数组复制1、引用复制 只将数组的引用赋予其他变量,没有重新分配存储空间。2、利用System类中的静态方法arraycopy实现复制 System.arraycopy( ar

40、ray_src, 0, array_dest, 0, number) ;在Java语言中,long类型的最大值为9223372036854775807,要想编写一个程序能够将任意给定的一个long值转换成二进制,可以借助于一维数组将转换后的每一位二进制数值保存起来。public class DecimaltoBinary public static void main(String args)byte binary; /声明数组long data;for ( int d=1; d ); binary = toBinary( data ); printBinary( binary ); public static byte toBinary(long data) byte b = new byte64;for (int i = 63; data != 0; i-) bi=(byte)( data % 2 ); data=data/2;return b

温馨提示

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

评论

0/150

提交评论