《Java语言基础知识》PPT课件.ppt_第1页
《Java语言基础知识》PPT课件.ppt_第2页
《Java语言基础知识》PPT课件.ppt_第3页
《Java语言基础知识》PPT课件.ppt_第4页
《Java语言基础知识》PPT课件.ppt_第5页
已阅读5页,还剩126页未读 继续免费阅读

下载本文档

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

文档简介

第一章Java语言基础知识,目录,1.1Java语言概述1.2Java程序开发过程与示例1.3标识符、关键字和数据类型1.4数组1.5运算符、表达式和语句1.6本章小结,Java语言是一门面向对象的程序设计语言。除了面向对象的特点以外,Java语言还在安全性、平台无关性、支持多线程、内存管理等许多方面具有卓越的优点。,1.1Java语言概述,1.1.1Java的诞生,1995年6月,由SUN公司推出源于对跨平台语言的需要1990年,JamesGosling领导的“绿色计划”小组开发,最初命名为“Oak”Oak:名称源于窗外有一棵橡树Java:印尼的爪哇岛,盛产咖啡;“为世人端上一杯热咖啡”,1.1.2Java的特点,简单语法类似C+摈除了指针等容易混乱的概念内存管理机制:可自动进行垃圾回收面向对象平台无关性“一次编写,到处运行”,解释型编译型:源程序一次性编译为二进制代码解释型:源程序不预编译,在运行时逐语句翻译为二进制代码执行。,Java执行过程首先,源程序经编译生成中间代码然后,中间代码经解释生成二进制代码,?,因此,严格来说,Java是混合型,多线程Java是第一个在语言级别提供内置多线程支持的高级语言安全性Java不支持指针,避免了混乱的内存操作Java程序限制在其运行环境中,避免了病毒感染动态,问题:Java是如何实现跨平台的?,简单来说,因为Java使用了“中间代码”(字节码,Bytecode)及“虚拟机”技术,只要在不同的平台安装了相应的Java虚拟机(JVM),“中间代码”都能够正确运行。Java程序“汉语”中间代码“世界语”JVM世界各地的“翻译”,源程序,二进制代码,新硬件,硬件A的指令集,新硬件的指令集,?,新指令集,新程序,新二进制代码,C程序执行过程,源程序,统一中间代码,编译器,新硬件,新指令集,新二进制代码,解释器,二进制代码,新的解释器,JVM去解决(与程序员无关),根据指令集,按新指令集,JAVA程序执行过程,Java中没有#include和#define等预处理功能,用import语句来包含其它类和包;Java中没有struct,union及typedef;Java中没有不属于类成员的函数,没有指针和多重继承,Java只支持单继承;Java中禁用goto,但goto还是保留的关键字;Java中没有操作符重载;Java中没有全局变量,可以在类中定义公用、静态的数据成员实现相同功能;.,1.1.3Java与C+的区别,Java开发环境Application举例Applet举例,1.2Java程序开发过程与示例,Java程序编译执行的过程,1.2.1Java开发环境,一次编写,各处运行,JavaAPIs(应用程序接口)经过编译的,可在程序中使用的Java类库。JavaVM(虚拟机)Java程序由Java虚拟机程序执行(或解释执行)。,Java平台架构,JDKJava2SDK(SoftwareDevelopmentKit)StandardEdition(J2SE)EnterpriseEdition(J2EE)MicroEdition(J2ME),JDK介绍,开发工具编译器调试器文档制作工具运行环境Java虚拟机组成Java平台API的类。帮助文档附加库Java程序(Applets和Applications)的Demo,JDKJ2SE核心组成部分,J2SE版本中包含的开发工具有:Javac:编译器,用来将java程序编译成BytecodeJava:解释器,执行BytecodeJdb:调试器,用来调试java程序Javap:反编译,将Bytecode文件还原回方法和变量Javadoc:文档生成器,创建HTML文件Appletviwer:Applet解释器,用来解释已经转换成Bytecode的JavaApplet程序,JDK开发工具,下载地址安装运行可执行文件,如“jdk-6u7-windows-i586-p.exe”文档可同时下载帮助文档,JDK安装,安装JDK后产生如下目录:bin目录:Java开发工具,包括Java编译器、解释器等demo目录:一些实例程序lib目录:Java开发类库jre目录:Java运行环境,包括Java虚拟机、运行类库等,IDEIntegrationDevelopEnvironmentEclipseNetBeansJCreatorBorlandJBuilderMicrosoftVisualJ+VisualAgeforJavaSunONEStudio,常用的Java集成开发环境,Application运行在客户端Java虚拟机上的Java程序可在客户端机器中读写可使用自己的主窗口、标题栏和菜单程序可大可小能够以命令行方式运行主类必须有一个主方法main(),作为程序运行的入口。,1.2.2Application举例,publicclassMyClassprivateintval1,val2;publicvoidmyFun(intx,inty)val1=x;val2=y;System.out.println(Thesumis:+(val1+val2);publicstaticvoidmain(Stringarg)MyClassMyObj=newMyClass();MyObj.myFun(1,2);,例1.1,使用如下命令编译并运行程序:javacMyClass.javajavaMyClass运行结果如下:Thesumis:3,例1-1运行结果,1.2.3Applet举例,Applet小应用程序运行于支持Java的Web浏览器中浏览器的解释器把字节码转换成和机器匹配的指令,在网页中执行小程序。Applet和Application的差别:运行环境的不同,Applet总是放在Web浏览器中。,Applet的优点不需要安装,借助浏览器可直接运行Applet的局限性在客户端主机的文件系统中读/写受限不能运行客户端主机的任何程序仅能在服务器和客户端之间建立联系,例1-2,JAVAApplet文件名:MyApplet.javaimportjava.awt.Graphics;importjava.applet.Applet;publicclassMyAppletextendsAppletpublicStrings;publicvoidinit()s=newString(HelloWorld!);publicvoidpaint(Graphicsg)g.drawString(s,25,25);HTML文件名:Applet1.html,一个Applet不再需要main方法,但是必须有且只有一个类扩展了Applet类(即子类),而且必须是public的,这个类称为主类。Import用来引入Java包中的一个或者所有类importjava.applet.Applet:引入包“java.applet”中的“Applet”类importjava.applet.*:引入包“java.applet”中的所有类如果不使用Import语句,则主类必须使用“包名+类名”的完整路径。例如:publicclassMyAppletextendsjava.applet.Applet,例1-2MyApplet.java文件说明,Graphics类java.awt包中的类,用来绘制直线、矩形、字符串等图形方法init()Applet类中的基本方法,可以在其中编写初始化代码方法paint()g为Graphics类的对象,调用了Graphics的drawString方法绘制字符串;g.drawString(s,25,25);执行的结果就是从坐标(25,25)开始绘制出字符串“HelloWorld!”,单位是像素。,例1-2Applet1.html文件说明,使用HTML(超文本标记语言)编写的网页表示要运行Appletcode=主类对应的class文件Width、Height表示规定程序运行界面大小Code、Width、Height是必需的,如果.class文件与HTML文件不在同一个目录,可以用codebase指定所在目录,例如:Applet1.html在c:MyApplet.class在c:codeaa目录则codebase=“code/aa”,使用javac编译“MyApplet.java”用支持Java的浏览器(如:IE)打开Applet1.html,例1-2运行,或者用Java自带的appletviewer浏览输入:appletviewerApplet1.html,1.2.4什么是JSP,JSP是JavaServerPages的缩写,Java动态页面利用JSP可以建立安全、跨平台的先进动态网站Microsoft对应的技术是ASP(ActiveServerPages),JSP和ASP技术非常相似,与ASP相比,JSP以Java技术为基础,又在许多方面做了改进,具有动态页面与静态页面分离,能够脱离硬件平台的束缚,以及编译后运行等优点,完全克服了ASP的脚本级执行的缺点。,标识符和关键字Java的基本数据类型类型转换,1.3标识符、关键字和数据类型,1.3.1标识符和关键字,标识符用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。简单地说,标识符就是一个名字。关键字在Java语言中已经被赋予特定意义的一些单词。不可以把这类词作为名字来用。具体见P11(存在错误:find应为final),Java标识符的规则,由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字字符。即:标识符的第一个字符必须是下列字符之一:大写字母(A-Z)小写字母(a-z)下划线(_)美元符号($)标识符的第二个字符及后继字符必须是:上述列表中的任意字符数字字符(0-9),Java基本命名规则,包的命名所有字母小写;“域名命名法”为了保障每个Java包命名的唯一性,在最新的Java编程规范中,要求程序员在自己定义的包的名称之前加上唯一的前缀。由于互联网上的域名是不会重复的,所以程序员一般采用互联网上的域名称作为程序包的唯一前缀,例如:net.frontfree.javagroup。,类的命名对于其中的每个单词首字母大写,其他字母小写例如:Circle、TestPage;如果类名称中包含单词缩写,则这个缩写单词的每个字母均应大写,如:XMLExample。方法的命名第一个单词全部小写,而后面的单词首字母大写,例如:run、sendMessge。,常量的命名所有字母大写,如果一个常量名称由多个单词组成,则使用下划线分割这些单词,例如:MAX_VALUE。参数、类成员变量、局部变量命名规则与方法命名规则一致,例如:classStudentStringclassName;privatevoidgetName(StringstudentNumber)intsqlString;,基本数据类型也称作简单数据类型。Java语言有8种简单数据类型,分别是:boolean、byte、short、int、long、float、double、char。这8种数据类型习惯上可分为4大类型:逻辑类型:boolean字符类型:char整数类型:byte、short、int、long浮点类型:float、double,1.3.2基本数据类型,1、逻辑类型(布尔类型)常量:true、false变量:使用关键字boolean定义,定义时也可以赋给初值,如:booleanx;booleantom_12;booleanx,tom,jiafei;booleanx=true,tom=false,jiafei;,注意:Java中的布尔型是一个独立的类型,不像C语言中的布尔型代表0和1两个整数,因此,Java中的布尔类型不能转换成数字。Java为布尔型分配4个字节长度。,2、整数类型使用关键字int来定义int型整型变量,定义时也可以赋给初值,如:intx=12,tom=-1230,height=9898,number;有byte、short、int、long四种整数类型,1)int型内存分配给4个字节取值范围:-231231-12)byte型内存分配给1个字节取值范围:-2727-1,3)short型内存分配给2个字节取值范围:-215215-14)long型内存分配给8个字节取值范围:-263263-1,3、字符类型常量:Java使用Unicode字符集,Uincode表中的字符就是一个字符常量,字符常量需使用单引号扩起,例如:A、b、?、!、9、好、t、Unicode:称为统一码或万国码,覆盖了世界上大部分文字,最多可识别65536个字符。,变量:使用关键字char来定义字符变量,如:charx=A,tom=爽,jiafei;对于char型变量,内存分配给2个字节。内存中实际保存的是字符的Unicode码,因此可用整数给char赋值,如:charx=97;,例1-3字符类型,publicclassExample2_1publicstaticvoidmain(Stringargs)charchinaWord=你,japanWord=;intp1=36328,p2=38358;System.out.println(汉字你在unicode表中的顺序位置:+(int)chinaWord);System.out.println(日语在unicode表中的顺序位置:+(int)japanWord);System.out.println(unicode表中第+p1+位置上的字符是:+(char)p1);System.out.println(unicode表中第+p2+位置上的字符是:+(char)p2);,例1-3运行结果,附:Java转义字符表,4、浮点类型:分为float和double两种类型float型:单精度浮点数常量:123.5439f,123.0f,2e40f(2乘10的40次方,科学计数法)变量:使用关键字float定义,如:floatx=12.76f,tom=1234.987f;内存分配给4个字节取值范围:10-381038、-1038-10-38,double型:双精度浮点数常量:12389.5439d(d可以省略),123.0,6e-140(6乘10的-140次方,科学计数法)变量:使用关键字double定义,如:doublex=12.76,tom=1234098.987;内存分配给8个字节取值范围:10-30810308、-10308-10-308,把一种基本数据类型变量的值赋给另一种基本类型变量时,就涉及到数据类型转换。基本类型数据的下列类型会涉及到数据转换,不包括逻辑类型和字符类型。我们将这些类型按精度从“底”到“高”排列了顺序:byteshortintlongfloatdouble,1.3.3类型转换,级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换(隐式转换),例如:1)floatx=100;如果输出x的值,结果将是100.02)intx=50;floaty;y=x;如果输出y的值,结果将是50.0,级别高的变量的值赋给级别底变量时,必须使用显示类型转换。显示转换的格式:(类型名)要转换的值例如:intx=(int)23.89;longy=(long)34.98F;输出x,y的值将是23和34强制转换运算可能导致精度的损失,当把一个整数赋值给一个byte、short、int或long型变量时,不可以超出这些变量的取值范围,否则会导致溢出。例如:bytea=(byte)128;byteb=(byte)(-129);那么a和b得到的值分别是-128和127。,例1-4类型转换,publicclassExample2_2publicstaticvoidmain(Stringargs)intc=2200;longd=8000;floatf;doubleg=123456789.123456789;c=(int)d;f=(float)g;/导致精度的损失.System.out.print(c=+c);System.out.println(d=+d);System.out.println(f=+f);System.out.println(g=+g);,附:JAVA常量与变量补充知识,JAVA中变量默认值:整型:0浮点型:0.0布尔型:false字符型:u0000对象:null,附:JAVA常量与变量补充知识,JAVA中数值常量默认类型:整型常量:int浮点常量:double变量名只是表示内存中的某处地址,方便程序员编程使用的,变量名本身在内存中是不保存的。(编译时会建立字符表,记录变量名代表的地址,编译后就不复存在了),数组由同一类型的一连串对象或基本数据组成,并封装在同一数组名称下,元素类型可以是Java中任一类型数组是对象可动态初始化可以赋值给Object类型的变量在数组中可以调用类Object的所有方法,1.4数组,数组元素数组中的变量被称作数组的元素元素没有名字,通过数组名字和非负整数下标值引用数组元素每个数组都有一个由publicfinal修饰的成员变量length,即数组含有元素的个数(length可以是正数或零),数组的声明数组的创建数组元素的初始化数组的引用多维数组,1.4.1数组的声明,声明(Declaration)声明数组时无需指明数组元素的个数,也不为数组元素分配内存空间不能直接使用,必须经过初始化分配内存后才能使用,TypearrayName;例如:intintArray;StringstringArray;TypearrayName;例如:intintArray;StringstringArray;,1.4.2数组的创建,用关键字new构成数组的创建表达式,可以指定数组的类型和数组元素的个数。元素个数可以是常量也可以是变量基本类型数组的每个元素都是一个基本类型的变量;引用类型数组的每个元素都是对象,基本类型内存栈中保存的值就是该变量的值Java有八大基本类型:整型(4种)、浮点型(2种)、字符型、布尔型引用类型内存栈中保存的值是指向变量值的地址类、数组等都是引用类型主要区别:基本类型的值是分配在栈上的,而引用类型的值是分配在堆上的,基本类型和引用类型的主要区别:基本类型的值是分配在栈上的,而引用类型的值是分配在堆上的;对于引用类型的变量,栈中保存的仅仅是变量的引用(地址)。,创建格式:arrayName=newTypearrayLength;例如:intai;ai=newint10;Strings;s=newString3;或者可以将数组的声明和创建一并执行intai=newint10;可以在一条声明语句中创建多个数组Strings1=newString3,s2=newString8;,1.4.3数组元素的初始化,可以在声明数组时初始化,数组长度即固定为元素个数,例如:inta=22,33,44,55;也可以在数组创建之后改变数组元素值,例如:上述语句相当于:inta=newint4;a0=22;a1=33;a2=44;a3=55;,创建数组时,如果没有指定初始值,系统会为每一个元素赋默认值:基本类型:整型(0);浮点型(0.0);字符型(u0000);布尔型(false);引用类型:默认值为null。,1.4.4数组的引用,通过下面的表达式引用数组的一个元素:arrayNameindex即:数组名下标下标可以是整型,也可以是字符型(char)下标从零开始计数,数组长度:元素的个数即为数组的长度,可以通过arryName.length引用元素下标最大值为length1,如果超过最大值,将会产生数组越界异常(ArrayIndexOutOfBoundsException),intdata=newint10;data-1非法data10非法data1.5非法data0合法data9合法datau0000合法,数组的引用举例,intvalues=newint7;intindex;index=0;valuesindex=71;index=5;valuesindex=23;index=3;values2+2=valuesindex-3;,publicclassMyArraypublicstaticvoidmain(Stringargs)intmyArray;/声明数组myArray=newint10;/创建数组System.out.println(IndexttValue);for(inti=0;imyArray.length;i+)System.out.println(i+tt+myArrayi);/证明数组元素默认初始化为0/myArray10=100;/将产生数组越界异常,数组的举例例1-5,数组的举例例1-6,classGausspublicstaticvoidmain(Stringargs)intia=newint101;for(inti=0;iia.length;i+)iai=i;intsum=0;for(inti=0;iia.length;i+)sum+=iai;System.out.println(sum);输出结果:5050,本例说明:数组名是一个引用publicclassArrayspublicstaticvoidmain(Stringargs)inta1=1,2,3,4,5;inta2;a2=a1;for(inti=0;i、!=逻辑运算符,如:那么:B+x;的结果是int型,因此:下列写法是不正确的:charch=B+x;应当写成:charch=(char)(B+x);,2、关系运算符与表达式,关系运算符:、60)System.out.println(数学及格了);elseSystem.out.println(数学挂了!);,switch开关语句,switch语句是多分支的开关语句,一般格式:switch(表达式)case常量值1:若干语句break;.case常量值n:若干语句break;default:若干语句,switch语句要点,switch语句实际相当于多条件的“ifelseifelse”语句;switch(表达式)中表达式的值必须是整型或者字符型,case常量值亦是如此;(long除外)case常量值必须互不相同;,如果表达式的值与某个case后的常量值相同,则执行case中的语句,直到遇到break语句为止;如果case中没有使用break语句,那么会继续执行后继的case中的语句,直到遇到break为止;如果表达式的值与任何case常量值都不相同,则执行default中的语句。,switch语句示例,intmath=60;switch(math/10)case9:System.out.println(你很完美);case8:System.out.println(你很优秀);break;case7:System.out.println(你过关了);case6:System.out.println(你过关了);default:System.out.println(你挂了!);break;,math=95?,math=83?,math=71?,math=50?,math=100?,2、循环语句,for循环格式:for(表达式1;表达式2;表达式3)若干语句,称为循环体表达式1:变量初始化表达式2:boolean型表达式,循环条件表达式3:改变循

温馨提示

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

最新文档

评论

0/150

提交评论