尚学堂_课件_J2SE上半部分

上传人:z*** 文档编号:243098227 上传时间:2024-09-15 格式:PPT 页数:196 大小:900KB
返回 下载 相关 举报
尚学堂_课件_J2SE上半部分_第1页
第1页 / 共196页
尚学堂_课件_J2SE上半部分_第2页
第2页 / 共196页
尚学堂_课件_J2SE上半部分_第3页
第3页 / 共196页
点击查看更多>>
资源描述
,Click to edit Master title style,Click to edit Master text stylesgood1,Second levelgood2,Third levelgood3,Fourth levelgood4,Fifth levelgood5,手把手教程,V3.0,版权所有:尚学堂科技,http:/,尚学堂,内容,第一章,:JAVA,概述,第二章,:JAVA,语言基础,第三章,:,面向对象编程,第四章,:JAVA,异常处理机制,第五章,:,数组,第六章,:JAVA,常用类,第七章,:JAVA,容器类,第八章,:JAVA,流技术,第九章,:JAVA,多线程机制,第十章,:JAVA,网络编程,第十一章,:GUI,编程,第一章,:J2SE,之,JAVA,概述,想学习,J2ME,、,JSP/,Servlet,、,J2EE,吗?,请打好基础,J2SE,内容,计算机语言的历史以及,Java,语言的历史地位,Java,自身的发展史,Java,体系,Java,的特点,Java,的运行机制,Java,运行环境的安装与配置,第一个程序,HelloWorld,计算机语言发展史及,Java,的历史地位,第一代语言,第一代语言,或,机器语言,是一种,低级的,面向计算机的,程序设计语言,,使用,0,和,1,表示各种命令。,第二代语言,汇编,第三代语言,C,、,Pascal,、,Fortran,面向过程的语言,C+,面向过程,/,面向对象,Java,跨平台的纯面向对象的语言,.NET,跨语言的平台,Java,发展史与,java,体系,95,年,,Sun,发布,JDK1.0,98,年,,JDK1.2,,,更名为,Java2,后续,JDK1.3,、,1.4,目前,JDK1.5,,,更名为,Java 5.0,(最新为,JDK 6 Update 3,),我们使用,5.0,j2se,java web,j2ee,j2me,移动增值,JAVA,能开发那些类型的程序?,Java,语言的特点,一种面向对象的语言。,一种平台无关的语言,提供程序运行的解释环境。,一种健壮的语言,吸收了,C/C+,语言的优点,但去掉了其影响程序健壮性的部分(如:指针、内存的申请与释放等)。,Java,程序运行机制及运行过程,源程序,(*,.java,文件),字节码,(*,.class,文件),Java,编译器,类装载器,Class Loader,字节码校验器,byte verifier,解释器,interpretor,系统平台,核心机制之,Java,虚拟机,Java,虚拟机可以理解成一个以字节码为机器指令的,CPU,。,对于不同的运行平台,有不同的虚拟机。,Java,虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。,UNIX,JVM for UNIX,Windows,JVM for Windows,Other Platform,JVM for Other,*,.java,*,.class,编译,执行,核心机制之垃圾收集,garbage collector,不再使用的内存空间应回收垃圾收集。,在,C/C+,等语言中,由程序员负责回收无用内存。,Java,语言消除了程序员回收无用内存空间的责任;它提供一种系统级线程跟踪存储空间的分配情况。并在,JVM,的空闲时,检查并释放那些可被释放的存储器空间。,垃圾收集在,Java,程序运行过程中自动进行,程序员无法精确控制和干预。,J2SDK & JRE,Software,Devleopment,Kit (,软件开发包,),Java Runtime Environment (Java,运行环境,),开发需要,JDK,用户只需,JRE,开发,JDK,的不止一家,最主流的是,Sun,公司发布的,JDK,除了,Sun,之外,还有很多公司和组织都开发了自己的,JDK,IBM,公司开发的,JDK,,,IBM,的,JDK,包含的,JVM,(,Java Virtual Machine,)运行效率要比,Sun JDK,包含的,JVM,高出许多,BEA,公司的,Jrocket,,专门运行在,x86,平台的,Jrocket,在服务端运行效率也要比,Sun JDK,好很多,GNU,组织开发的,JDK,Java,开发环境的下载 安装 配置,配置,Java,开发环境步骤(,WindowsXP,),下载并安装最新版本的,J2SDK,。,设置,Windows,环境变量。,PATH/CLASSPATH,选择合适的文本编辑器或使用集成开发环境。,下载,安装,配置,path &,classpath,验证,java,运行,java,程序,javac,编译,java,程序,HelloWorld.java,Java Application,初步,Java,源文件以“,java”,为扩展名。源文件的基本组成部分是类(,class,),如本例中的,HelloWorld,类。,一个源文件中最多只能有一个,public,类。其它类的个数不限,如果源文,件包,含一个,public,类,它必需按该类名命,名。,Java,应用程序的执行入口是,main(),方法。它有固定的书写格式:,public static void main(String args) ,Java,语言中严格区分大小写。,Java,方法由一条条语句构成,每个语句以分号结束。,Java,语言有三种注释方式:,/,用于单行注释,/*,用于多行注释,*,/,/*,*,用于多行注释,且可以被,doc,工具解析,*,/,常见,Java,开发环境,编辑器,UltraEdit,EditPlus,集成开发环境(,IDE Integrated Development Environment,):,JBuilder,(,http:/,),Eclipse,(,http:/,www.eclipse.org,),Sun One Studio Net Beans,(,http:/,),WSAD,RAD,(,http:/,),WebSphere,Application Developer,Rational Application Developer,IntelliJ,IDEA,常见错误,出现如下错误的原因:,java,不是内部或外部命令,也不是可运行的程序或批处理文件。,编译,javac,Test.java,,明明看到该文件,为何找不到?,HelloWorld.java.txt,显示扩展名!,程序员的桌面设置 (详细列表,/,显示所有文件,/,标题栏地址栏全路径),java,命令运行的是那个版本?,如果安装了多个版本,jdk,,那么,java,命令运行的是那个版本的呢,?,java version,java verbose,java -verbose,HelloWorld,有时候,修改了一个,jdk,下面的配置,但始终无法生效。就是这个道理。,第二章,:J2SE,之 基础语法,内容,标识符,关键字,Java,基本数据类型,运算符,表达式和语句,分支,循环,方法,变量的作用域,递归调用,标识符,Java,语言中,对各种,变量,、,方法,和,类,等要素命名时使用的字符序列称为标识符。,Java,标识符有如下命名规则:,标识符由字母、下划线“,_”,、美元符“,$”,或数字组成。,标识符应以字母、下划线 、美元符开头。,Java,标识符大小写敏感,长度无限制。,约定俗成:,Java,标识符选取因注意“见名知意”且不能与,Java,语言的关键字重名。,合法的标识符,不合法的标识符,HelloWorld,class,DataClass,DataClass,#,_983,98.3,$bS5_c7,Hell World,关键字,Java,中一些赋以特定的含义,用做专门用途的字符串称为关键字(,keyword,)。,所有,Java,关键字都是小写英文字符串。,goto,和,const,虽然从未使用,但也作被为,Java,关键字保留。,abstract,default,if,private,this,boolean,do,implements,protected,throw,break,double,import,public,throws,byte,else,instanceof,return,transient,case,extends,int,short,try,catch,final,interface,static,void,char,finally,long,strictfp,volatile,class,float,native,super,while,const,for,new,switch,null,continue,goto,package,synchronized,Java,常量,Java,的常量值用字符串表示,区分不同的数据类型。,如整型常量,123,实型常量,3.14,字符常量 ,a,逻辑常量,true,、,false,字符串常量,“,helloworld,”,null,注意:,区分字符常量和字符串常量,区分,null,和 “”,Java,变量,Java,变量是程序中最基本的存储单元,其要素包括,变量名,,,变量类型,和,作用域,。,Java,程序中每一个变量都属于特定的数据类型,在使用前必须对其声明,声明格式为:,type,varName,=,value,varName,=value,例如:,int,i = 100; float f = 12.3f; double d1, d2, d3 = 0.123;,String s = “hello”;,从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必须要先申请(声明),然后必须进行赋值(填充内容),才能使用,值,名字,提示,:,程序执行过程,硬盘,程序,内存,代码,操作系统代码,1:Load,到内存区,2:,找到,main,方法开始执行,heap,stack,data segment,code segment,3:,执行过程中的内存管理,存放代码,静态变量,字符串常量,局部变量,new,出来的东西,Java,变量的分类,按被声明的位置划分:,局部变量,:方法或语句块内部定义的变量,成员变量,:方法外部、类的内部定义的变量,注意:类外面(与类对应的大括号外面)不能有变量的声明,按所属的数据类型划分:,基本数据类型,变量,引用数据类型,变量,Java,局部变量与成员变量,方法体内部声明的变量(包括形参)称为局部变量:,方法体内部是指与方法对应的大括号内部,在方法体外,类体内声明的变量成为成员变量,public void method() ,int,i;,int,j = i+5 ; /,编译出错,变量,i,还未被初始化,double d = 3.14;,注:以上程序目前还不能编译,TestVar.java,Java,数据类型的划分,数据类型,基本数据类型,引用数据类型,数值型,字符型(,char,),布尔型(,boolean,),整数类型,(,byte,short,int,long,),浮点类型(,float, double,),类(,class,),接口(,interface,),数组,Java,基本数据类型,Java,中定义了,4,类,8,种基本数据类型。,逻辑型,boolean,字符型,char,数值型,整数型,byte, short,int, long,浮点数型,float, double,逻辑型,Boolean,boolean,类型适于逻辑运算,一般用于程序流程控制 。,boolean,类型数据只允许取值,true,或,false,,不可以,0,或非,0,的整数替代,true,和,false,,这点和,C,语言不同。,用法举例:,boolean,flag;,flag = true;,if(flag,) ,/do something,字符型,char,char 型数据用来表示通常意义上的“字符”,字符常量为用单引号括起来的单个字符,例如:,char eChar = a; char cChar =中;,Java 字符采用,Unicode,编码,每个字符占两个字节,因而可用十六进制编码形式表示,例如:,char c1 = u0061;,注:Unicode是全球语言统一编码,Java 语言中还允许使用转义字符 来将其后的字符转变为其它的含义,例如:,char c2 = n;,/n代表换行符,补充:2进制、10进制、16进制之间的转换,1101 11 0 2 1 4 1 8,13 1 4 8 1101,1101 D,类 型,占用存储空间,表数范围,byte,1,字节,-128,127,short,2,字节,-2,15,2,15,-1,int,4,字节,-2,31,2,31,-1,long,8,字节,-2,63,2,63,-1,整数类型,Java,各整数类型有固定的表数范围和字段长度,其不受具体操作系统的影响,以保证,Java,程序的可移植性。,Java,语言整型常量的三种表示形式:,十进制整数,如:,12, -314, 0,。,八进制整数,要求以,0,开头,如:,012,。,十六进制数,要求,0x,或,0X,开头,如:,0x12,。,Java,语言的整型常量默认为,int,型,声明,long,型常量可以后加,l ,或,L ,,如:,int,i1 = 600; /,正确,long l1 = 88888888888L; /,必须加,l,否则会出错,类 型,占用存储空间,表数范围,float,4,字节,-3.403E38,3.403E38,double,8,字节,-1.798E308,1.798E308,浮点类型,与整数类型类似,,Java,浮点类型有固定的表数范围和字段长度,不受平台影响。,Java,浮点类型常量有两种表示形式,十进制数形式,例如,: 3.14 314.0 .314,科学记数法形式,如,3.14e2,3.14E2,100E-2,Java,浮点型常量默认为,double,型,如要声明一个常量为,float,型,则需在数字后面加,f,或,F,,如:,double d = 12345.6; /,正确,float f = 12.3f; /,必须加,f,否则会出错,下面列出,Java,的各种浮点类型,TestVar2.java,java,中可以从,任意基本类型,转型到另外的基本类型,例外,boolean,类型不可以转换为其他的数据类型。,转换分为默认转换和强制转换,整形,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:,容量小的类型默认转换为容量大的数据类型;数据类型按容量大小排序为:,byte,short,char,-,int,-long-float-double,byte,short,char,之间不会互相转换,他们三者在计算时首先回转换为,int,类型,容量大的数据类型转换为容量小的数据类型时,要加上,强制,转换符,但可能造成精度降低或溢出;使用时要格外注意。,有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。,(看下页),实数常量(如:,1.2,)默认为,double,。整数常量(如:,123,)默认为,int,。,基本数据类型转换,TestConvert.java,多种类型的数据混合运算,有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。,如果其中一个运算对象是,double,类型的,另一个也会被转换成,double,类型。,否则,如果其中一个运算对象是,float,类型的,,另一个也会被转换成,float,类型的。,否则,如果其中一个运算对象是,long,类型的,,另一个也会被转换成,long,类型的。,否则,如果其中一个运算对象是,int,类型的,,另一个也会被转换成,int,类型的。,否则,如果其中一个运算对象是,short,类型的,,另一个也会被转换成,short,类型的。,void public method(),int,i=1,j;,float,f1=0.1;,float,f2=123;,long,l1,=,12345678,l2=8888888888;,double,d1,=,2e20,d2=124;,byte,b1,=,1,b2,=,2,b3,=,129;,j,=,j+10;,i,=,i/10;,i,=,i*0.1;,char,c1=,a,c2=125;,byte,b,=,b1-b2;,char,c,=,c1+c2-1;,float,f3,=,f1+f2;,float,f4,=,f1+f2*0.1;,double,d,=,d1*,i+j,;,float,f,=,(,float,)(d1*5+d2);,课堂练习,说出下面程序片断中编译错误或可能产生计算溢出的部分,课堂练习,TestConvert2.java,程序格式,大括号对齐,遇到,缩进,,Tab/,Shift+Tab,程序块之间加空行,并排语句之间加空格,运算符两侧加空格,有特定条件,前面有空格,成对编程,运算符,Java,语言支持如下运算符:,算术运算符:,+,,,-,,*,,/,,,%,,,+,,,-,关系运算符:,,,=,,,,,赋值运算符:,=,扩展赋值运算符:,+ =,,,- =,,*,=,,,/ =,字符串连接运算符:,+,public,class,Test,public,static,void,main(String,arg,),int,i1,=,10,i2,=,20;,int,i,=,i2+;,System.out.print(,i,=,+,i);,System.out.println,(, i2=,+,i2);,i,=,+i2;,System.out.print(,i,=,+,i);,System.out.println,(, i2=,+,i2);,i,=,-i1;,System.out.print(,i,=,+,i);,System.out.println,(, i1=,+,i1);,i,=,i1-;,System.out.print(,i,=,+,i);,System.out.println,(, i1=,+,i1);,自加和自减运算符,输出:,i=20 i2=21,i=22 i2=22,i=9 i1=9,i=9 i1=8,注意:,+(-),在前时先运算再取值。,在后时先取值再运算。,逻辑运算符,:!,逻辑非,&, 逻辑与,|, 逻辑或, 逻辑异或,&, 短路与,|, 短路或,&, |,!,逻辑运算符只能用于,boolean,身上。,a,b,!a,a&b,a|b,ab,a&b,a|b,true,true,false,true,true,false,true,true,true,false,false,false,true,true,false,true,false,true,true,false,true,true,false,true,false,false,true,false,false,false,false,false,逻辑运算符,public,class,Test,public,static,void,main(String,args,),boolean,a,b,c,;,a,=,true,; b,=,false,;,c,=,a,&,b;,System.out.println(c,);,c,=,a,|,b;,System.out.println(c,);,c,=,a,b;,System.out.println(c,);,c,=,!a;,System.out.println(c,);,c,=,a,&,b;System.out.println(c,);,c,=,a,|,b;,System.out.println(c,);,public class Test,public static void main(String,args,) ,int,i=1,j=2;,boolean,flag1 = (i3),/,第二个操作数将不再计算,boolean,flag2 = (i2)|(i+j)6);,/,第二个操作数将不再计算,赋值,运算符,(=),当,“,=,”,两侧数据类型不一致时,可以适用默认类型转换或使用强制类型转换原则进行处理,long l = 100;,int,i = (,int)l,;,注意:可以将整型常量直接赋值给,byte, short, char,等类型变量,而不需要进行强制类型转换,只要不超出其表数范围,byte b = 12; char c = 100;,X,byte bb = 256;,X,short s = -32769;,赋值运算符与扩展赋值运算符,运算符,用法举例,等效的表达式,+=,a += b,a =,a+b,-=,a -= b,a = a-b,*,=,a *= b,a = a*b,/=,a /= b,a = a/b,%=,a %= b,a =,a%b,字符串连接符,“,+”,除用于算术加法运算外,还可用于对字符串进行连接操作,int,id = 800 + 90;,String s = hello + world;,“+”,运算符两侧的操作数中只要有一个是字符串,(String),类型,系统会自动将另一个操作数转换为字符串然后再进行连接。,int,c = 12;,System.out.println(c,= + c);,表达式,表达式是符合一定语法规则的运算符和操作数的序列,a,5.0 + a,(a-b)*c-4,i ,L to R, =,instanceof,L to R,= !=,L to R,&,L to R,L to R,|,L to R,&,L to R,|,R to L,? :,R to L,= *= /= %= += -= = = &= = |=,低,高,计算细节,char c = (,char)(Math.random,()*26+a);,Math.random,(),返回一个,double,值,所以,26,被转成,double,进行乘法运算,乘积是个,double,为了完成加法,,a,必须被转成,double,最后获得的,double,再转成,char,如果从,29.7,转成,char,,是,30,还是,29,?,Math.random,(),输出,0,1,之间的数。,0,1),“三目条件运算符,语法格式:,x ? y : z,其中,x,为,boolean,类型表达式,先计算,x,的值,若为,true,,则整个三目运算的结果为表达式,y,的值,否则整个运算结果为表达式,z,的值。,举例:,int,score = 80;,int,x = -100;,String type = score 0 ? 1 : (x = 0 ? 0 : -1);,System.out.println(type,= + type);,System.out.println(flag,= + flag);,type=,及格,flag= -1,三目条件运算符,语句,条件语句,-,根据不同条件,执行不同语句。,if,if . else,if . else if,if . else if . else if . else,switch,循环语句,重复执行某些动作,for (JDK1.5,语法,),while,do . while;,if,语句,if,if . else .,if . else if .,if . else if . else if .,if . else if . else if . else,只有一句需要执行的语句时,可以省略, ,,但是不推荐省略,小心不要在,if,后面加,;,TestIF.java,for,循环语句,for,语句为如下形式:,for(,表达式1; 表达式2; 表达式3),语句,; ; ,执行过程首先计算表达式,1,,接着执行表达式,2,,若表达式,2,的值,=,ture,,则执行语句,接着计算表达式,3,,再判断表达式,2,的值;依此重复下去,直到表达式,2,的值,=falsefor,语句中三个表达式都可以省略,JDK1.5,新补充的,for,语法(后面课程中补充,数组),=true,表达式,2,值,结束,for,语句,计算表达式,3,语 句,计算表达式,1,=false,public class Test ,public static void main(String,args,) ,long result = 0;,long f = 1;,for (,int,i = 1; i = 10; i+) ,f = f * i;,result += f;,System.out.println(result,= + result);,计算,result = 1!+2!+10!,课,堂 练,习,编写程序,用一个,for,循环计算,1+3+5+7 + + 99,的值,并输出计算结果,。,(,OddSum.java,),while & do while,语句,while,语句为如下形式:,while(,逻辑表达式,),语句,; ; ,执行过程,先判断逻辑表达式的值。若,=true.,则执行其后面的语句,然后再次判断条件并反复执行,直到条件不成立为止,while,语句为如下形式:,do ,语句,; ; while(,逻辑表达式,),;,执行过程,先执行语句,再判断逻辑表达式的值,若为,true,再执行语句,否则结束循环。,表达式值,语 句,结束,While,语句,语 句,表达式值,结束,do-While,语句,TestWhile.java,变量的作用域,内部,Scope.java,break & Continue,语句,break,语句用于终止某个语句块的执行。用在循环语句体中,可以强行退出循环;例如:,public class Test ,public static void main(String,args,) ,int,stop = 4;,for (,int,i = 1; i = 10; i+) ,/,当,i,等于,stop,时,退出循环,if (i = stop) break;,System.out.println,( i= + i);,i = 1,i = 2,i = 3,continue,语句用在循环语句体中,用于终止某次循环过程,跳过循环体中,continue,语句下面未执行的循环,开始下一次循环过程;例如:,public class Test ,public static void main(String,args,) ,int,skip = 4;,for (,int,i = 1; i = 5; i+) ,/,当,i,等于,skip,时,跳过当次循环,if (i = skip) continue;,System.out.println(i,= + i);,i = 1,i = 2,i = 3,i = 5,循环语句举例,/,输出,1,100,内前,5,个可以被,3,整除的数。,public class Test ,public static void main(String,args,),int,num = 0, i = 1;,while (i = 100) ,if (i % 3 = 0) ,System.out.print(i,+ );,num+;,if (num = 5) ,break;,i+;,/,输出,101,200,内的质数,,public class Test ,public static void main(String,args,) ,for (,int,i=101; i200; i+=2) ,boolean,f = true;,for (,int,j = 2; j 2 ),public class Test public static void main(String,arg,) System.out.println(f(5); public static,int,f(int,n) if (n = 1 | n = 2) return 1; else return f(n - 1) + f(n - 2); ,课堂练习试用非递归调用的方法解决上面,Fibonacci,数列问题,Fab.java,main,f5,f4,f3,f2,f1,f2,f3,f2,f1,public static,int,f(int,n) if (n = 1 | n = 2) return 1; else return,f(n,- 1) +,f(n,- 2); ,1,2,3,n1,n2,result,Ex5,汉诺塔,(编程思想训练),游戏的目标,把,A,杆上的金盘全部移到,C,杆上,并仍按原有顺序叠好。,条件,每次只能移动一个盘,,并且在每次移动都不允许大盘移到小盘之上。,编程要求,利用递归调用技术给出,N,个盘从,A,杆移到,C,杆的移动过程。,Ex5,汉诺塔,HANOI(N,A,B,C),1.,以,C,盘为临时杆,从,A,杆将,1,至,N-1,号盘移至,B,杆。,HANOI(N-1,A,C,B),2.,将,A,杆中剩下的第,N,号盘移至,C,杆。,3.,以,A,杆为临时杆,从,B,杆将,1,至,N-1,号盘移至,C,杆。,HANOI(N-1,B,A,C),汉诺塔参考代码,1.,以,C,盘为临时杆,从,A,杆将,1,至,N-1,号盘移至,B,杆。,2.,将,A,杆中剩下的第,N,号盘移至,C,杆。,3.,以,A,杆为临时杆,从,B,杆将,1,至,N-1,号盘移至,C,杆。,public class Test,public static void main(String,args,),Test t = new Test();,t.hanoi(3,A,B,C);,public void,hanoi(int,num,char,a,char,b,char,c),if(num,= 0) return;,this.hanoi(num-1,a,c,b);,System.out.println(move,plate p + num + from + a + to + c);,this.hanoi(num-1,b,a,c);,hanoi(3,a,b,c),hanoi(2,a,c,b),move 3 from a to c,hanoi(2,b,a,c),hanoi(1,a,c,b),move 2 from a to c,hanoi(1,b,a,c),hanoi(1,a,c,b),move 2 from a to c,hanoi(1,b,a,c),hanoi(0,a,c,b),move 1 from a to c,hanoi(0,b,a,c),hanoi(0,a,c,b),move 1 from a to c,hanoi(0,b,a,c),hanoi(0,a,c,b),move 1 from a to c,hanoi(0,b,a,c),hanoi(0,a,c,b),move 1 from a to c,hanoi(0,b,a,c),if,(num = 0),return,;,if,(num = 0),return,;,if,(num = 0),return,;,if,(num = 0),return,;,if,(num = 0),return,;,if,(num = 0),return,;,if,(num = 0),return,;,if,(num = 0),return,;,Classpath,程序格式的视频是否看了,别使用,UtralEdit,运行,java,递归,想象成又拷贝了一份方法,当前方法由于没有确定的值,尚没有返回,UltraEdit,有没有高亮显示,?,第三章,:J2SE,之 面向对象编程,本章内容,编程语言的发展,面向过程的设计思想,面向对象的设计思想,对象和类的概念,类之间的关系,对象和引用,Java,类的定义,构造函数,对象的创建和使用,this,关键字,static,关键字,package,和,import,语句,访问控制,类的继承,方法的重写,Object,类,对象转型,多态,抽象类,接口,编程语言的发展,机器语言直接由计算机的指令组成,指令、数据、地址都以“,0”,和“,1”,的符合串组成;可以被计算机直接执行。,汇编语言用容易理解和记忆的符号表示指令、数据以及寄存器等,抽象层次很低,程序员需要考虑大量的机器细节。,高级语言屏蔽了机器细节,提高了语言的抽象层次接近于人的自然语言,,60,年代出现的结构化编程语言提出了结构化数据和语句,数据和过程抽象等概念。,面向对象的语言与已往的各种语言的根本不同是,它的设计出发点就是为了更能直接的描述问题域中客观存在的事物。,语言的发展是朝着人类更容易理解的方向前进,面向对象编程语言三大特征,隐藏,/,封装,继承,多态,面向过程的设计思想和面向对象的设计思想,我要去新疆,面向过程,我开车,我挂档,我踩油门,我过河北,我过陕西,面向对象,我命令车去新疆,车怎么去不关我事,信息封装在车这个类的内部,我不用去了解车整个开动的过程,对象和类的概念,对象用计算机语言对问题域中事物的描述,对象通过,“属性(,attribute,)”和“方法(,method,)”,来分别对应事物所具有的静态属性和动态属性。,类是用于描述同一类形的对象的一个抽象的概念,类中定义了这一类对象所应具有的静态和动态属性。,类可以看成一类对象的模板,对象可以看成该类的一个具体实例。,职员,A,类,对象,实例化,抽象,类(对象)之间的关系 之 关联关系,继承关系(一般和特殊),XX,是一种,XX,聚合关系(整体和部分),聚集,组合,实现关系,多 态,Java,与面向对象,对象是,Java,程序的核心,在,Java,程序中“万事万物皆对象”。,类是用来创建同一类型的对象的“模板”,在一个类中定义了该类对象所应具有的成员变量以及方法。,类可以看成是静态属性(成员变量)和动态属性(方法)的封装体。,J2SDK,提供了很多类供编程人员使用,编程人员也可定义自己的类。,我们的语言:成员变量属性 方法函数,为什么用对象?,面向对象的编程,一组对象互相,配合,通过,沟通,完成特定功能,所有的,paradigm,都是对现实问题的抽象,汇编是对机器语言的抽象,面向过程的语言是对汇编的抽象,对象更加符合对于现实问题的抽象,对象都有对外服务的接口,通过继承可以复用,对象隐藏内部服务的实现,通过聚合可以复用,面向对象更加容易使我们达到这些年来苦苦追求的境界,Reusability,、,Extensibility,、,Maintainablity,维护和替换更加方便、,.,组件,比对象更高的层次上的抽象(二进制级别),EJB,、,Web Service,、,CORBA,、,COM,、,.,Java,类的定义,成员变量的声明,方法的声明,/,用,class,关键字定义一个类,例如:,class Person ,/,成员变量定义,private,int,id; private,int,age = 20;,/,方法定义,public,int,getAge,() return age; public void,setAge(int,i) age = i; public,int,getId,() return id;,类的定义主要由两方面组成,成员变量,和,方法,。,声明成员变量,的格式为:, type =,defaultValue, ;,例如:,private,int,id; private,int,age = 20;,声明方,法的格式为:, () ,例如:,public,int,getAge,() return age;,成员变量,成员变量可以使用,Java,语言中,任何,一种数据类型(包括,基本类型,和,引用类型,)。,在定义成员变量时可以对其初始化,如果不对其初始化,,Java,使用默认的值对其初始化。(右图),成员变量的作用范围为整个类体。,成员变量类型,取值,byte,0,short,0,int,0,long,0L,char,u0000,float,0.0F,double,0.0D,boolean,false,所有引用类型,null,Java,面向对象基本概念 引用,Java,语言中除基本类型之外的变量类型都称之为引用类型。,Java,中的对象是通过引用对其操作的。例如:,/*,*,声明了一个,String,类型的引用变量,,* 但并没有使它指向一个对象,*,/,String s;,/*,*,使用,new,语句创建了一个,String,*,类型的对象并用,s,指向它,* 以后可以通过,s,完成对其的操作,*,/,s = new String(hello world!);,String s;,null,s = new String(hello world!);,0x3a123b, , , ,0x3a123b,堆内存,如何在内存中区分类和对象?,类是静态的概念,代码区,对象是,new,出来的,位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除了静态变量)而方法只有一份,执行的时候才占用内存。,方 法(复习),Java,的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段,声明格式:,修饰符,1,修饰符,2 ,返回值类型 方法名,(,形式参数列表,),Java,语句;, ,形式参数:在方法被调用时用于接收外界输入的数据。,实参:调用方法时实际传给方法的数据。,返回值:方法在执行完毕后返还给调用它的环境的数据。,返回值类型:事先约定的返回值的数据类型,,如无返回值,必须给出返回值类型,void,。,Java,语言中使用下述形式调用方法:,对象名,.,方法名,(,实参列表,),实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配,,return,语句终止方法的运行并指定要返回的数据。,Java,中进行函数调用中传递参数时,遵循值传递的原则:,基本类型传递的是该数据值本身。引用类型传递的是对对象的引用,而不是对象本身,。,TestMethod.java,类和对象的关系,类,C,的代码,(code,seg,),(heap,seg,),class C ,int,i;,int,j;,.main. ,C c1 = new C();,C c2 = new C();,xx,xx,xx,xx,c1,c2,c1.i,c1.j,c2.i,c2.j,对象的创建和使用,必须使用,new,关键字创建对象。,Person,p,erson,=,new,Person,();,使用对象(引用),.,成员变量来引用对象的成员变量。,person.age,使用对象(引用),.,方法(参数列表)来调用对象的方法。,person.,setAge(23),同一类的每个对象有不同的成员变量存储空间。,同一类的每个对象共享该类的方法。,构造方法,使用,new +,构造方法 创建一个新的对象。,构造方法是定义在,Java,类中的一个用来初始化对象的方法。,构造方法与类同名且没有返回值。,例如:,Person,类的构造函数:,public class Person ,int,id;,int,age;,Person(int,n,int,i),id = n;,age = i;,构造方法的调用,public class Test ,public static void main(String,args,) ,Person tom = new Person(1,25);,Person john = new
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!