资源描述
第一章 Java语言简介Java的诞生Java的特点Sun公司的SDK一个Java application应用程序一个Java applet应用程序Java的诞生C语言、语言、Visual Basic和和 Java语言,是当今世界上最为流行三大计语言,是当今世界上最为流行三大计算机语言算机语言;Java语言在网络编程方面占有主流的地位。语言在网络编程方面占有主流的地位。Java语言产生于语言产生于1991年,当初的开发设计目的是以设计消费电年,当初的开发设计目的是以设计消费电子产品子产品(如电视机、电话机、电烤厢、手机如电视机、电话机、电烤厢、手机)上的操作系统和程序为上的操作系统和程序为主的,当时这个语言叫主的,当时这个语言叫Oak;但自但自1994万维网出现后,万维网出现后,James Gosling 意识到万维网上需要一种跨平台的计算机语言,于是他把意识到万维网上需要一种跨平台的计算机语言,于是他把oak加以改造并用于网络编程,取得巨大成功。加以改造并用于网络编程,取得巨大成功。1995年年5月月23日日Sun 公司正式推出公司正式推出Java语言语言.java的出现,是计算机信息交换的一个重的出现,是计算机信息交换的一个重要里程碑。要里程碑。Java 语言的开发者语言的开发者James Gosling 使使Java语言成为一个非常具语言成为一个非常具有特色且功能强大的计算机语言。他的设计灵感起源于有特色且功能强大的计算机语言。他的设计灵感起源于C+,在,在Java语言中我们可以看到语言中我们可以看到C语言的身影,虽然语言的身影,虽然Java语言和语言和C语言有语言有很相似,但本质上却大不相同,它不是很相似,但本质上却大不相同,它不是C+的延伸和扩展,它可以的延伸和扩展,它可以说是一个专为说是一个专为Internet而设计开发出来的新一代计算机语言,它现而设计开发出来的新一代计算机语言,它现在在因特网程序设计上占有如日中天的地位,它在因特网上的应在在因特网程序设计上占有如日中天的地位,它在因特网上的应用和蓬勃发展,是全世界所公认的。用和蓬勃发展,是全世界所公认的。Java的特点简单的面向对象的解释型的平台无关的安全的多线程的动态的源程序编译器可执行文件机器码普通编译型语言的编译过程JAVA源程序JAVA编译器JAVA字节码文件JAVA解释器可执行机器码JAVA的编译执行过程Sun公司的SDKJava语言在万维网上的编程方面取得了广泛的应用语言在万维网上的编程方面取得了广泛的应用,与此同时,与此同时,Java语言本身也得到了快速的发展,已从语言本身也得到了快速的发展,已从Java 1.0发展到发展到 Java1.4 。Java1.2 已与已与 Java 1.0有很大区别,所以有很大区别,所以Java1.2以后各版通称为以后各版通称为 Java2。本人使用的本人使用的Java2开发软件开发软件:j2sdk-1_4_2-windows-i586.exe ,是从是从网站网站:WWW 53 兆兆 字字节。节。该网站以及网站该网站以及网站WWW API(应用程序接口)的说明,也有很多关于(应用程序接口)的说明,也有很多关于 java 的的软件供免费下载,大家可以去浏览。软件供免费下载,大家可以去浏览。一个Java application 应用程序/This application program prints Welcome to Java!public class Welcome public static void main(String args)System.out.println(Welcome to Java!);一个Java applet 应用程序/*WelcomeApplet.java:This is an example of Java applets*/import java.awt.*;public class WelcomeApplet extends java.applet.Applet public void paint(Graphics g)g.setColor(Color.red);g.drawString(Welcome to Java!,30,30);HTML Test Page/TITLEWelcomeApplet will appear below in a Java enabled browser.第二章 基本数据类型和数组标识符和关键字基本数据类型数组标识符和关键字标识符:标识符是以字母(包括汉字)、下划线、标识符是以字母(包括汉字)、下划线、美元符号、开头,后跟字母、数字、下划线或美远符美元符号、开头,后跟字母、数字、下划线或美远符号组成的字符串。标识符区别大小写字母,没有固定号组成的字符串。标识符区别大小写字母,没有固定长度,中间不能插入空格。长度,中间不能插入空格。标识符用作变量名、方法标识符用作变量名、方法名、接口名、类名等。名、接口名、类名等。关键字:关键字都有自己的特殊意义和用法,不得关键字都有自己的特殊意义和用法,不得用它们做标识符。用它们做标识符。基本数据类型数据类型数据类型基本数据类型基本数据类型(常量或变量的类型常量或变量的类型)复合数据类型复合数据类型数值型数值型整数类型整数类型:byte,short,int,long浮点数类型浮点数类型:float,double字符型字符型:char布尔型布尔型;boolean类类型:类类型:class数组类型数组类型接口类型接口类型:interface1、逻辑类型、逻辑类型 boolean,只有两个值只有两个值:false or true .2、字符类型、字符类型char,指单个字符,即一个,指单个字符,即一个16位的位的Unicode字字符。其值为符。其值为065535。如:。如:a /表示字符表示字符 a t /表示表示 tab 键键 3、整型、整型byte,short,int,long 整型常量可用十进制、八进制或十六进制数:整型常量可用十进制、八进制或十六进制数:以以19开头的是十进制数:开头的是十进制数:3,5,5.6 ;以以0开头的是八进制数开头的是八进制数:077=7*81+7*80=63,010=8,011=9,012=10 ;以以0 x开头的是十六进制数开头的是十六进制数:0 x11=1*16+1=17,0 xAB=10*16+11*1=171 ;0XBABE=11*163+10*162+11*161+15*160=47804.长整形数的表示,如:长整形数的表示,如:2L,077L,0XBABEL整数类型整数类型整数长度整数长度表示范围表示范围byte8位位-27 27-1=127short16位位-215 215 1=int32位位-231 231 1long64位位-263 263-1类型类型最大值最大值最小值最小值intInteger.MAX-VALUEInteger.MIN-VALUElongLong.MAX-VALUELong.MIN-VALUE0 0 0 0 0 0 0 00 0 0 0 0 0 0 10 0 0 0 0 0 1 00 0 0 0 0 0 1 10 1 1 1 1 1 1 10 1 1 1 1 1 1 10 1 1 1 1 1 1 00 1 1 1 1 1 0 10 1 1 1 1 1 0 00 0 0 0 0 0 0 01 0 0 0 0 0 0 01 1 1 1 1 1 1 11 1 1 1 1 1 1 01 1 1 1 1 1 0 11 0 0 0 0 0 0 1 原码原码 反码反码 补码补码=-1=-2=-3=-127=-1280 1 1 1 1 1 1 00 0 0 0 0 0 0 11 0 0 0 0 0 1 0=-126 正数数表示正数数表示整数类型整数类型整书长度整书长度表示范围表示范围8位位-27 27-1=12716位位-215 215 1=32位位-231 231 164位位-263 263-1byteshortintlong 现以现以byte型整数为例,考虑正型整数为例,考虑正负整数的表示问题:高位为负整数的表示问题:高位为0表表示正数或示正数或0,高位为,高位为1表示负数。表示负数。后后7位表示数的值;正数值用原位表示数的值;正数值用原码表示,负数值用补码码表示,负数值用补码(=反码反码+1)表示表示.浮点数类型浮点数类型浮点数长度浮点数长度表示范围表示范围float321.4e-45f3.4028235e+38fdouble644.9e-324d1.7976931348622357e+308dp.19浮点数浮点数 浮点型浮点型float(单精度)(单精度)and double(双精度双精度)数值常量中包含小数点的、包含指数部分的、或其后跟有字数值常量中包含小数点的、包含指数部分的、或其后跟有字母母F(f)或)或D(d)的的,都是浮点数。都是浮点数。浮点数后面若不跟字母浮点数后面若不跟字母F或或f,则必是则必是 double 型的。示例:型的。示例:5.31,-39.27,5f,0.001327e+6 ;操作数操作数1的类型的类型操作数操作数2的类型的类型转换后的类型转换后的类型byte or shortintintbyte or short or intlonglongbyte or short or int or longfloatfloatbyte or short or int or long or floatdoubledoublecharintint 整型整型实型实型字符型数据可以混合运算字符型数据可以混合运算.运算时运算时,不同类型的数据先转换为同不同类型的数据先转换为同一类型数据后一类型数据后,再进行运算再进行运算;转换规则为位数少的数据类型转换为位数多的转换规则为位数少的数据类型转换为位数多的数据类型数据类型.这叫这叫自动类型转换自动类型转换.见下表见下表;若要将位数多的类型向位数少的类型转换若要将位数多的类型向位数少的类型转换,则须用户明确指明则须用户明确指明,这叫这叫强制强制类型转换类型转换.如如:int i=3;byte b=(byte)i;p.20类型转换类型转换变量在使用之前必须先说明变量在使用之前必须先说明.以下程序表明各型变量是如何说明和赋值的以下程序表明各型变量是如何说明和赋值的.Public class Assignpublic static main(String arg)int x,y;float z=3.1414f;double w=3.1415d;boolean truth=false;boolean false1;char c;c=A;x=6;y=1000;false1=67;变量说明与使用变量说明与使用数组是是常用的数据结构,相同类型的数据元素按一定顺序数组是是常用的数据结构,相同类型的数据元素按一定顺序线性排列就构成了数组。数据元素可以是简单数据类型的量,线性排列就构成了数组。数据元素可以是简单数据类型的量,也可以是某一类的对象。数组是对象;其主要特性如下:也可以是某一类的对象。数组是对象;其主要特性如下:(1)数组是相同数据类型的元素的集合;)数组是相同数据类型的元素的集合;(2)数组中各元素有先后顺序,它们在内存中按这个顺序连)数组中各元素有先后顺序,它们在内存中按这个顺序连 续存放在一起;续存放在一起;(3)每个元素用数组的名字和它在数组中的位置来表达。如)每个元素用数组的名字和它在数组中的位置来表达。如a0代表代表a数组中的第一个元素,数组中的第一个元素,a1代表数组代表数组a中的第二元素,中的第二元素,等等。等等。声明数组声明数组主要是声明数组的名称和数组所包含的数据主要是声明数组的名称和数组所包含的数据类型或元素的数据类名。其语法格式有两种:类型或元素的数据类名。其语法格式有两种:数组类型数组类型 数组名数组名 ;/如如:char s;float a;数组类型数组类型 数组名;数组名;/如:如:char s;方括号方括号 是数组的标志,可以放在数组名后,也可放在数组是数组的标志,可以放在数组名后,也可放在数组类型后,两这并无差别。类型后,两这并无差别。数组的声明、定义和使用创建数组(空间)创建数组(空间)声明数组仅仅是指定了数声明数组仅仅是指定了数组的名字和数组元素的类型,还须为它开辟内存组的名字和数组元素的类型,还须为它开辟内存空间,方可运用。空间,方可运用。Java语言中数组的长度一经指语言中数组的长度一经指定就不变定就不变(用用Vector类可实现变长数组类可实现变长数组)。创建数组的方法如下:创建数组的方法如下:s=new char20;/数组的各元素为数组的各元素为s0,s1,s2,s19.数组的声明与创建的合并:数组的声明与创建的合并:char s=new char20;/声明声明 s 为一为一 char 型数组,并开创之,其元素个型数组,并开创之,其元素个数为数为20。数组的初始化:float boy=21.3f,23.89f,2.0f,23f,778,98f;相当于如下几条语句:float boy=new float5;boy0=21.3f;boy1=23.89f;boy2=2.0f;boy3=23f;boy4=778;boy5=98f第三章 运算符、表达式、语句和方法运算符 运算符运算符 1、算术运算符、算术运算符 包括通常的二元运算符:包括通常的二元运算符:+、*、/(除)(除)和和%(取模)完成整数或浮点数的运算。还有一元运算符:(取模)完成整数或浮点数的运算。还有一元运算符:+和和。如如 i+,表示先访问,表示先访问 i,再使,再使 i 增增1;而;而+i,表示先使,表示先使 i 增增1,再访问,再访问 i。i,表示先访问,表示先访问 i ,再使,再使 i 减减1;而;而 i,表示先使,表示先使 i 减减1,再访问,再访问 i。int x=3;int y=5;x 3y 5 x=y+;x 5y 6 x=-y;x 5y 52、关系运算符、关系运算符 用来比较两个值的大小,包括:用来比较两个值的大小,包括:、=、5).若第一个表达式为假,则将不计算第二个表达式;若将若第一个表达式为假,则将不计算第二个表达式;若将&换为换为&,则不管第一个表达式为真或为假,第二个表达式,则不管第一个表达式为真或为假,第二个表达式都将被计算都将被计算,这在有的时候还是有用的。这在有的时候还是有用的。与与 也有类似的性质。也有类似的性质。5、其他运算符、其他运算符 扩展赋值运算符:扩展赋值运算符:=、+=、=、*=、/=、%=、&=、=、=、=、=90)System.out.println(“A等等”);else if(grade=80)System.out.println(“B等等”);else if(grade=70)System.out.println(“C等等”);else if(grade=60)System.out.println(“D等等”);else System.out.println(“不及格不及格!”);注意注意:因为每对:因为每对中中只有一句,所以只有一句,所以可可以省去。以省去。若若中有多句,则中有多句,则不能省去不能省去条件语句例条件语句例switch语句,其格式为:语句,其格式为:switch(表达式表达式)case c1:语句组语句组1;break;case c2:语句组语句组2;break;.case ck:语句组语句组k;break;default:语句组;语句组;其中其中表达式表达式的值必须是的值必须是byte型、型、short型、型型、型int、型、或、型、或char 型的。不能是型的。不能是long型。型。break语句的作用是跳到语句的作用是跳到switch 语句的语句的 之后去执行之后去执行其它语句。其它语句。注意其中的注意其中的break语句不可语句不可省去。若省去省去。若省去break语句,语句,那么,当某个语句组被执行那么,当某个语句组被执行后,它后面的所有语句组都后,它后面的所有语句组都会被执行会被执行!开关语句开关语句class SwitchTest public static void main(String args)char ch=args0.charAt(0);switch(ch)case 0:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:System.out.println(The character is digit+ch);break;case a:case b:case c:case d:case e:case f:case g:case h:case i:case j:case k:case l:case m:case n:case o:case p:case q:case r:case s:case t:case u:case v:case w:case x:case y:case z:System.out.println(The character is letter+ch);break;case A:case B:case C:case D:case E:case F:case G:case H:case I:case J:case K:case L:case M:case N:case O:case P:case Q:case R:case S:case T:case U:case V:case W:case X:case Y:case Z:System.out.println(The character is letter+ch);break;/若省去此句若省去此句,后果如何?后果如何?default:System.out.println(The character+ch+is neither a digit nor a letter);循环结构while语句do-while语句for语句While循环循环 while循环的语法格式为:循环的语法格式为:while(逻辑表达式)(逻辑表达式)语句序列语句序列 (其中逻辑表达式不能象(其中逻辑表达式不能象C语言那样可用十进制数代替。)语言那样可用十进制数代替。)例例 3-16 int i=0;While(i3)System.out.println(“Are you finished yet?”);i+;System.out.println(“Finally!”);/输出为:输出为:Are you finished yet?Are you finished yet?Are you finished yet?Finally!do循环循环 do语句的语法格式为 do statements while(logical expression)Example int i=0;do System.out.println(“Are you finished yet?”);i+;while(i3)System.out.println(“Finally!”);/输出为:输出为:Are you finished yet?Are you finished yet?Are you finished yet?Finally!实际上实际上do statements while(logical expression)等价于:等价于:while(logical expression)statements do循环循环。1、for语句语句 其语法格式为:其语法格式为:for(初始语句;逻辑表达式;跌代语句初始语句;逻辑表达式;跌代语句)语句序列语句序列 例例3-13 for(int i=0;i3;i+)System.out.println(“Are you finished yet?”);System.out.println(“Finally!”);/输出为:输出为:Are you finished yet?Are you finished yet?Are you finished yet?Finally!例例 for(;)System.out.println(“Always print!”);/等价于:等价于:for(;true;)System.out.println(“Always print!”);它们将会不停地执行下去,即死循环。它们将会不停地执行下去,即死循环。例例3-15 初始语句和跌代语句皆不止一个的情形。初始语句和跌代语句皆不止一个的情形。int sumi=0,sumj=0;for(int i=0,j=0;j10;i+,j+)sumi+=i;sumj+=j;初始语句、逻辑表达式、跌代语句都可以省略:初始语句、逻辑表达式、跌代语句都可以省略:特殊的流控制语句。特殊的流控制语句。java语言中无语言中无goto 语句,而代之语句,而代之以以 break语句和语句和 continue语句。语句。1、标号、标号 标号可放在标号可放在for,while或或do语句之前,其语法格式为:语句之前,其语法格式为:标号:语句;标号:语句;2、break语句 break语句可用在可用在switch,for,while或或do语句之中,其语义是语句之中,其语义是跳过本块中余下的所以语句,转到块尾(循环外)执行其后的跳过本块中余下的所以语句,转到块尾(循环外)执行其后的语句。语句。例例 for(int i=0;i100;i+)if(i=5)break;System.out.println(“i=”+i);实际上只执行了实际上只执行了5次(次(i从从0到到4)特流控语句特流控语句 break语句还可和标号结合起来使用,起语法格式为:语句还可和标号结合起来使用,起语法格式为:break 标号;标号;其语法意义是跳出标号所标记的语句块,继续执行其后的语其语法意义是跳出标号所标记的语句块,继续执行其后的语句。多用于嵌套块中,从内层跳到外层之后去执行。句。多用于嵌套块中,从内层跳到外层之后去执行。3、continue 语句。语句。continue 语句立即结束当次循环而进入下一次循环。语句立即结束当次循环而进入下一次循环。语句语句continue 标号;标号;它立即结束标号所标记的那重循环的当次循环而进入下一次它立即结束标号所标记的那重循环的当次循环而进入下一次循环。多用于多重循环。循环。多用于多重循环。public class TestBreak public static void main(String args)int sum=0;int item=0;while(item=6)break;System.out.println(The sum is +sum);public class TestContinue public static void main(String args)int sum=0;int item=0;while(item num2)return num1;else return num2;例:创建方法调用方法:调用方法:例:int larger=max(3,4);System.out.plintln(“Welcome to java”);参数传递参数传递许多编程语言(许多编程语言(C或或C+)中的方法(函数),通过值)中的方法(函数),通过值传递或引用传递来传递参数。传递或引用传递来传递参数。当采用值传递时,将产生参数值的一个拷贝并把它传当采用值传递时,将产生参数值的一个拷贝并把它传递给被调用的方法(函数)。形参的改变不会影响实递给被调用的方法(函数)。形参的改变不会影响实参。参。采用引用传递参数时,形参是实参的引用,被调方法采用引用传递参数时,形参是实参的引用,被调方法(函数)可通过实参直接访问形参;形参的改变影响(函数)可通过实参直接访问形参;形参的改变影响实参。实参。参数传递参数传递与其他语言不同,与其他语言不同,Java不允许编程人员选择采不允许编程人员选择采用值传递或引用传递来传递每个参数。用值传递或引用传递来传递每个参数。基本数据类型变量作为参数时总是采用值传递。基本数据类型变量作为参数时总是采用值传递。类的对象作为参数时采用引用传递。类的对象作为参数时采用引用传递。public class TestPassByValue public static void main(String args)int num1=1;int num2=2;System.out.println(Before invoking the swap method,num1 is“+num1+and num2 is +num2);swap(num1,num2);System.out.println(After invoking the swap method,num1 is +num1+and num2 is +num2);例:值传递:例:值传递:static void swap(int n1,int n2)System.out.println(Inside the swap method);System.out.println(Before swapping n1 is +n1 +n2 is +n2);int temp=n1;n1=n2;n2=temp;System.out.println(After swapping n1 is +n1+n2 is +n2);方法重载一个类中可以有多个方法具有相同的名字。这些方法的参数必须不同,即或者是参数个数不同,或者是参数的类型不同。public class TestMethodOverloading public static void main(String args)System.out.println(The maximum between 3 and 4 is +max(3,4);System.out.println(The maximum between 3.0 and 5.4 is+max(3.0,5.4);System.out.println(The maximum between 3.0,5.4,and 10.14 is“+max(3.0,5.4,10.14);例:方法重载例:方法重载 static int max(int num1,int num2)if(num1 num2)return num1;else return num2;static double max(double num1,double num2)if(num1 num2)return num1;else return num2;static double max(double num1,double num2,double num3)return max(max(num1,num2),num3);第四章 类、对象和接口编程语言的几个发展阶段机器语言:二进制码汇编语言:助记符取代二进制码面向过程的高级语言:面向对象的高级语言:面向过程的高级语言用更接近于自然语言的单词符号取代助记符。程序独立于计算机采用自顶向下的方法分析问题,把复杂的问题分解成小的、简单的问题。用称为函数或子程序的独立的功能模块解决小的问题,有利于代码重用。程序由这些功能模块组成。数据和操作它们的方法(函数)分离。面向对象的高级语言通过抽象、封状、继承、多态等技术把数据和操作它们的方法封装在类中,增强了代码重用的功能。通过访问限制,增加了数据的安全性。程序模型更接近于现实中的事物。类与对象类与对象 人类认识自然的时候,是先接触个体(对象),然后把相似的人类认识自然的时候,是先接触个体(对象),然后把相似的个体归纳为类;但人们在设计、生产产品的时候,先是设计一个类,个体归纳为类;但人们在设计、生产产品的时候,先是设计一个类,然后生产这个类的个体然后生产这个类的个体产品(对象)。发明家发明一种产品,产品(对象)。发明家发明一种产品,可以说他发明了一个类,工程师设计出一种产品也可以说他设计了可以说他发明了一个类,工程师设计出一种产品也可以说他设计了一个类。一个类。从这个思想出发,你造出一个饼干模子,可以说你造出了一个从这个思想出发,你造出一个饼干模子,可以说你造出了一个类,由这个模子造出饼干,可以说你获得了这个类的一个对象。就类,由这个模子造出饼干,可以说你获得了这个类的一个对象。就是说,人在造对象之前,先造出类,再由类造出这个类的个体,即是说,人在造对象之前,先造出类,再由类造出这个类的个体,即对象。对象。我们在设计计算机程序的时候,也应用这个思想;为了设计出若我们在设计计算机程序的时候,也应用这个思想;为了设计出若干段性质和功能相近的程序(对象),首先设计出一个类(抽象和干段性质和功能相近的程序(对象),首先设计出一个类(抽象和封装),再由类产生所需的程序段(类的实例化),这样的程序段封装),再由类产生所需的程序段(类的实例化),这样的程序段就是对象,这样可以减少重复劳动。类的实例化和拷贝不同,拷贝就是对象,这样可以减少重复劳动。类的实例化和拷贝不同,拷贝所得的不同备分完全一致,而类经过实例化所得的不同对象总有差所得的不同备分完全一致,而类经过实例化所得的不同对象总有差异。异。类:是一个数据结构,其中包括一组数类:是一个数据结构,其中包括一组数据和操作这组据和操作这组 数据的方法。是创建对数据的方法。是创建对象的蓝本。象的蓝本。对象:是类的一个具体的实例。创建类对象:是类的一个具体的实例。创建类的对象叫类的实例化。的对象叫类的实例化。Java中中 类定义的一般格式为:类定义的一般格式为:修饰词修饰词 class 类名类名 extends 父类名父类名修饰词修饰词 类型类型 成员变量成员变量1名名;.修饰词修饰词 类型类型 成员变量成员变量n名名;修饰词修饰词 类型类型 成员方法成员方法1名名(参数列表(参数列表1)类型类型 局部变量局部变量1名名;.类型类型 局部变量局部变量i1名名;.(方法体)(方法体).修饰词修饰词 类型类型 成员方法成员方法m名名(参数列表(参数列表m)类型类型 局部变量局部变量1名名;.类型类型 局部变量局部变量km名名;.(方法体)(方法体)成员变量(属性)成员方法1成员方法m类类的定义1局部变量局部变量局部变量局部变量类由类由成员变量成员变量或或成员方法成员方法或或二者二者组成。组成。成员方法可以没成员方法可以没有局部变量,没有局部变量,没有方法体,或二有方法体,或二者都没有(抽象者都没有(抽象方法)。方法)。成员变量的有成员变量的有效范围为整个类效范围为整个类(的实例)。(的实例)。局部变量的有局部变量的有效范围为它所在效范围为它所在的方法。的方法。在方法体中,在方法体中,若局部变量与成若局部变量与成员变量同名,成员变量同名,成员变量将被同名员变量将被同名的局部变量屏蔽。的局部变量屏蔽。public class Circle privite double radius=1.0;public double findArea()double area;area=radius*radius*3.14159;return area;例:类的定义例:类的定义 关于类定义的几点说明:关于类定义的几点说明:(1)整个类必须放在一个源文件(程序)中,一个源程序)整个类必须放在一个源文件(程序)中,一个源程序可包含多个类;可包含多个类;(2)一个源程序中至多可有一个)一个源程序中至多可有一个public类。当源程序中有一类。当源程序中有一个个public类时,源程序名应与该类时,源程序名应与该public类名相同(后缀为类名相同(后缀为.java),当源程序中无),当源程序中无public类时,源程序名可与其中任意类时,源程序名可与其中任意一类的类名相同(后缀为一类的类名相同(后缀为.java)。)。(3)类定义中可以指明父类,也可不指明。如不指明父类,)类定义中可以指明父类,也可不指明。如不指明父类,则默认其父类为则默认其父类为Object 类。实际上,在类。实际上,在 java中,只有中,只有Object类没有父类,它是其他一切类的父类或祖先类!类没有父类,它是其他一切类的父类或祖先类!(4)花括号)花括号“”之后无分号之后无分号“;”。(5)类中的成员方法可以互相调用。)类中的成员方法可以互相调用。类定义说明成员变量和局部变量的类型可以是成员变量和局部变量的类型可以是Java中中 的任的任何类型:整型、浮点型、字符型、引用类型、数何类型:整型、浮点型、字符型、引用类型、数组类型、对象。组类型、对象。成员变量的有效范围为整个类(的实例)。成员变量的有效范围为整个类(的实例)。局部变量的有效范围为它所在的方法。局部变量的有效范围为它所在的方法。如果局部变量的名字与成员变量的名字相同,则如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即成员变量在这个方法内暂时成员变量被隐藏,即成员变量在这个方法内暂时失效;但可以通过关键字失效;但可以通过关键字this访问。访问。成员变量和局部变量创建对象:分两步创建对象:分两步1、对象的声明、对象的声明:(为对象变量分配内存)为对象变量分配内存)类名类名 对象名;对象名;例如:例如:Circle oneCircle;2、创建对象:、创建对象:(为实际对象分配内存)为实际对象分配内存)对象名对象名=new 类名();类名();例如:例如:oneCircle=new Circle();以上两步可以合成一步。例如:以上两步可以合成一步。例如:Circle oneCircle=new Circle();简单类型变量和对象类型变量的区别简单类型变量和对象类型变量的区别每个变量代表一个存储值的内存地址。简单类型变量对应内存中存储的值是该变量的值。对象类型变量对应内存中存储的值是实际对象的地址,称为一个引用,所以对象类型变量被称为引用变量。简单类型 int i=1;i1对象类型 Circle c;c地址/引用c:Circleradius=1.0c=new Circle();简单类型变量和对象类型变量的区别简单类型变量和对象类型变量的区别1222简单类型赋值简单类型赋值i=1;j=2;i=j;赋值前:赋值后:iijj简单类型变量和对象类型变量的区别简单类型变量和对象类型变量的区别c1c1c2c2引用引用引用引用c1:Circleradius=5c2:Circleradius=9赋值前:赋值后:对象类型赋值对象类型赋值简单类型变量和对象类型变量的区别简单类型变量和对象类型变量的区别对象利用圆点操作符访问其中的数据成员和方法成员对象利用圆点操作符访问其中的数据成员和方法成员例public class TestCircle public static void main(String args)Circle myCircle=new Circle();System.out.println(The area of the circle of radius +myCircle.radius+is +myCircle.findArea();class Circle public double radius=1.0;public double findArea()return radius*radius*3.14159;构造方法作用是在创建对象时,初始化对象的数据成员。作用是在创建对象时,初始化对象的数据成员。必须与定义它的类同名。必须与定义它的类同名。没有返回值类型,甚至连没有返回值类型,甚至连void都没有。都没有。构造方法可以被重载。构造方法可以被重载。构造方法的调用是在使用构造方法的调用是在使用new操作符创建一个操作符创建一个对象时进行的。对象时进行的。class Circle double radius;Circle()radius=1.0;System.out.println(“默认的构造方法默认的构
展开阅读全文