Java语言程序设计实用教程第二讲Java的本质.ppt_第1页
Java语言程序设计实用教程第二讲Java的本质.ppt_第2页
Java语言程序设计实用教程第二讲Java的本质.ppt_第3页
Java语言程序设计实用教程第二讲Java的本质.ppt_第4页
Java语言程序设计实用教程第二讲Java的本质.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

Java语言程序设计实用教程,第二讲 Java的本质,3,本章学习要点:,理解Java的语言结构 理解变量的含义 掌握Java的词法规范 掌握Java的常用保留字 掌握Applet、窗口化应用程序的编写,4,简单回顾一下Java程序的主要执行步骤,使用工具编写Java代码,Java代码是由Java语句和声明组成的纯文本文件 文本编辑器:记事本、Word 专门的IDE工具:Eclipse、Jbuilder、JCreator 将Java代码交由Java编译器进行编译,如使用Javac命令,产生扩展名为.java的文件 Java应用程序的执行,可使用Java命令,程序结构,代码分析之一,代码分析之二,8,Java语言的组成,标识符 关键字 分隔符,9,标识符,常量、变量、方法、类的名称,以字母、下划线或$开头。 严格区分大小写。Ad、ad、aD是不同的标识符。 约定: 常量用全用大写字母,并用下划线分割线单词、变量用小写字母开始,类、函数和接口以大写字母开始。 使用能准确说明含义的英文描述符,例如:firstName,不提倡使用x1,y1等表达过于简单,不能表达出含义的描述符 采用所开发的软件系统所在的领域名词,例如client VS customer 尽量少用缩写,Number,nbr、no或者是num; 避免使用长名字(一般不超15个字母) 避免使用下划线作为名字的首末字母 命名风格要统一,尽量与所采用的操作系统或开发工具保持一致,如Windows“大小写”混排,AddChild,而UNIX是“小写加下划线”,add_child 程序中不要出现标识符完全相同的局部变量和全局变量 变量的名字应使用“名词”或“形容词+名词”,如:float value, float oldValue 全局函数的名字应使用“动词”或者“动词+名词”,如:DrawBox() 用正确的反义词命名具有互斥一样的变量或者函数方法:minvalue,maxValue,SetValue,GetValue 尽量避免名字中出现数字编号:value1,value2 全局变量前加前缀g_,表示global,例如:Int g_howManyPeople 类的数据成员前加前缀m_,表示member,例如 Void SetValue(int width,int height) m_width=width; m_height=height; ,保留关键字( Keywords),关键字也称保留字,是Java语言本身使用的标识符,它有其语法含义。,11,分隔符,分隔符用来分隔Java程序中的基本元素,有注释、空白符、和普通分隔符三种。 注释:先写注释后写代码,或者边写代码边写注释 / 单行注释 /*/ 多行注释 /*/ 多行注释(文档注释,使用标记),可由javadoc程序处理 空白符:空格、回车、换行符、制表符 普通分隔符(6种)() ; , .,12,常量,Java程序运行时值不可修改的量称为常量,分为字面值(即常数)与标识符常量两种。 标识符常量实际上是一个变量,但它的值一旦初始化以后,就不允许再发生改变。因此标识符常量要先定义后使用,一般用于给一个常数取一个有意义的名字。 字面值即是Java源程序中表示的常数值,如12.6、246,false等,表示一个个具体的值。 常量在表达式中用文字串表示,它区分不同类型,如整型常量123、-15,实型常量12.1f,字符常量x,布尔常量true,字符串类型常量“Test“等。,13,常量的数字类型,整数常量:字节型(byte)、短整型(short)、整型(int)、长整型(long),在内存的存储长度分别为8位、16位、32位和64位 浮点数常量:单精度(float)和双精度(double),在内存的存储长度分别为32位和64位,Java缺省为双精度,可在浮点数的后面加f或者F后缀强制转换成单精度,如:float x=10.8f 4和4.0 布尔常量:ture或false,不是1或0 字符常量:采用Unicode字符集,16位表示,是用单引号括起来的一个字符,如a,Unicode编码,Java的字符使用16位的Unicode编码表示,它可以支持世界上所有语言。 一般计算机语言通常使用ASCII码,用8位表示一个字符。ASCII码是Unicode码的一个子集,Unicode表示ASCII码时,其高字节为0,它是其前255个字符。 Unicode字符通常用十六进制表示。例如:“u0000”“u00ff”表示ASCII码集。“u”表示转义字符,它用来表示其后4个十六进制数字是Unicode代码。,转义序列,Java中,字符常量是用单引号括起来的单个字符。但在应用中可能要用到一些特殊的字符,例如回车符、换行符、单引号、双引号等,对于这些字符在使用文本编译器时就会遇到问题。此外,某些字符(如单引号、双引号)在Java中也有特殊的意义。出于这些原因,Java允许对特殊的字符使用转义序列。转义序列以反斜杠()开始,后面跟一个对编译器来说有特殊意义的字符。例如:表示单引号,r表示回车,n表示换行,16,变量,与常量不同,变量是程序运行时值发生改变的值,即在程序中不同时刻可以被赋予不同的值。变量对应着内存空间中的一个或几个单元,变量的值就存放在所对应的内存单元中。变量名就是给对应的内存单元取一个有意义的名称,这样在程序中,可以按变量名称来区分和使用这些内存单元。变量主要用于保存数据输入、数据输出或中间值。 变量的定义:int minValue=100; 或 int minValue; mintValue=100; 变量的作用域,运算符和表达式,数据的类型除了限定数据的存储方式、取值范围之外,还定义了对该数据类型可进行的操作即运算。表示各种不同运算的符号称为运算符,参与运算的数据称为操作数。 表达式是由操作数(如变量,常量等)和运算符按一定语法形式组成的一个有意义的式子。如:a+b、(a+b)*(a-b)。以上都是有意义的表达式,18,程序的格式,编写代码的不但要做到正确,还要做到可阅读 使用空行,分隔程序的段落,见P39 每行代码只做一件事情,领会P39风格良好和不良的代码 代码行内空格,领会P40例子: 关键字之后要留空格 函数名之后不要留空格 赋值、比较、算术、逻辑、位域操作符等二元操作符前后要加空格 一元操作符前后不加空格 对齐(见P41):和应独占一行且在同一列,如果出现嵌套,则使用缩进对齐 长行拆分:代码行一般控制在80个字符内,操作符放在新行之首以突出操作符 类的格式:(1)属性在前,方法在后; (1)方法在前,属性在后,19,总结:良好的代码编写,定义的变量、类名、函数、方法等要有含义 要写注释 代码的格式要整齐 形成一致的代码编写风格,Java GUI-AWT,SUN的AWT:Java处理图形用户界面的初始途径。 AWT库处理图形的基本方法:把这些元素的创建和行为交给目标平台上的本地GUI工具箱进行处理。 理论上 “一次编写,随处运行”,实际上,AWT在不同平台上的效果不一致; 比如Windows和Linux的缺省字体、大小和样式都不一样,需要显示的设置字体样式和大小等;在Windows很好看的布局有可能在Linux变得乱七八糟;组件间的间隔因为平台的不同而有很多变化。 所以有人嘲笑为 “一次编写,随处调试”。 AWT为每一个组件分配一个操作系统窗口。大型应用程序中,大量这样的窗口会占用大量资源降低系统性能,称为重量级(heavyweight)组件,Java GUI-Swing,Sun与Netscape合作开发出:Swing Swing的很多用户界面元素,如菜单、按钮等,都是画在他们的容器中的。 占用更少的系统资源,增加了更多的组件,且允许控制程序的外观。 Swing并不是完全摒弃AWT,而是一组建立在AWT之上的包,它提供了大量预建的类 import java.awt.*; import javax.swing.*;,SWING的类(一),JApplet:java.lang.Applet的扩展版本。 JButton: 按钮或命令按钮。 JCheckBox: 复选框。 JCheckBoxMenuItem: 复选菜单项。 JComboBox: 组合框。 JComponent: Swing组件的基类。 JDialog: 对话框窗口的基类。 JLabel: 标签项。 JList: 列表框。 JMenu: 菜单。 JMenuBar: 菜单条。 JMenuItem: 菜单项。 JPanel: 通用的轻量容器。 JPasswordField: 文本框(用来输入口令)。,SWING的类(二),JPopupMenu: 弹出式菜单。 JPopupMenu.Separator: 分隔线(弹出式菜单专用)。 JProgressBar: 进度条。 JRadioButton: 单选按钮。 JRadioButtonMenuItem: 单选菜单。 JScrollBar: 滚动条。 JTabbedPane: 标签板。 JTable: 二维表。 JTextArea: 文本域。(多行显示) JTextField: 文本行(可编辑)。 JTextPane: 文本板。 JToolBar: 工具栏。 JWindow: 窗口。,Swing图形用户界面设计概述,在Java的GUI程序中,需要一个框架窗口(JFrame),并添加一些部件到该JFrame,但JFrame 不是一个容器,它只是一个框架 JFrame 有一个 Content Pane,窗口能显示的所有组件都是添加在这个 Content Pane 中。JFrame 提供了两个方法:getContentPane 和 setContentPane 就是用于获取和设置其 Content Pane 的。 JFrame的默认大小为00并且是不可见的,用setBounds方法设置框架的大小,setVisible(true)显示窗口,BorderLayout,这是一个布置容器的边界布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:南、北、东、西和中间区域。每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTH、SOUTH、EAST、WEST 和 CENTER。当使用边界布局将一个组件添加到容器中时,要使用这五个常量之一 Panel p = new Panel(); p.setLayout(new BorderLayout(); p.add(new Button(“Okay“), BorderLayout.SOUTH);,BorderLayout进一步举例,import java.awt.*; import java.applet.Applet; public class buttonDir extends Applet public void init() setLayout(new BorderLayout(); add(new Button(“North“), BorderLayout.NORTH); add(new Button(“South“), BorderLayout.SOUTH); add(new Button(“East“), BorderLayout.EAST); add(new Button(“West“), BorderLayout.WEST); add(new Button(“Center“), BorderLayout.CENTER); ,27,创建Java小程序(Applet),使用将.class代码嵌入HTML文件中 客户端访问网页时,Applet小程序会从Web服务器上下载到本地,并在浏览器里运行 本地计算机运行,可减少Web服务的负载,提高系统性能 要求浏览器有JRE运行环境 Applet为任何applet小程序的超类,JApplet为Applet类的扩展,Applet的基本工作原理,Applet的继承关系图,Applet基础,java.applet包包含有三个接口:AppletContext接口、AppletStub接口、AudioClip接口及一个Applet类。 AppletContext接口:提供Applet环境文件信息,诸如Applet所在的文件有哪些Applet,或是在状态栏上显示信息。 AppletStub接口:为Applet与浏览器环境的沟通接口。 AudioClip接口:提供音频的接口,音频文件必须是AU、AIFF、WAVE、或者MIDI格式 JApplet类是在javax.swing包中,Applet程序的生命周期,init() 该方法用于Applet的初始化。当Applet被第一次加载时,该方法会被自动调用。在这个方法中,可以做一些必要的初始化工作,这些内容包括是创建和初始化程序运行所需要的对象实例,把图形或字体载入内存,处理PARAM参数等。 Start() 该方法用来启动浏览器运行Applet的主线程。调用init 方法将Applet的初始化工作完成之后,start方法会被自动调用;当用户刷新包含Applet的页面或者从其它页面返回包含Applet的页面时,start方法也会被自动调用 也就是说,start方法可以被多次调用,这与init方法是有区别的。基于这样的原因,可以把只调用一次的代码放在init方法中,而不能放在start方法中,Applet程序的生命周期,stop() 该方法在用户离开包含Applet的页面时会被自动调用。和start方法一样,stop方法也可以被多次调用。该方法的作用是,当用户离开包含Applet的页面时,停止一些耗费系统资源的活动,如播放动画等。如果在Applet中没有动画、音乐文件播放,那么通常可以不使用这个方法。 destroy() 当用户正常关闭浏览器时,浏览器会调用destroy方法。该方法用于回收系统资源,如回收图形用户界面的系统资源、关闭连接等。至于Applet实例本身,会由浏览器来负责从内存中清除,不需要在destroy方法中来清除。 四个方法init、start、stop和destroy分别对应了Applet的初始化、启动、暂停直到消亡的各个阶段。,Applet的生命周期和对应的方法,Applet被设计为从远程站点下载然后在本地执行,所以安全问题非常重要。如果用户在游览器中启用了Java,那么浏览器就会自动下载网页中的Applet代码并执行。用户没有机会来确认或者停止Applet的运行。基于这样的原因,与Application应用程序相比, Applet被作了限制。 Applet的限制执行环境常常称作“沙箱(sandbox )”。运行在沙箱中的Applet不能更改或探查用户的系统。 当运行在沙箱中时: (1)Applet不能读写本地计算机的文件系统,也不能运行任何本地可执行程序。 (2)Applet不能同除它们的下载处的服务器(该服务器称作原始主机)以外的其他任何主机通信。这条规则使得Applet不能探查企业内部网上的资源。,Applet安全基础,(3)Applet只能获取本地计算机中的以下信息:当前使用的Java版本;操作系统的名字和版本;用来分离文件、路径以及行的字符。除此以外,Applet不能获取任何其它关于本地计算机的信息。 (4)Applet弹出的所有窗口都会带有一警告消息,告诉用户这是一个Applet。 因为Java解释器会检查所有的危险指令和程序区域,所以一个带有敌意的Applet不能覆盖系统内存、改变操作系统赋予的特权或者使计算机崩溃。 在某些情况下,这些限制显得过于严格。为了充许在不同情况下使用不同的安全级别,Java引入了签名Applet。 一个签名Applet带有一个能够表明签名者特征的证书。加密技术保证了这样的证书不可能被伪造。如果信任签名者,那么可以选择给该Applet额外的特权。被完全信任的Applet可以获得同本地应用程序一样的访问特权。,Applet安全基础,Applet与JAR文件,JAR文件概述 JAR(Java Archive)是一种与平台无关的文档格式,一般叫Java存档,它相当于一种压缩格式,可以把众多的文档合成一个文件。 大多数的Applet都由多个类组成,使用浏览器来浏览这样的Applet时,由于一个文件需要一个连接,所以浏览器需要使用多个连接,这样在一个低速的网络上加载一个Apple需要好几分钟。这里值得注意的是,加载Apple需要较长的时间的原因并不是因为类文件太大,关键的原因是建立到服务器的连接需要的时间长。 对于Applet来说,JAR文件可以将多个需要的类文件合并为一个单一的文件。这是很有意义的,这样这些类文件可以作为一个整体使用一个HTTP事务下载到浏览器中,从而大大提高浏览速度。,jar命令格式如下: jar 选项1 选项n 文件名1 文件名2 jar命令的选项: c 创建新的存档,并把文件添加至其中,如果一个文件名是一个目录,它将被递归处理 t 列出存档内容的列表 x 展开存档中的命名的(或所有的文件 u 更新已存在的存档 v 生成详细输出到标准输出上 f 指定存档文件名 m 包含来自标明文件的标明信息 0 只存储方式;未用ZIP压缩格式 M 不产生所有项的清单(manifest文件 i 为指定的jar文件产生索引信息 C 改变到指定的目录,jar命令,在默认的情况下,浏览器使用浏览器的缓存来缓存Applet代码。在这种情况下,如果访问一个曾经访问过的包含了Applet的站点,并且浏览器缓存仍然包含所需要的JAR文件,并且这个JAR文件没有改变,那么这个JAR文件就不会被重新下载。 但是在正常情况下,浏览器缓存并不能够保持足够长的时间。比如,如果每个月只访问一次某个站点,那么极有可能每次都要重新下载并刷新缓存。 Java插件支持一种机制来“粘滞”Applet,如果我们想让一个Applet停留在用户端的时间更长,就需要使用OBJECT标记来指定CACHE_OPTION、CACHE_ARCHIVE和CACHE_VERSION键的值。 CACHE_VERSION键用来代表CACHE_ARCHIVE列表中指定的JAR文件需要的版本号码。如果这些版本已经在客户机上,那他们将不必被下载。,JAR缓存,APPlET路径配置问题(一),在用网页文件MyHtml.html打开Applet,这里假设我们要用的文件叫MyApplet.class的时候要注意,要将MyHtml.html文件放在该程序的根目录下。所谓“根目录”这里是指这个目录应当包含所有Applet里用到的package的目录。 先看简单的情况,如果你的Applet程序是使用的默认包,那么你就把MyHtml.html文件和MyApplet.class文件放在一个目录里。比如说有个目录叫theDirectory

温馨提示

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

评论

0/150

提交评论