java简介和基本语法.ppt

上传人:za****8 文档编号:13189720 上传时间:2020-06-07 格式:PPT 页数:82 大小:919.01KB
返回 下载 相关 举报
java简介和基本语法.ppt_第1页
第1页 / 共82页
java简介和基本语法.ppt_第2页
第2页 / 共82页
java简介和基本语法.ppt_第3页
第3页 / 共82页
点击查看更多>>
资源描述
面向对象程序设计-Java语言,目录,第一章Java简介第二章Java基本语法第三章Java面向对象思想()第四章Java异常处理第五章JavaAPI()第六章Java多线程第七章JavaIO第八章Java项目实践,第一章Java简介,Java语言的发展历程Java的三大版本Java虚拟机原理及Java跨平台的原理Java语言的特点Java开发环境的搭建及其设置Java程序先睹为快,1.1Java语言的发展历程,90年12月,SUN公司的一个开发小组从事家用电器方面的小型研究项目。最初方案是用C+开发。开发人员JamesGosling(吉姆斯高斯林Java之父)对C+实现这一任务感到失望,决定自己编写了一种更好的语言来实现这一项目.最初,这种语言命名为OAK,后来改名为Java(爪哇d:v)。Java最初为用于家用电器而开发,Java的小型、安全、可移植性等特点,使其适用于WEB。Java产生的时候,正是万维网日益流行的时候。95年8月,Netscape公司的浏览器率先支持Java。随后,Microsoft的InternetExplorer浏览器也支持Java。这样,随着万维网的日益普及,Java得到了广泛的使用。(广泛地应用于Internet网络程序设计。),1.1Java语言的发展历程,1995.8Java语言诞生。1996JDK1.0发布,10个最主要操作系统供应商申明将在其产品中支持Java技术1997JDK1.1发布。1998JDK1.1下载量超过200万次,JDK1.2(称Java2)发布。1999Java被分成J2SE、J2EE和J2ME,JSP/Servlet技术诞生。2000JDK1.3发布,JDK1.4发布。2001Nokia公司宣布到2003年将出售1亿部支持Java的手机,J2EE1.3发布。2002J2EE1.4发布,自此Java的计算能力有了大幅度提升.J2EESDK的下载量达到200万次.20035.5亿台桌面机上运行Java程序,75%的开发人员将Java作为首要开发工具2004J2SE1.5发布,这是Java语言的发展史上的又一里程碑事件。为了表示这个版本的重要性,J2SE1.5更名为J2SE5.0。2005JavaOne大会召开,Sun公司公开JavaSE6。此时,Java的各种版本被更名,取消其中的数字2:J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME,1.2Java的三大版本,J2SE(Java2StandardEdition)标准版,定位在客户端,主要用于桌面应用软件的编程J2ME(Java2MicroEdition)微型版,主要应用于嵌入式系统开发,如手机和PDA的编程J2EE(Java2EnterpriseEdition)企业版,定义在服务器端,主要用于分布式网络程序开发,如电子商务网站和ERP系统2005JavaOne大会召开,Sun公司公开JavaSE6。此时,Java的各种版本被更名,取消其中的数字“2”:J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME。,1.3Java虚拟机及跨平台的原理,JVM:Java虚拟机(JavaVirtualMachine),运行Java字节码的假想的计算机Java虚拟机是Java最核心技术,也是跨平台的基础。JVM有自己的堆栈、“CPU”等定义,是用软件模拟出一台假想的计算机,Sun公司制定了它的技术规范。,1.3Java虚拟机及跨平台的原理,Java以前的高级语言例如C/C+语言,不同种类的计算机有不同的机器语言,1.3Java虚拟机及跨平台的原理,机器语言决定代码移植的可行性,为一种计算机编写的代码不能在另一种计算机上运行,SoftwareforIBMMachine,IBM,1.3Java虚拟机及跨平台的原理,通过“编译器”将Java源程序编译成Java字节码文件(.class)(字节码文件采用结构中立的中间文件格式)通过“解释器”将Java字节码文件解释为对应机器语言,并运行,1.3Java虚拟机及跨平台的原理,两种过程比较Java跨平台原理,“一次编译到处运行”,1.4Java语言的特点,Java是跨平台的Java是简单的Java是安全的Java是完全面向对象的Java是健壮的,1.4Java语言的特点,Java是跨平台的Java程序的跨平台主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。,1.4Java语言的特点,Java是简单的不再有#include和#define等预处理功能不再有struct,union及typedef不再有函数、不再有指针、不再有多重继承不再有goto不再有操作符重载(OperatiorOverloading)不再有全局变量取消自动类型转换,要求强制转换不再有手动内存管理,1.4Java语言的特点,Java是安全的Java取消了强大但又危险的指针。由于指针可进行移动运算,指针可随便指向一个内存区域,而不管这个区域是否可用,这样做是危险的,因为原来这个内存地址可能存储着重要数据或者是其他程序运行所占用的,并且使用指针也容易数组越界。Java提供了自动内存管理机制,由垃圾回收器在后台自动回收,Java在字节码的传输过程中使用了公开密钥加密机制(PKC)。而在运行环境提供了四级安全性保障机制:-字节码校验器-类装载器-运行时内存布局-文件访问限制,1.4Java语言的特点,Java是完全面向对象的Java和C+都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继承,多态)。由于C+为了照顾大量C语言使用者而兼容了C,使得自身仅仅成为了带类的C语言,多少影响了其面向对象的彻底性!Java则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了c+的固有缺陷。,1.4Java语言的特点,Java是健壮的Java的强制类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。,1.5Java开发环境的搭建及其设置,Java开发环境JDK(JavaDevelopmentKit)Java开发工具包Java编辑器(记事本,EditPlus,Eclipse)JDK帮助文档(两种格式:html和chm),1.5Java开发环境的搭建及其设置,安装JDKJavabin的目录下包含义下主要文件:Javac:Java编译器,负责将.Java源文件编译成Java字节码.class文件。Java:Java解释器,负责解释Java字节码文件,并运行该文件。Javalib子目录Java标准类库。rt.jar是核心设置环境变量通过“我的电脑”-“属性”-“高级”-“环境变量”pathc:Javabinclasspathc:myJava,1.5Java开发环境的搭建及其设置,1.5Java开发环境的搭建及其设置,环境变量path的作用设置供操作系统去寻找和执行应用程序的路径,例如c:jdkbinJava.exe如果操作系统在当前目录下没有找到我们想要执行的程序和命令时,操作系统就会按照path环境变量指定的目录依次去查找,以最先找到的为准。classpath的作用让JVM按照classpath指定的目录去寻找要装载并执行的class类文件可用点号(.)来默认指定当前目录,例:c:setclasspath=c:myJava;.我们用到的包和类主要在X:Javajdk1.5.0_08jrelibrt.jar,JVM会自动找到这个jar包,所以我们在使用这个jar包中的类时,无需再使用classpath类指定。,1.5Java开发环境的搭建及其设置,Eclipse的安装Java集成开发环境(IDE),也支持c+开源项目,后来居上,IBM功不可没Eclipse:日食若进行J2EE开发,还要加MyEclipse插件MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。Eclipse是绿色安装软件,直接解压即可。现在直接安装集成Eclipse的MyEclipse即可。,1.5Java开发环境的搭建及其设置,JDK帮助文档SUN公司为JDK工具包提供了一整套文档资料,我们习惯上称之为JDK文档。JDK文档中提供了Java中的各种技术的详细资料,以及JDK中提供的各种类的帮助说明。JDK文档是Java语言的完整说明,大多数书籍中的类的介绍都要参照它来完成,它是编程者经常查阅的资料。两种格式:html和chm,1.6Java程序先睹为快,/*一个简单的Application程序;*/publicclassTestpublicstaticvoidmain(Stringargs)System.out.println(“HelloWorld!”);/chaper1.Test,1.6Java程序先睹为快,定义类时的注意点:1、一个Java类必须有一个class修饰符。2、publicstaticvoidmain(Stringargs)方法是该类被JVM解释器执行的入口。写法是固定的。3、System.out.println(“”)是标准的输出语句,可将信息显示在控制台上。4、如果类定义时加了public修饰符则类名必须和文件名一致。否则类名和文件名可以随意。5、一个文件中可以有多个class类定义,但最多只能有一个publicclass类。,1.6Java程序先睹为快,用Javac编译源文件c:JavacTest.Java生成className.class。用Java运行编译后的字节码文件c:JavaclassName编译时必须加上扩展名.java。运行的是类而非class文件,所以类名后不能加扩展名.class,1.6Java程序先睹为快,/*一个稍微不简单的Application程序;*/classStudent/定义学生类intid=123;/定义学生idStringname=“lkl”;/定义学生姓名Publicvoidshow()/输出id和姓名System.out.println(“id=“+id+”,name=“+name);publicclassTestpublicstaticvoidmain(Stringargs)Studentst=newStudent();/创建学生对象st.show();/调用show()方法/chaper1.Student,1.6Java程序先睹为快,单行注释:从/开始到本行结束的内容都是注释,多行注释:在/*和*/之间的所有内容都是注释,文档注释:在注释方面Java提供一种C/C+所不具有的文档注释方式。其核心思想是当程序员编完程序以后,可以通过JDK提供的Javadoc命令,生成所编程序的API文档,而该文档中的内容主要就是从文档注释中提取的。该API文档以HTML文件的形式出现,与Java帮助文档的风格与形式完全一致。凡是在/*和*/之间的内容都是文档注释。例如下面的DocTest.Java文件:/*这是一个文档注释的例子,主要介绍下面这个类*/publicclassDocTest/*变量注释,下面这个变量主要是充当整数计数*/publicinti;/*方法注释,下面这个方法的主要功能是计数*/publicvoidcount(),课堂练习,1、用Java程序输出我一定能学好Java2、分别解释J2ME、J2SE、J2EE。3、什么是JVM?什么是JDK?,第二章Java语言基础,2.1Java程序的基本语法格式2.2常量和变量2.3运算符2.4流程控制语句2.5数组,2.1.1标识符,由字母、0到9的数字、下划线或美元符组成由字母、下划线或美元符开头不能与关键字名或布尔值(true和false)同名标识符字母区分大小写正确的:name,Name,user_name,$name,_name,publicName;错误的:9username,username,public,常量、变量、方法、类和包的名称,练习题,下列哪个是合法的Java标识符?()A、TreefinaldoublePI=3.14;intx=newintNUM;intr=2;intlength=PI*r*2;,2.2.2变量定义,特性名称:标识符,代表这块内存中的数据。类型:根据所存储的数据类型的不同,有各种不同类型的变量。初始值:为其赋值或者是保留缺省值,变量在使用前必须先初始化。作用域:在不同程序块中的可用性及生命周期privateinta=15;,在程序执行期间可根据需要经常变化的值。,2.2.3变量类型,基本数据类型,引用数据类型,数值型,字符型(char),布尔型(boolean),整数类型(byte,short,int,long),浮点类型(float,double),类(class),接口(interface),数组,2.2.4基本数据类型的取值范围,Char类型占两个字节,采用Unicode码,而不是ASCII码。byte类型是整数类型的一种。所有类型长度固定,不随系统而不同。,2.2.5基本数据类型之间的转换,在赋值或运算时,要求数据类型相同,否则要进行类型转换转换方式:自动转换强制转换除boolean类型外,所有的原始数据类型因为各自的精度不同,赋值时都要考虑这个问题,2.2.5基本数据类型之间的转换,运算时的转换整型,实型,字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级。5+3.6+A;/chapter2.TypeConversion,2.2.5基本数据类型之间的转换,赋值时的转换自动类型转换(左右)byteb=1;intx=b;/b自动转换成int型/chapter2.TypeConversion,1,0,0,0,1,byte,int,低-高byteshort,charintlongfloatdouble,2.2.5基本数据类型之间的转换,强制类型转换(左inta=(int)(5+3.6+A);floatf=3+3.6*4;doublef=3+3.6*4;总结=右侧:所有变量先转换为字节数最多的数据类型,再计算=两侧:左侧宽度右侧宽度自动转换左侧宽度a=a*(b+2);a=a*b+2;x=y=z=3;,2.3.4关系运算符,关系表达式将返回一个布尔结果。true/false,若inta=3;则if(a=3)?if(3=a)?若booleanb=false;if(b=true)?if(b=true)?Stringaa=“student”;If(aainstanceofString)If(“student”instanceofString),比较运算符“=”不能误写成“=”,切记!切记!,2.3.5逻辑运算符,逻辑运算符与布尔操作数一起使用,2.3.5逻辑运算符,“x=4,y=4,b=false。“|”和“|”的区别与“salary=daysPresent=20?2000:3000;System.out.println(您本月薪资为$+salary);/chapter2.TernaryOp,2.3.8运算符的优先级,高优先级低,2.4.1流程控制结构,流程控制语句是用来控制程序中各语句执行顺序的语句,可以把单个语句组合成能完成一定功能的小逻辑模块。其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:顺序结构、分支结构和循环结构,如下图所示:,2.4.2流程控制语句,选择if-else(双分支)Switch(多分支)循环whiledo-whilefor,跳转breakContinuereturn,2.4.3if-else选择语句,if-else结构的语法为:,if(条件)语句1;else语句2;,if(条件)语句组;else语句组;,if和else块中只有一条语句,if和else块中有多条语句,if(条件1)语句1;elseif(条件2)语句2;elseif(条件m)语句m;else语句n;,条件结果必须是布尔值,2.4.3if-else选择语句,if(i10)returni*100;elsereturni*10;以上代码片断等效于:returni10?i*100:i*10;if(i10)i=i*100;returni;elsei=i*10;returni;,2.4.4switch选择语句,switch(表达式)case常量值1:语句(组);break;case常量值2:语句(组);break;case常量值N:语句(组);break;default:语句(组);,表达式必须为byte,short,int或char类型,常量值必须是与表达式类型兼容的特定的一个常量不允许有重复的case值,default子句为可选,2.4.4switch选择语句,switch举例inti=3;switch(i)default:System.out.println(default);case0:System.out.println(zero);case1:System.out.println(one);break;case2:System.out.println(two);/chapter2.SwitchCase,2.4.5选择结构举例,publicclassIfElsepublicstaticvoidmain(Stringargs)intscore=59;if(score60)System.out.println(你此次考试没及格,你得加油哦);elseif(score70)System.out.println(恭喜你,考试及格了);elseif(score80)System.out.println(你的成绩中等);elseif(score=90)System.out.println(你的成绩还不错啊);elseSystem.out.println(你的成绩非常好);,2.4.5选择结构举例,classSwitchCasepublicstaticvoidmain(Stringargs)intscore=88;switch(score/10)case0:case1:case2:case3:case4:case5:System.out.println(你考试没及格);break;case6:System.out.println(恭喜你,你终于有一次及格了);break;case7:System.out.println(你的成绩在班上中等);break;case8:System.out.println(你的成绩在班上很好);break;default:System.out.println(你考的真的太好了!);,while循环while(条件)语句组;,2.4.5while循环语句,1+2+3+100=?inti=1;intsum=0;while(i=100)sum+=i;i+;System.out.println(“sum=”+sum);,“当型”循环,先判断条件再执行,可能一次也不执行,2.4.6do-while循环语句,do-while循环do语句组;while(条件);,1+2+3+100=?inti=1;intsum=0;dosum+=i;i+;while(i=100);System.out.println(“sum=”+sum);,“直到型”循环,先执行再判断条件,也就是说,至少可以执行一次在while(条件)后面的分号不要忘,2.4.7for循环语句,for循环for(变量初始化;循环条件表达式;递增或递减变量的值)语句组;,intsum=0;for(inti=1;i=100;i+)sum+=i;System.out.println(sum=+sum);/Thatscallittoday!,“初始化”和“循环条件表达式”部分可以使用逗号来执行多个操作如果三个部分都为空语句(分号不能省),相当于一个无限循环,2.4.7for循环语句,多重循环:打印金字塔classFormorepublicstaticvoidmain(Stringargs)for(inti=0;i8;i+)for(intj=0;j8-i;j+)System.out.print();for(intj=0;j2*i-1;j+)System.out.print(*);System.out.println();/chapter2.Formore,2.4.8break语句,遇到break语句时,将跳出当前循环。importJavax.swing.*;classTestBreak1publicstaticvoidmain(Stringarg)StringstrResult;while(true)strResult=JOptionPane.showInputDialog(请输入一个值:);if(strResult.equals(exit)System.out.println(good-by!);break;elseSystem.out.println(strResult);/TestBreak1,结束本层循环,classTestBreak2publicstaticvoidmain(Stringargs)outer:for(inti=2;i10)breakouter;System.out.println(+i+j);,2.4.9continue语句,遇到continue语句时,将跳到当前循环的开始处。continue语句之后的语句将不再执行for(inti=0;i100;i+)if(i%6!=0)continue;System.out.println(i);/Chapter2.ContinueExample,结束本次循环,2.4.10return返回语句,return语句从当前方法退出,返回到调用该方法的语句处,并从该语句的下条语句处继续执行程序。返回语句的两种格式:1、returnexpression返回一个值给调用该方法的语句。返回值的数据类型必须和方法声明中的返回值类型一致或是精度低于声明的数据类型。2、return当方法声明中用void声明返回类型为空时,应使用这种返回类型,它不返回任何值。,2.5.1数组定义,数组:是有相同类型的、用一个标识符名称封装到一起的一个对象序列或基本数据类型数据序列。数组是一种最简单的复合数据类型。数组可以是一维的也可以是多维的。,2.5.2一维数组,举例publicclassArrayTestpublicstaticvoidmain(Stringargs)/*先声明,再赋值*/intx=newint5;for(inti=0;ix.length;i+)xi=i*10;for(intj=0;jx.length;j+)System.out.println(x+j+=+xj);/*声明的同时就赋值*/inty=12,45,2,900,476;System.out.println(数组y的长度:+y.length);,/*用5个随机数填充一个int型数组a*/Randomr=newRandom();intz=newint5;/*一维数组的解析*/for(inti=0;iz.length;i+)inttemp=r.nextInt();zi=temp;System.out.println(“z+i+=+zi);/chapter2.ArrayTest,2.5.2一维数组,定义(声明)+分配内存空间intx;/intx;x=newint10;等价于方法一:intx=newint10;方法二:intx=newint10;,2.5.2一维数组,intx;,X=newint100,此时还未给数组的元素分配内存,数组下标0开始,默认值为0,2.5.2一维数组,方法一:intx=newint10;方法二:intx=newint10;说明:x只是代表数组的代号或名子,它是特殊变量,用于存储地址;x的存储空间在栈内存中分配/intx10声明的时候不能指定长度newint10:用new为具有十个元素的整型数组在堆内存中分配存储空间,2.5.2一维数组,赋值intx;x=newint10;for(inti=0;ix.length;i+)xi=i;初始化intx=newint41,2,3,4;/不允许指定值intx=1,2,3,4;,2.5.2一维数组,使用时要注意的问题空指针异常(NullPointException)示例:inta=null;a0=1;System.out.println(a0);越界异常(ArrayIndexOutBoundsException)示例:inta=newint1,2,3,4,5;System.out.println(a5);,2.5.2一维数组,数组的排序和复制classArraySortAndCopypublicstaticvoidmain(Stringargs)inta=newint31,26,93,44,65;Arrays.sort(a);for(inti=0;ia.length;i+)System.out.println(ai);intb=newint11,22,33,44,55;intc=newint5;System.arraycopy(b,0,c,2,3);for(inti=0;ic.length;i+)System.out.println(ci);,2.5.3二维数组,多维数组(数组的数组)Java没有真正的多维数组,只有数组的数组二维数组的定义typearrayName;typearrayName;intxx=newint33;intxx=3,2,7,1,5,6;,2.5.3二维数组,静态初始化intintArray=3,2,7,1,5,6;Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同。,2.5.3二维数组,动态初始化Intxx=newint3;/指定一个3行n列的数组xx0=newint3;/指定第一行为3列xx1=newint2;/指定第二行为2列,2.5.3二维数组,二维数组举例classArrayDoubleTestpublicstaticvoidmain(Stringargs)intx=10,20,30,35,45,69;for(inti=0;ix.length;i+)for(intj=0;jxi.length;j+)System.out.println(x+i+j+=+xij);,思考,1Java中的标识符是由哪些字符组成的?2Java中有哪些保留字?简单数据类型包含哪几种?各种数据类型变量的定义方法和常量的表示方法及取值范围。3Java中各简单数据类型间的优先次序和自动转换规则是什么?各数据类型间在什么情况下,进行自动转换,在什么情况下使用强制转换?4Java中有哪些运算符?这些运算符的优先关系是怎样的?5Java中有哪些控制语句?你了解每一种控制语句的语法规则吗?6Java中的一维数组和多维数组在数组动态初始化和静态初始化时有何不同?,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


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

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


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