java不同方案种类代码,java适用于哪种类型的开发

java编码规范有哪些?

JAVA代码规范:

10年积累的成都网站设计、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有清江浦免费网站建设让你可以放心的选择与我们合作。

(1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。例如:

ThisIsAClassName

thisIsMethodOrFieldName

若在定义中出现了常数初始化字符,则大写static final基本类型标识符中的所有字母。这样便可标志出它们属于编译期的常数。

Java包(Package)属于一种特殊情况:它们全都是小写字母,即便中间的单词亦是如此。对于域名扩展名称,如com,org,net或者edu等,全部都应小写(这也是Java 1.1和Java 1.2的区别之一)。

(2) 为了常规用途而创建一个类时,请采取"经典形式",并包含对下述元素的定义:

equals()

hashCode()

toString()

clone()(implement Cloneable)

implement Serializable

(3) 对于自己创建的每一个类,都考虑置入一个main(),其中包含了用于测试那个类的代码。为使用一个项目中的类,我们没必要删除测试代码。若进行了任何形式的改动,可方便地返回测试。这些代码也可作为如何使用类的一个示例使用。

(4) 应将方法设计成简要的、功能性单元,用它描述和实现一个不连续的类接口部分。理想情况下,方法应简明扼要。若长度很大,可考虑通过某种方式将其分割成较短的几个方法。这样做也便于类内代码的重复使用(有些时候,方法必须非常大,但它们仍应只做同样的一件事情)。

(5) 设计一个类时,请设身处地为客户程序员考虑一下(类的使用方法应该是非常明确的)。然后,再设身处地为管理代码的人考虑一下(预计有可能进行哪些形式的修改,想想用什么方法可把它们变得更简单)。

(6) 使类尽可能短小精悍,而且只解决一个特定的问题。下面是对类设计的一些建议:

■一个复杂的开关语句:考虑采用"多形"机制

■数量众多的方法涉及到类型差别极大的操作:考虑用几个类来分别实现

■许多成员变量在特征上有很大的差别:考虑使用几个类

(7) 让一切东西都尽可能地"私有"--private。可使库的某一部分"公共化"(一个方法、类或者一个字段等等),就永远不能把它拿出。若强行拿出,就可能破坏其他人现有的代码,使他们不得不重新编写和设计。若只公布自己必须公布的,就可放心大胆地改变其他任何东西。在多线程环境中,隐私是特别重要的一个因素--只有private字段才能在非同步使用的情况下受到保护。

(8) 谨惕"巨大对象综合症"。对一些习惯于顺序编程思维、且初涉OOP领域的新手,往往喜欢先写一个顺序执行的程序,再把它嵌入一个或两个巨大的对象里。根据编程原理,对象表达的应该是应用程序的概念,而非应用程序本身。

(9) 若不得已进行一些不太雅观的编程,至少应该把那些代码置于一个类的内部。

(10) 任何时候只要发现类与类之间结合得非常紧密,就需要考虑是否采用内部类,从而改善编码及维护工作(参见第14章14.1.2小节的"用内部类改进代码")。

(11) 尽可能细致地加上注释,并用javadoc注释文档语法生成自己的程序文档。

(12) 避免使用"魔术数字",这些数字很难与代码很好地配合。如以后需要修改它,无疑会成为一场噩梦,因为根本不知道"100"到底是指"数组大小"还是"其他全然不同的东西"。所以,我们应创建一个常数,并为其使用具有说服力的描述性名称,并在整个程序中都采用常数标识符。这样可使程序更易理解以及更易维护。

(13) 涉及构建器和异常的时候,通常希望重新丢弃在构建器中捕获的任何异常--如果它造成了那个对象的创建失败。这样一来,调用者就不会以为那个对象已正确地创建,从而盲目地继续。

(14) 当客户程序员用完对象以后,若你的类要求进行任何清除工作,可考虑将清除代码置于一个良好定义的方法里,采用类似于cleanup()这样的名字,明确表明自己的用途。除此以外,可在类内放置一个boolean(布尔)标记,指出对象是否已被清除。在类的finalize()方法里,请确定对象已被清除,并已丢弃了从RuntimeException继承的一个类(如果还没有的话),从而指出一个编程错误。在采取象这样的方案之前,请确定finalize()能够在自己的系统中工作(可能需要调用System.runFinalizersOnExit(true),从而确保这一行为)。

(15) 在一个特定的作用域内,若一个对象必须清除(非由垃圾收集机制处理),请采用下述方法:初始化对象;若成功,则立即进入一个含有finally从句的try块,开始清除工作。

(16) 若在初始化过程中需要覆盖(取消)finalize(),请记住调用super.finalize()(若Object属于我们的直接超类,则无此必要)。在对finalize()进行覆盖的过程中,对super.finalize()的调用应属于最后一个行动,而不应是第一个行动,这样可确保在需要基础类组件的时候它们依然有效。

(17) 创建大小固定的对象集合时,请将它们传输至一个数组(若准备从一个方法里返回这个集合,更应如此操作)。这样一来,我们就可享受到数组在编译期进行类型检查的好处。此外,为使用它们,数组的接收者也许并不需要将对象"造型"到数组里。

(18) 尽量使用interfaces,不要使用abstract类。若已知某样东西准备成为一个基础类,那么第一个选择应是将其变成一个interface(接口)。只有在不得不使用方法定义或者成员变量的时候,才需要将其变成一个abstract(抽象)类。接口主要描述了客户希望做什么事情,而一个类则致力于(或允许)具体的实施细节。

(19) 在构建器内部,只进行那些将对象设为正确状态所需的工作。尽可能地避免调用其他方法,因为那些方法可能被其他人覆盖或取消,从而在构建过程中产生不可预知的结果(参见第7章的详细说明)。

(20) 对象不应只是简单地容纳一些数据;它们的行为也应得到良好的定义。

(21) 在现成类的基础上创建新类时,请首先选择"新建"或"创作"。只有自己的设计要求必须继承时,才应考虑这方面的问题。若在本来允许新建的场合使用了继承,则整个设计会变得没有必要地复杂。

(22) 用继承及方法覆盖来表示行为间的差异,而用字段表示状态间的区别。一个非常极端的例子是通过对不同类的继承来表示颜色,这是绝对应该避免的:应直接使用一个"颜色"字段。

(23) 为避免编程时遇到麻烦,请保证在自己类路径指到的任何地方,每个名字都仅对应一个类。否则,编译器可能先找到同名的另一个类,并报告出错消息。若怀疑自己碰到了类路径问题,请试试在类路径的每一个起点,搜索一下同名的.class文件。

(24) 在Java 1.1 AWT中使用事件"适配器"时,特别容易碰到一个陷阱。若覆盖了某个适配器方法,同时拼写方法没有特别讲究,最后的结果就是新添加一个方法,而不是覆盖现成方法。然而,由于这样做是完全合法的,所以不会从编译器或运行期系统获得任何出错提示--只不过代码的工作就变得不正常了。

(25) 用合理的设计方案消除"伪功能"。也就是说,假若只需要创建类的一个对象,就不要提前限制自己使用应用程序,并加上一条"只生成其中一个"注释。请考虑将其封装成一个"独生子"的形式。若在主程序里有大量散乱的代码,用于创建自己的对象,请考虑采纳一种创造性的方案,将些代码封装起来。

(26) 警惕"分析瘫痪"。请记住,无论如何都要提前了解整个项目的状况,再去考察其中的细节。由于把握了全局,可快速认识自己未知的一些因素,防止在考察细节的时候陷入"死逻辑"中。

(27) 警惕"过早优化"。首先让它运行起来,再考虑变得更快--但只有在自己必须这样做、而且经证实在某部分代码中的确存在一个性能瓶颈的时候,才应进行优化。除非用专门的工具分析瓶颈,否则很有可能是在浪费自己的时间。性能提升的隐含代价是自己的代码变得难于理解,而且难于维护。

(28) 请记住,阅读代码的时间比写代码的时间多得多。思路清晰的设计可获得易于理解的程序,但注释、细致的解释以及一些示例往往具有不可估量的价值。无论对你自己,还是对后来的人,它们都是相当重要的。如对此仍有怀疑,那么请试想自己试图从联机Java文档里找出有用信息时碰到的挫折,这样或许能将你说服。

(29) 如认为自己已进行了良好的分析、设计或者实施,那么请稍微更换一下思维角度。试试邀请一些外来人士--并不一定是专家,但可以是来自本公司其他部门的人。请他们用完全新鲜的眼光考察你的工作,看看是否能找出你一度熟视无睹的问题。采取这种方式,往往能在最适合修改的阶段找出一些关键性的问题,避免产品发行后再解决问题而造成的金钱及精力方面的损失。

(30) 良好的设计能带来最大的回报。简言之,对于一个特定的问题,通常会花较长的时间才能找到一种最恰当的解决方案。但一旦找到了正确的方法,以后的工作就轻松多了,再也不用经历数小时、数天或者数月的痛苦挣扎。我们的努力工作会带来最大的回报(甚至无可估量)。而且由于自己倾注了大量心血,最终获得一个出色的设计方案,成功的快感也是令人心动的。坚持****草草完工的诱惑--那样做往往得不偿失

java中各种类型的键盘输入代码是什么

下面的是键盘和鼠标的各种事件,看一下是不是你要的!

鼠标监听器

鼠标监听器mouseListener监听鼠标事件MouseEvent。相应事件和处理方法如下表:

鼠标事件 处理方法

MOUSE_CLICKED MouseClicked (MouseEvent) 鼠标点击(单或双)

MOUSE_PRESSED MousePressed (MouseEvent) 鼠标按下

MOUSE_RELEASED MouseReleased(MouseEvent) 鼠标松开

MOUSE_ENTERED MouseEntered (MouseEvent) 鼠标进入(某组件区域)

MOUSE_EXITED MouseExited (MouseEvent) 鼠标离开(某组件区域)

鼠标事件MouseEvent常用方法

int getClickCount() 得到点击次数1 OR 2;

int getX(), int getY() 得到鼠标的(象素)位置。

对于鼠标的移动和拖放,另外用鼠标运动监听器mouseMotionListener。因为许多程序不需要监听鼠标运动,把两者分开可简化程序。有两个方法处理鼠标运动事件:

MOUSE_MOVED MouseMoved (MouseEvent) 鼠标在移动MOUSE_DRAGGED MouseDragged(MouseEvent) 鼠标被拖动

下面的例程演示简单的鼠标监听,并在屏幕上输出鼠标操作的信息。

例2

下面是讨论MouseMotionListener的使用时机,它提供的下面的两个方法,可让你随时掌握鼠标的坐标,并处理拖曳鼠标的操作。

MouseMotionListener mouseDragged(MouseEvent e)

mouseMoved(MouseEvent e)

-----------------------------------------------------------------------

下面的范例让你知道鼠标在JFrame上的坐标,并拖曳出直线来。

MouseDemo3.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

/*为了达到画线的功能,我们分别implements MouseListener与MouseMotionListener.

*/

public class MouseDemo3 extends JFrame implements MouseListener,MouseMotionListener{

int flag;//flag=1代表Mouse Moved,flag=2代表Mouse Dragged

int x=0;

int y=0;

int startx,starty,endx,endy;//起始坐标与终点坐标

public MouseDemo3(){

Container contentPane=getContentPane();

contentPane.addMouseListener(this);

contentPane.addMouseMotionListener(this);

setSize(300,300);

show();

addWindowListener(

new WindowAdapter(){

public void windowClosing(WindowEvent e){

System.exit(0);

}

}

);

}

/*由mousePressed(),mouseReleased()取得示拖曳的开始与结束坐标*/

public void mousePressed(MouseEvent e){

startx=e.getX();

starty=e.getY();

}

public void mouseReleased(MouseEvent e){

endx=e.getX();

endy=e.getY();

}

public void mouseEntered(MouseEvent e){ }

public void mouseExited(MouseEvent e){ }

public void mouseClicked(MouseEvent e){ }

/*mouseMoved(),mouseDragged()取得鼠标移动的每一个坐标,并调用repaint()方法*/

public void mouseMoved(MouseEvent e){

flag=1;

x=e.getX();

y=e.getY();

repaint();

}

public void mouseDragged(MouseEvent e){

flag=2;

x=e.getX();

y=e.getY();

repaint();

}

public void update(Graphics g){

g.setColor(this.getBackground());

g.fillRect(0,0,getWidth(),getHeight());

paint(g);

}

public void paint(Graphics g){

g.setColor(Color.black);

if (flag==1){

g.drawString("鼠标坐标:("+x+","+y+";)",10,50);

g.drawLine(startx,starty,endx,endy);

}

if (flag==2){

g.drawString("拖曳鼠标价坐标:("+x+","+y+";)",10,50);

g.drawLine(startx,starty,x,y);

}

}

public static void main(String[] args){

new MouseDemo3();

}

}

例3

实现一个简单的鼠标控制程序MouseController。程序功能很简单:随机移动鼠标并点击左键。

代码如下:

import java.awt.AWTException;

import java.awt.Dimension;

import java.awt.Robot;

import java.awt.Toolkit;

import java.awt.event.InputEvent;

import java.util.Random;

/**

*

*/

/**

* @Create date 2007-11-6

*/

public class MouseController implements Runnable {

private Dimension dim;

private Random rand;

private Robot robot;

private volatile boolean stop = false;

public MouseController() {

dim = Toolkit.getDefaultToolkit().getScreenSize();

rand = new Random();

try {

robot = new Robot();

} catch (AWTException ex) {

ex.printStackTrace();

}

}

public void run() {

while(!stop) {

int x = rand.nextInt(dim.width);

int y = rand.nextInt(dim.height);

robot.mouseMove(x, y);

robot.mousePress(InputEvent.BUTTON1_MASK);

try {

Thread.sleep(2000);

} catch (InterruptedException ex) {

ex.printStackTrace();

}

}

}

public synchronized void stop() {

stop = true;

}

public static void main(String[] args) {

MouseController mc = new MouseController();

Thre

$False$

ad mcThread = new Thread(mc);

System.out.println("Mouse Controller start");

mcThread.start();

try {

Thread.sleep(60000);

} catch (InterruptedException ex) {

ex.printStackTrace();

}

mc.stop();

System.out.println("Mouse Controller stoped");

}

}

例4 本例程演示鼠标监听器,鼠标点击和运动的监听。

///

// MouseEvt.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

class MyPanel extends JPanel implements MouseMotionListener{

public MyPanel() {

addMouseListener(new MouseAdapter() {

publicvoid mouseClicked(MouseEvent evt) {

if (evt.getClickCount() = 2)

System.out.println("\n双击鼠标");

int x = evt.getX(); int y = evt.getY();

System.out.println("点击鼠标的位置\nX:" + x + "\ty: " + y);

}

});

addMouseMotionListener(this);

}

publicvoid mouseMoved(MouseEvent evt){

System.out.println("\n鼠标正在移动");

}

publicvoid mouseDragged(MouseEvent evt){

System.out.println("\n鼠标正在拖动");

}

}

class MyFrame extends JFrame{

public MyFrame(){

setTitle("鼠标事件示例程序");

setSize(300, 200);

addWindowListener(new WindowAdapter(){

publicvoid windowClosing(WindowEvent e){

System.exit(0);

}

} );

Container contentPane = getContentPane();

contentPane.add(new MyPanel());

}

}

publicclass MouseEvt{

publicstaticvoid main(String[] args){

JFrame frame = new MyFrame();

frame.setVisible(true);

}

}

///

简要说明

在MyPanel的构建器中添加了鼠标适配器来监听鼠标点击数和位置。也添加了运动监听器来处理移动和拖放操作。

鼠标双击事件

鼠标的单双击事件在很多时候对我们帮助很大,但是在JAVA中却没有给出鼠标双击事件.我们可以通过事件源e.getClickCount()==2来判断鼠标点击次数来实现鼠标双击事件,例如: public class MyMouseListener

extends java.awt.event.MouseAdapter ...{

public void mouseClicked(MouseEvent e) ...{

System.out.println("clicked");

int clickTimes = e.getClickCount();

if (clickTimes == 2) ...{

System.out.println("Doublc Clicked!");

}

}

}

但是这样并没有达到我们的要求,因为在每次触发双击事件的同时会触发单击事件.所以我们试图改进以上方案,不使用系统提供的e.getClickCount()方法.可以考虑当第一次单击鼠标的时候让鼠标单击事件延时0.2秒执行,而在这段时间里等待第二次单击,如果有第二次单击,那么我们执行双击事件任务,取消单击任务;如果在这段时间没有等到再次单击,那么执行单击任务.

下面是用定时器延时单击事件实现鼠标双击事件,单击和双击事件互不影响!

public class MyMouseListener

extends java.awt.event.MouseAdapter ...{

private static boolean flag=false;//用来判断是否已经执行双击事件

private static int clickNum=0;//用来判断是否该执行双击事件

public void mouseClicked(MouseEvent e) ...{

final MouseEvent me=e;//事件源

this.flag=false;//每次点击鼠标初始化双击事件执行标志为false

if (this.clickNum == 1) ...{//当clickNum==1时执行双击事件

this.mouseDoubleClicked(me);//执行双击事件

this.clickNum=0;//初始化双击事件执行标志为0

this.flag=true;//双击事件已执行,事件标志为true

return;

}

//定义定时器

java.util.Timer timer=new java.util.Timer();

//定时器开始执行,延时0.2秒后确定是否执行单击事件

timer.schedule(new java.util.TimerTask() ...{

private int n=0;//记录定时器执行次数

public void run() ...{

if(MyMouseListener.flag)...{//如果双击事件已经执行,那么直接取消单击执行

n=0;

MyMouseListener.clickNum=0;

this.cancel();

return;

}

if (n == 1) ...{//定时器等待0.2秒后,双击事件仍未发生,执行单击事件

mouseSingleClicked(me);//执行单击事件

MyMouseListener.flag = true;

MyMouseListener.clickNum=0;

n=0;

this.cancel();

return;

}

clickNum++;

n++;

}

},new java.util.Date(),500);

}

/** *//**

* 鼠标单击事件

* @param e 事件源参数

*/

public void mouseSingleClicked(MouseEvent e)...{

System.out.println("Single Clicked!");

}

/** *//**

* 鼠标双击事件

* @param e 事件源参数

*/

public void mouseDoubleClicked(MouseEvent e)...{

System.out.println("Doublc Clicked!");

}

}

//Test.java

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Test extends JFrame{

public Test(){

super("test");

init();

this.setSize(800,600);

this.setVisible(true);

}

private void init(){

JButton b=new JButton("button");

b.setBounds(50,50,100,30);

this.getContentPane().setLayout(null);

this.getContentPane().add(b);

b.addMouseListener(new MyMouseListener());

}

public static void main(String args[]){

new Test();

}

}

键盘监听器

键盘监听器KeyListener用来监听键盘事件。键盘事件有三种:KEY_PRESSED键按下了,KEY_RELEASED键松开了,KEY_TYPED键按过了。每个键都有一个键码,普通键的键码就是ASCII码。键码可通过int getKeyCode()方法获得。Java设置了一种“虚拟键码”(Virtual Key Code),用“VK_”作为前缀,例如VK_G。下面是某些特殊键的虚拟键码。

键码 含义 键码 含义

VK_LEFT/VK_RIGHT 左右方向键 VK_CONTROL Ctrl键

VK_KP_UP 小键盘向上 VK_ATL Alt键

VK_PAUSE 暂停键 VK_SHIFT Shift键

VK_NUMBER0 小键盘数字0 VK_F1 功能键F1

VK_0 数字键0 VK_B 字母键B

虚拟键码对应的是键位,不区分大小写。要想知道大小写还必须查看修饰键(modifier key)。这由输入事件InputEvent的getModifere()方法得到,把返回值与常量SHIFT_MASK, CONTROL_MASK, ALT_MASK比较,用以判定哪个修饰键处于“同时按下”状态。

监听器KeyListener有三个方法keyPressed(KeyEvent evt),keyReleased(KeyEvent evt),keyTyped(KeyEvent evt),分别用于相应事件发生后的处理。下面的例程中给自己的键盘监听器建立了showKeyEventMsg方法来显示按键信息。

除了getKeyCode()方法得到键码外,还可用getKeyChar()方法得到输入的字符,用getKeyText(code)方法得到输入的字符串。用isShiftDown()判断shift键是否被按下等。当按下Control键时getKeyText返回的是“ctrl",Alt和Shift也类似。

下面的例子演示得到键码和字符的方法,在命令行上显示结果。

例1 本例程演示键盘监听器后键码的用法。

///

// KeyEvt.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

class MyKeyListener implements KeyListener{

publicvoid keyPressed(KeyEvent evt) {

System.out.println("\n按键被按下");

showKeyEventMsg(evt);

}

publicvoid keyReleased(KeyEvent evt){ }

publicvoid keyTyped(KeyEvent evt) { }

privatevoid showKeyEventMsg(KeyEvent evt){//显示按键事件信息

//得到按键对应的整型数

int code = evt.getKeyCode();

//返回按键事件所代表的字符

char c = evt.getKeyChar();

//得到代表按键的字符串

String szText = evt.getKeyText(code);

if (code != KeyEvent.VK_UNDEFINED)

System.out.println("\n按键对应的整型数:"+code);

if (c != KeyEvent.CHAR_UNDEFINED)

System.out.println("\n与按键相联系的字符:"+c);

if (evt.isShiftDown())

System.out.println("\n按键Shift被按下");

System.out.println("\n按键本身的字符串:"+szText);

}

}

class ButtonPanel extends JPanel{

public ButtonPanel() {

//新建一个文本域组件

tf = new JTextField(20);

add(tf);

//指定用来处理该按钮事件的监听器对象为JPanel本身

myListener = new MyKeyListener();

tf.addKeyListener(myListener);

}

private JTextField tf;

private MyKeyListener myListener;

}

class ButtonFrame extends JFrame{

public ButtonFrame() {

setTitle("键盘事件示例程序");

setSize(300, 200);

setLocation(100,100);

addWindowListener(new WindowAdapter() {

publicvoid windowClosing(WindowEvent e)

{ System.exit(0);

}

});

Container ctPane = getContentPane();

ctPane.add(new ButtonPanel());

}

}

publicclass KeyEvt{

publicstaticvoid main(String[] args) {

JFrame frame = new ButtonFrame();

frame.setVisible(true);

}

}

///简要说明

程序建立了自己的键盘监听器MyKeyListener,定义了一个新方法showKeyEventMsg用来在标准输出设备上显示有关的键盘信息。

在面版ButtonPanel上建立文本框并加键盘监听器。把面版ButtonPanel放到窗口ButtonFrame中。

给段最简单的java代码 让我新手看一下

最简单的java代码肯定就是这个了,如下:

public class MyFirstApp

{

public static void main(String[] args)

{

System.out.print("Hello world");

}

}

“hello world”就是应该是所有学java的新手看的第一个代码了。如果是零基础的新手朋友们可以来我们的java实验班试听,有免费的试听课程帮助学习java必备基础知识,有助教老师为零基础的人提供个人学习方案,学习完成后有考评团进行专业测试,帮助测评学员是否适合继续学习java,15天内免费帮助来报名体验实验班的新手快速入门java,更好的学习java!

Java多线程方案如何处理关键代码

publicT voidParallelRecursive(final Executorexec,ListNodeTnodes,CollectionT results){

for(NodeT n:nodes){

exec.execute(new Runnable(){

public void run(){

results.add(n.compute());

}

});

parallelRecursive(exec,n.getChildren(),results);

}

}

publicTCollectionTgetParallelResults(ListNodeTnodes)

throws InterruptedException{

ExecutorService exec=Executors.newCachedThreadPool();

QueueT resultQueue=newConcurrentLinkedQueueT();

parallelRecursive(exec,nodes,resultQueue);

exec.shutdown();

exec.awaitTermination(Long.MAX_VALUE,TimeUnit.SECONDS);

return reslutQueue;

}

JAVA语言编写事件处理程序的两种主要方案

java语言编写事件处理程序主要有两种方案:一个是程序重设方法handleEvent(Event),采用这个方案的程序工作量稍大。另一个是程序实现一些系统设定的接口。java按事件类型提供多种接口,作为监视器对象的类需要实现相应的接口,即实现响应事件的方法。当事件发生时,系统内设的handleEvent(Event evt)方法就自动调用监视器的类实现的响应事件的方法。

java.awt.event包中用来检测并对事件做出反应的模型包括以下三个组成元素:

(1)源对象:事件发生在这个组件上,它与一组侦听该事件的对象保持着联系。

(2)监视器对象:是一个实现预定义的接口的类的一个对象,该对象的类要提供对发生的事件作处理的方法。

(3)事件对象:包含描述当事件发生时从源传递给监视器的特定事件的信息。

JAVA程序分为哪几类?有什么作用?

JAVA程序分为三种,Application,Applet,Serverlets。

依次介绍这三种类型:

1、Application,即”Java应用程序“,是可以独立运行的Java程序,由Java解释器控制执行,也是最常见的类型。

2、Applet,即“Java小程序“,不能独立运行(嵌入到Web页中)。由Java兼容浏览器控制执行。

3、Serverlets,是Java技术对CGI 编程的解决方案。是运行于Web server上的、作为来自于Web browser 或其他HTTP client端的请求和在server上的数据库及其他应用程序之间的中间层程序。

扩展资料

JAVA语言特点:

1、高性能

Java是一种先编译后解释的语言,所以它不如全编译性语言快。但是有些情况下性能是很要紧的,为了支持这些情况,Java设计者制作了“及时”编译程序,它能在运行时把Java字节码翻译成特定CPU(中央处理器)的机器代码,也就是实现全编译了。

Java字节码格式设计时考虑到这些“及时”编译程序的需要,所以生成机器代码的过程相当简单,它能产生相当好的代码。

2、分布性

Java设计成支持在网络上应用,它是分布式语言。Java既支持各种层次的网络连接,又以Socket类支持可靠的流(stream)网络连接,所以用户可以产生分布式的客户机和服务器。

网络变成软件应用的分布运载工具。Java程序只要编写一次,就可到处运行。

3、可移植性

Java使得语言声明不依赖于实现的方面。例如,Java显式说明每个基本数据类型的大小和它的运算行为(这些数据类型由Java语法描述)。

Java环境本身对新的硬件平台和操作系统是可移植的。Java编译程序也用Java编写,而Java运行系统用ANSIC语言编写。


网站栏目:java不同方案种类代码,java适用于哪种类型的开发
分享网址:http://myzitong.com/article/heoosh.html