




已阅读5页,还剩88页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
0第一章 Java语言入门11 Java的诞生 Java是1995年6月由Sun公司引进的革命性编程语言,之所以称Java为革命性编程语言,是因为传统的软件往往与具体的实现环境有关,一旦环境有所变化就需要对软件做一番改动,耗时费力,而Java编写的软件能在执行码上兼容。这样,只要计算机提供了Java解释器,用Java编写的软件就能在其上运行。 注:印度尼西亚有一个重要的盛产咖啡的岛屿,中文名叫爪哇,开发人员为这种新的语言起名为Java,其寓意是为世人端上一杯热咖啡。12 Java的特点 Java是目前使用最为广泛的网络编程语言之一。它具有简单、面向对象、稳定、与平台无关、解释型、多线程、动态等特点。13 Java程序的开发过程Java程序的开发过程如图11所示。(p1) 源文件 编译 编译器 生成 字节码文件 由Web 文件扩展名 javac.exe 文件扩展名 对于Java小应用程序 浏览器.java .class Java Applet 运行 对于Java应用程序 Java Application 由Java解释器java.exe运行 注:字节码文件是与平台无关的二进制码,执行时由解释器解释成本地机器码,解释一句,执行一句。1编写源文件:使用一个文字编辑器,如Edit或记事本。不可使用Word。将编好的源文件保存起来,源文件的扩展名必须是Java。 2编译Java源程序:使用Java编译器(javacexe);编译源文件得到字节码文件。3运行Java程序:Java程序分为两类Java应用程序(Java Application)和Java小应用程序(Java Applet),Java应用程序必须通过Java解释器(javaexe)来解释执行其字节码文件;Java小应用程序必须通过支持Java标准的浏览器来解释执行。14一个简单的Java应用程序(Java Application)1编写源文件 (p2) 注意:Java源程序中的小括号及标点符号都是英文状态下输入的括号和标点符号。 l 一个Java源程序是由若干个类组成的。上面的这个Java应用程序简单到只有一个类,类的名字是由我们起的,叫Hello。l class是定义类的关键字。第一个大括号和最后一个大括号以及它们之间的内容叫做类体。l public static void main(String args)是类体中的一个方法,之后的两个大括号以及之间的内容叫做方法体。一个Java应用程序必须且只有一个类含有main方法,这个类称为主类。在一个Java应用程序中main方法必须被说明为public static void。l String args声明一个字符串类型的数组args(注意String的第一个字母是大写的),它是main方法的参数源文件的命名规则是,如果源文件中有多个类,那么只能有一个类是 public类。如果有一个类是public类,那么源文件的名字必须与这个类的名字完全相同,扩展名是java;如果源文件没有public类,那么源文件的名字只要和某个类的名字相同,并且扩展名是java就可以了。另外,Java语言是区分大小写的语言。 2编译 创建了源文件后,要使用Java编译器(javacexe)进行编译。 C:iavac Hellojava编译完成后生成字节码文件(Helloclass)。如果Java源程序中包含多个类,编译后将生成多个扩展名为class的文件,每个文件的文件名与该类的名字相同。 注:如果在安装JDK时没有另外指定目录,则javacexe和javaexe将被存放在C:jdkbin下。 3运行 使用Java解释器(javaexe)运行应用程序。 C:java Hello 屏幕显示: 你好,很高兴学习Java 注意:当Java应用程序中有多个类时,java命令后的类名必须是包含了main()方法的那个类的名字。(上机p3)15 一个简单的Java小应用程序(Java Applet)1编写源程序 (p4) 一个Java Applet也是由若干个类组成的,一个Java Applet不要main方法,但必须有一个类,它是Applet类(系统提供的类)的子类,这个类是Java Applet的主类,Java Applet的主类必须是public的。 注:上述源程序中我们使用了import语句,这是因为我们要使用系统提供给我们的Applet类。 2编译 C:javac boyjava编译成功后,生成一个boyclass文件。如果源文件有多个类,将生成多个class文件。 3运行 Java Applet必须由浏览器来运行,为此必须编写一个超文本文件。 下面是一个最简单的一个html文件,通知浏览器运行我们的JavaApplet。使用记事本编辑如下: 上面的文件命名为boyhtml(扩展名必须是html)。使用浏览器打开文件boyhtml。 注:也可以使用JDK提供的appletviewer运行小程序。C:appletviewer boyhtml。(上机p6)16 安装Sun公司的JDK JDK光盘里有3个子目录:MACINTOSH、SOLARIS和WINDOWS。每个子目录中都包含完整的由Sun公司开发的Java开发工具即JDK。表11列出了这张光盘中JDK目录下3个子目录中的内容。(p7)17 什么是JSP第二章 标识符、关键字和数据类型21 标识符和关键字 1标识符 用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。简单地说,标识符就是一个名字。 Java语言规定标识符由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字。下列都是合法的标识符:(P9) Girl_$、www_12$、$23boy。 注:Java语言使用unicode字符集,含有65535个字符。所以字母包括下面几种: (1)A-Z、a-z; (2)汉字、日文片假名、平假名和朝鲜文等。 2关键字 关键字就是Java语言中已经被赋予特定意义的一些单词。不可以把这类词作为名字来用。Java的关键字有:(P9) abstract boolean break byte case catch char class continue do double else extends falsefind finally float for implements import instanceof int interface long nativenew null packagepfivme public return short static super switch synchronized this throw true try void while22 Java语言基本数据类型Java的基本数据类型:基本数据类型关键字占用位数缺省数值布尔型boolean8false字符型char16u0000数值型整数型字节型byte80短整型short160整型int320长整型long640浮点数型浮点型float320.0F双精度型double640.0D 1逻辑类型 常量:true,false。 变量的定义: 使用关键字boolean来定义逻辑变量 boolean x; boolean tom_12; 也可以一次定义几个boolean x,tom,jafei,漂亮;x、tom、jafei和“漂亮”都是变量的名字。定义时也可以赋给初值 boolean x=true,tom=false,漂亮=true,jafei; 2字符类型 常量:A,b,?,!,9,好,t。 Java使用unicode字符集,所以常量共有65535个。 变量的定义: 使用关键字char来定义字符变量 char x, char tom_12;也可以一次定义几个 char x,tom,jafei,漂亮;x、tom、jafei和“漂亮”都是变量名字。定义时也可以赋给初值 char x=A,tom=家,漂亮=假,jafei: 3整数类型 常量:123,6000(十进制),077(八进制),0x3ABC(十六进制)。 整型变量的定义分为三种: (1)int型。 使用关键字int来定义int型整型变量 int x; int tom_12;也可以一次定义几个 int x,tom,jafei,漂亮;x、tom、jafei和“漂亮”都是名字。定义时也可以赋给初值 int x=12,tom=1230,漂亮=9898,jiafei: 注:对于int型变量,内存分配给4个字节, 占32位。 (2)byte型。 使用关键字byte来定义byte型整型变量 byte x; byte tom_12;也可以一次定义几个 byte x,tom,jafei,漂亮;x、tom、jafei和“漂亮”都是名字。定义时也可以赋给初值 byte x=12,tom=28,漂亮=98,jafei: 注:对于byte型变量,内存分配给1个字节,占8位。 (3)short型。 使用关键字short来定义short型整型变量 short x; short tom_12;也可以一次定义几个 short x,tom,jafei,漂亮;x、tom、jafei和“漂亮”都是名字。定义时也可以赋给初值 short x=12,tom=1234,漂亮=9876,jafei: 注:对于short型变量,内存分配给2个字节,占16位。 (4)long型。 使用关键字long来定义long型整型变量 long x; long tom_12;也可以一次定义几个 long x,tom,jafei,漂亮;x、tom、jafei和“漂亮”都是名字。定义时也可以赋给初值 long x=12,tom=1234,漂亮=9876,jafei: 注:对于long型变量,内存分配给8个字节,占64位。 4浮点类型(实型) 浮点型分两种。 (1)float型。 常量:123.5439f,12389.987F,123.0f,2e40f(2乘以10的40次方,科学计数法)。 变量的定义: 使用关键字float来定义float型变量 float x; float tom_12; 也可以一次定义几个 float x,tom,jafei,漂亮:x、tom、jafei和“漂亮”都是名字。定义时也可以赋给初值 float x=12.76f,tom=1234.987f,漂亮=9876.0f,jafei: 注:对于float型变量,内存分配给4个字节,占32位。 (2)double型。 常量:12389.5439d(d可以省略),12389908.987,123.0,6e140(6乘以10的140次方, 科学计数法)。 变量的定义: 使用关键字double来定义double型变量 double x: double tom_12:也可以一次定义几个 double x,tom,jafei,漂亮;x、tom、jafei和“漂亮”都是名字。定义时也可以赋给初值 double x=12.76,tom=1234098.987,漂亮=9876.098d,jafei: 注:double型变量,内存分配给8个字节,占64位。例子(P12)第三章 运算符、表达式和语句31 运算符与表达式 1算术运算算术运算符用来对整型、浮点型数据进行算术运算。算术运算符根据操作数的个数分为双目运算符和单目运算符两种。1 双目运算符包括 (加) (减) *(乘) /(除) (取余)五个,列表于下:运算符运算例功能加ab求a与b相加的和减ab求a与b相减的差*乘a*b求a与b相乘的积/除a/b求a除以b的商取余ab求a除以b所得的余数注意: 两个整数类型的数据做除法时,结果是截取商的整数部分,小数部分被截断。如果需要保留小数部分,应该对除法运算的操作数做强制类型转换。例如1/2的结果是0,而(float)1)/2的结果是0.5 。2 单目运算符包括 (自增) (自减) (求反)三个:运算符运算例功能等价于自增a或aaa1自减a或aaa1求反aaa注意,单目运算符的位置决定单目运算与复杂表达式的运算顺序,例如:int x2;int y(x)*3;运算执行的结果是x3,y9 ;int x2;int y(x)*3;运算执行的结果是x3,y6 。 2关系运算关系运算是比较两个数据之间大小关系的运算。运算符运算等于!不等于大于大于等于y1&x1+=y1-; boolean b4=x2y2&x2+=y2-; public void paint(Graphics g) g.drawString(/*逻辑运算*/,10,20); g.drawString(b1+&+b2+=+(b1&b2),10,40); g.drawString(b1+|+b2+=+(b1|b2),10,60); g.drawString(b1+b2+=+(b1b2),10,80); g.drawString(!+b2+=+(!b2),10,100); g.drawString(b1+&+b2+=+(b1&b2),10,120); g.drawString(b1+|+b2+=+(b1|b2),10,140); g.drawString(x=+x1+,y=+y1,10,160); g.drawString(xy&x+=y-)=+b3+;x=+x1+,y=+y1,10,180); g.drawString(xy&x+=y-)=+b4+;x=+x2+,y=+y2,10,200); 4赋值与强制类型转换赋值运算就是给变量或对象赋予一定的内容。赋值运算使用赋值运算符 ,格式:变量或对象表达式;在进行赋值运算时,可能会遇到赋值运算符左边与赋值运算符右边数据类型不一致的情况,这时就需要把右边的数据类型转换成左边的数据类型。Java的类型转换有严格的规定:凡是把占用内存较少的数据类型转换成占用内存较多的数据类型,类型转换由编译系统自动完成(隐含类型转换);把占用内存较多的数据类型转换成占用内存较少的数据类型,需要进行强制类型转换,强制类型转换的格式是:(数据类型)变量名例如int i=5;long j=i;int i=(int)j;例子 TypeConversion.javaimport java.awt.*;import java.applet.Applet;public class TypeConversion extends Applet public void paint(Graphics g) byte b=97; int i=66; double d=1234567.567; char ch1,ch2; int i1; short s; ch1=(char)b; ch2=(char)i; i1=(int)d; s=(short)d; g.drawString(ch1=+ch1,25,25); g.drawString(ch2=+ch2,25,40); g.drawString(i1=+i1,25,55); g.drawString(s=+s,25,70); 5运算符的优先级与结合性运算符的优先级决定了表达式中不同运算进行的先后顺序。例如,关系运算的优先级高于逻辑运算,所以xy&!z 相当于(xy)&(!z) 。 而所谓运算符的结合性则决定了并列的相同运算的计算的先后顺序。例如,对于左结合的 ,xyz等价于(xy)z,对于右结合的 ! ,!x 则相当于 !(!x) 。Java运算符的优先级与结合性列表如下:运算符描述优先级结合性()最高优先级1左/右instanceof!+-强制类型转换符单目运算2右*/算术乘除3左+-算术加减4左移位运算5左=大小关系运算6左=!=相等关系运算7左&按位与、非简洁与8左按位异或运算9左|按位或、非简洁或10左&简洁与11左|简洁或12左?:三目条件运算13右运算符简单、复杂赋值14右3.2 语句 1Java语言的控制语句 结构化程序设计必须而且只能使用“顺序、分支、循环”三种基本结构定义程序的流程。 顺序 分支 循环 2顺序结构“顺序”结构是最简单的流程控制结构,程序中语句的执行只是按照它的书写先后顺序依次执行,Java语言不需要专门的顺序结构控制语句。 3分支结构1)if语句if语句的语法形式如下:if(条件表达式) if分支的语句组;else else分支的语句组;如果分支不止两个,ifelse语句可以嵌套,例子1(P17)public class Exp1_1 public static void main(String args) int math=65,english=85; if(math60) System.out.println(数学及格了); else System.out.println(数学不及格); if(english90) System.out.println(英语是优); else System.out.println(英语不是优); if(math60&english90) System.out.println(英语是优,数学也及格了); else System.out.println(我在学习控制语句); if语句可以没有else分支,语法形式如下:if(条件表达式) if分支的语句组;2)switch语句switch语句是多分支语句,语法形式如下:switch(表达式) case 判断值1: 语句组1 case 判断值2: 语句组2 case 判断值n: 语句组n default: 语句组n1注意: (1)表达式的值必须是整型或字符型,并且应与各个 case 分支的判断值的类型一致。 (2)switch语句的每一个case 判断,都只是分支的入口点,而不负责指定分支的出口点,分支的出口点需要相应的跳转语句。例子2(P19)import java.applet.*;import java.awt.*;public class Exp1_2 extends Applet public void paint(Graphics g) int x=2,y=1; switch(x+y) case 1: g.setColor(Color.red); g.drawString(i am 1,5,10); break; case 2: g.setColor(Color.blue); g.drawString(i am 2,5,10); break; case 3: g.setColor(Color.green); g.drawString(i am 3,5,10); break; default: g.drawString(没有般配的,5,10); 4循环结构循环语句实现在一定条件下,反复执行某段程序,被反复执行的语句组叫循环体。Java的循环语句有三种:while语句、dowhile语句和for语句。1)while语句while语句的语法形式如下:while(条件表达式) 条件表达式 F 循环体 T 循环体 例子5(P21)求从1加到100的和。 2)dowhile语句dowhile语句的语法形式如下:do 循环体 循环体 条件表达式 Fwhile(条件表达式) T 例如计算阶乘: int p=1,n=5; do p*=n-; while(n0);3)for语句for语句的语法形式如下: 表达式1 for(表达式1;表达式2;表达式3) 循环体 表达式2 F T 循环体 表达式3 其中,表达式1完成初始化循环变量和其他变量;表达式2是布尔型的条件表达式;表达式3修正循环变量,改变循环条件。例子3(P20)求从1加到100的和。4)循环中的跳转语句为了提高程序的可靠性,Java语言不支持无条件跳转的goto语句。在循环中使用两个跳转语句:continue语句和break语句。(1) continue语句continue语句必须用在循环结构中,continue语句在使用时有两种形式,一种带标号的continue语句,另一种是不带标号的continue语句。 带标号的continue语句格式是:continue 标号名;标号名应该符合标识名的规定。带标号的continue语句使程序的流程直接转入标号表明的循环层次,进入下一轮循环。 不带标号的continue语句 终止本轮循环,跳过本轮循环剩余的语句,进入当前循环结构的下一轮循环。(2) break语句break语句在使用时也分带标号与不带标号两种形式。带标号的break语句的格式是:break 标号名;标号名标志某一个语句块,执行break语句就从标号名标志的语句块中跳转出来,流程进入该语句块后面的语句。不带标号的break语句从它所在的switch分支或循环体中跳转出来(结束当前循环语句),执行分支或循环体后面的语句。例子6(P21)public class Exp1_6 public static void main(String args) int sum=0,i,j; for(i=1;i=10;i+) if(i%2=0) continue; /终止本轮循环,跳过本轮循环剩余的语句,进入当前循环结构的下一轮循环 else sum=sum+i; System.out.println(sum=1+3+5+7+9=+sum); System.out.println(50以内的素数:); for(j=2;j=50;j+) / j是待检测的数,即检测j是不是素数 for(i=2;i=j/2;i+) / 看i是否是j的约数。ij/2 if(j%i=0) break; /从它所在的循环体中跳转出来(结束当前循环语句),执行循环体后面的语句 if(ij/2) System.out.println(j); else 第四章 类、对象和接口41 编程语言的几个发展阶段 1面向机器语言(如汇编语言) 2面向过程语言(如c语言、Fortran语言等) 3结构化程序设计阶段 4面向对象编程(P26)42 类类是组成Java程序的基本要素。类封装了一类对象的状态和方法。类是用来定义对象的模板。 类的语法结构:修饰符 class 类名 extends 父类名 implements 接口名 类头(类声明)属性 类体方法1.类头 修饰符:说明类的性质关键字:class类名:父类名: 关键字:extends 格式: 类名 extends 父类名 子类 父类 子类 获得 父类 所有属性和方法 继承例如public class boy extends Applet2.类体 类体由两部分构成:一部分是变量的定义,另一部分是方法的定义。(1)变量 基本数据类型 变量(成员变量) 数组类型 引用数据类型 对象(类类型)(2)方法方法起两种作用:一是围绕着类的属性进行各种操作;二是与其他的类或对象进行数据交换、消息传递。3成员变量和局部变量我们已经知道类体分为两部分。变量定义部分所定义的变量称为类的成员变量。在方法体中定义的变量和方法的参数称为局部变量。(1) 成员变量和局部变量的类型可以是Java中的任何一种数据类型,包括基本类型和引用类型(数组类型和对象。对象也称作类类型变量)。(2) 成员变量在整个类内都有效,局部变量只在定义它的方法内有效。 例如:class A int x; int f() int a; x=a; /合法,x在整个类内有效。 int g() int y; y=a; /非法,因为a已失效,而方法g内又没有定义变量a (3) 成员变量又分为实例成员变量(简称实例变量)和类成员变量(简称类变量)。用修饰符static修饰的成员变量是类变量。例如: class A static int x; int y; 其中x是类变量,y是实例变量。实例变量和类变量的区别(p38):例如:class Takecarestatic int x; /x是类变量int y; /y是实例变量class ATakecare A1=new Takecare();Takecare A2=new Takecare(); x A1 A2 y y如果A1.x=18;则A1.x和A2.x的输出结果都是18。(4)局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效。例如:class Tom int x=98,y; void f() int x=3; y=x; / y得到的值是3,不是98。如果方法f中没有“int x=3;”,/ y的值是98。 (5)我们已经知道,如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏。 这时如果想在该方法内使用成员变量,必须使用关键字this。例如: 第四次作业001(要求既输出123,又输出456)import java.applet.Applet;import java.awt.*;public class Thistest extends Applet float x=1,y=2,z=3; /成员变量 public void paint(Graphics g) float x=4,y=5,z=6; /局部变量 x=this.x;y=this.y;z=this.z; /this.x、this.y、this.z /分别表示成员变量x、y、z g.drawString(变量x=+x,20,40); g.drawString(变量y=+y,20,60); g.drawString(变量z=+z,20,80); 变量小结: 实例变量 成员变量(类体中变量定义 部分所定义的变量) 类变量 (static修饰) 变量 局部变量(方法体中定义的变量)4. 方法 (1)方法定义方法由方法头和方法体两部分组成,定义格式如下: 修饰符 返回值类型 方法名(形式参数列表) 局部变量声明; 语句序列; 方法头由方法名、形式参数列表、方法返回值类型、方法修饰符等组成。方法体由局部变量声明、语句序列组成。例如方法头: boolean isPrime(int n) boolean 是方法返回值类型 isPrime 是方法名字 () 表明是方法 int n 定义整型变量 n ,n是方法的形式参数 (2)方法的形式参数定义方法,需要定义方法的输入输出数据,方法头中的参数列表定义方法的输入数据,返回值是方法的输出数据。例如,在刚才举的例子中,n 是方法的形式参数,它的值来自调用isPrime()方法的语句,例如f_i=isPrime(i);执行这个调用语句时,变量 i 的值传递给参数 n ,同时程序的流程转到isPrime()方法,从isPrime()方法的第一条语句开始执行。方法也可以没有形式参数,表示方法不需要从调用它的语句中输入数据。 (3)方法的返回值方法返回值是方法的输出数据。定义方法头时,返回值类型说明输出数据的类型。定义方法体时,用 return 语句把一个确定的值返回给调用它的语句。return 语句的格式: return 表达式;return语句使程序流程从方法调用中返回,表达式的值是方法的返回值。注意:如果方法没有返回值,方法头返回值类型应该是关键字 void ,同时方法体中可以不写return 语句,或省略return 语句后面的表达式。根据返回值的定义,每次调用方法只能返回一个数据。方法中定义的变量是局部变量,只在定义它的方法体中有效。 (4)方法重载方法的重载是指在一个类中可以定义几个同名但是参数集合(参数的数量、类型和顺序)不同的方法。当调用一个重载的方法时,Java编
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论