Java动态程序设计 反射介绍 使用运行的类的信息使你的程序设计更加灵活反射授予了你的代码访问装载进JVM内的Java类的内部信息的权限 并且允许你编写在程序执行期间与所选择的类的一同工作的代码 而不是在源代码中 这种机制使得反射成为创建灵活的应用程序的强大工具 但是要小心的是 如果使用不恰当 反射会带来很大的副作用 在这篇文章中 软件咨询顾问Dennis Sosnoski 介绍了反射的使用 同时还介绍了一些使用反射所要付出的代价 在这里 你可以找到Java反射API是如何在运行时让你钩入对象的 在第一部分 我向你介绍了Java程序设计的类以及类的装载 那篇文章中描述了很多出现在Java二进制类格式中的信息 现在我来介绍在运行时使用反射API访问和使用这些信息的基础 为了使那些已经了解反射基础的开发人员对这些事情感兴趣 我还会介绍一些反射与直接访问的在性能方面的比较 使用反射与和metadata(描述其它数据的数据)一些工作的Java程序设计是不同的 通过Java语言反射来访问的元数据的特殊类型是在JVM内部的类和对象的描述 反射使你可以在运行时访问各种类信息 它甚至可以你让在运行时读写属性字段 调用所选择的类的方法 反射是一个强大的工具 它让你建立灵活能够在运行时组装的代码 而不需要连接组件间的源代码 反射的一些特征也带来一些问题 在这章中 我将会探究在应用程序中不打算使用反射的原因 以为什么使用它的原因 在你了解到这些利弊之后 你就会在好处大于缺点的时候做出决定 初识class 使用反射的起点总时一个java lang Class类的实例 如果你与一个预先确定的类一同工作 Java语言为直接获得Class类的实例提供了一个简单的快捷方式 例如 Class clas = MyClass class;当你使用这项技术的时候 所有与装载类有关的工作都发生在幕后 如果你需要在运行时从外部的资源中读取类名 使用上面这种方法是不会达到目的的 相反你需要使用类装载器来查找类的信息 方法如下所示 // name is the class name to loadClass clas = null;try {clas = Class forName(name);} catch (ClassNotFoundException ex) {// handle exception case}// use the loaded class如果类已经装载 你将会找到当前在在的类的信息 如果类还没有被装载 那么类装载器将会装载它 并且返回最近创建的类的实例 关于类的反射 Class对象给予你了所有的用于反射访问类的元数据的基本钩子 这些元数据包括有关类的自身信息 例如象类的包和子类 还有这个类所实现的接口 还包括这个类所定义的构造器 属性字段以及方法的详细信息 后面的这些项是我们在程序设计过种经常使用的 因此在这一节的后面我会给出一些用这些信息来工作的例子 对于类的构造中的每一种类型(构造器 属性字段 方法) java lang Class提供了四种独立的反射调用以不的方式来访问类的信息 下面列出了这四种调用的标准形式 它是一组用于查找构造器的调用 Constructor getConstructor(Class[] params) 使用指定的参数类型来获得公共的构造器 Constructor[] getConstructors()获得这个类的所有构造器 Constructor getDeclaredConstructor(Class[] params) 使用指定的参数类型来获得构造器(忽略访问的级别)Constructor[] getDeclaredConstructors() 获得这个类的所有的构造器(忽略访问的级别)上述的每一种方法都返回一或多个java lang reflect Constructor的实例 Constructor类定义了一个需要一个对象数据做为唯一参数的newInstance方法 然后返回一个最近创建的原始类的实例 对象数组是在构造器调用时所使用的参数值 例如 假设你有一个带有一对String 类型做为参数的构造器的TwoString类 代码如下所示 public class TwoString {private String m_s m_s ;public TwoString(String s String s ) {m_s = s ;m_s = s ;}}下面的代码显示如何获得TwoString类的构造器 并使用字符串 a 和 b 来创建一个实例 Class[] types = new Class[] { String class String class };Constructor cons = TwoString class getConstructor(types);Object[] args = new Object[] { a b };TwoString ts = cons newInstance(args);上面的代码忽略了几种可能的被不同的反射方法抛出的异常检查的类型 这些异常在Javadoc API中有详细的描述 因此为简便起见 我会在所有的代码中忽略它们 在我涉及到构造器这个主题时 Java语言也定义了一个特殊的没有参数的(或默认)构造器快捷方法 你能使用它来创建一个类的实例 这个快捷方法象下面的代码这样被嵌入到类的自定义中 Object newInstance() 使用默认的构造器创建新的实例 尽管这种方法只让你使用一个特殊的构造器 但是如果你需要的话 它是非常便利的快捷方式 这项技术在使用JavaBeans工作的时候尤其有用 因为JavaBeans需要定义一个公共的 没有参数的构造器 通过反射来查找属性字段 Class类反射调用访问属性字段信息与那些用于访问构造器的方法类似 在有数组类型的参数的使用属性字段名来替代 使用方法如下所示 Field getField(String name) 获得由name指定的具有public级别的属性字段Field getFields() 获得一个类的所有具有public级别的属性字段Field getDeclaredField(String name) 获得由name指定的被类声明的属性字段Field getDeclaredFields() 获得由类定义的所有的属性字段尽管与构造器的调用很相似 但是在提到属性字段的时候 有一个重要的差别 前两个方法返回能过类来访问的公共(public)属性字段的信息(包括那些来自于超类的属性字段) 后两个方法返回由类直接声明的所有的属性字段(忽略了属性字段的访问类型) Java lang reflect Field的实例通过调用定义好的getXXX和setXXX方法来返回所有的原始的数据类型 就像普通的与对象引用一起工作的get和set方法一样 尽管getXXX方法会自动地处理数据类型转换(例如使用getInt方法来获取一个byte类型的值) 但使用一个适当基于实际的属性字段类型的方法是应该优先考虑的 下面的代码显示了如何使用属性字段的反射方法 通过指定属性字段名 找到一个对象的int类型的属性字段 并给这个属性字段值加 public int incrementField(String name Object obj) throws {Field field = obj getClass() getDeclaredField(name);int value = field getInt(obj) + ;field setInt(obj value);return value;}这个方法开始展现一些使用反射所可能带来的灵活性 它优于与一个特定的类一同工作 incrementField方法把要查找的类信息的对象传递给getClass方法 然后直接在那个类中查找命名的属性字段 通过反射来查找方法 Class反射调用访问方法的信息与访问构造器和字段属性的方法非常相似 Method getMethod(String name Class[] params) 使用指定的参数类型获得由name参数指定的public类型的方法 Mehtod[] getMethods()获得一个类的所有的public类型的方法Mehtod getDeclaredMethod(String name Class[] params)使用指定的参数类型获得由name参数所指定的由这个类声明的方法 Method[] getDeclaredMethods() 获得这个类所声明的所有的方法与属性字段的调用一样 前两个方法返回通过这个类的实例可以访问的public类型的方法包括那些继承于超类的方法 后两个方法返回由这个类直接声明的方法的信息 而不管方法的访问类型 通过调用返回的Java lang reflect Mehtod实例定义了一个invoke方法 你可以使用它来调用定义类的有关实例 这个invoke方法需要两个参数 一个是提供这个方法的类的实例 一个是调用这个方法所需要的参数值的数组 下面给出了比属性字段的例子更加深入的例子 它显示了一个的方法反射的例子 这个方法使用get和set方法来给JavaBean定义的int类型的属性做增量 *** 作 例如 如果对象为一个整数类型count属性定义了getCount和setCount方法 那么为了给这个属性做增量运算 你就可以把 count 做为参数名传递给调用的这个方法中 示例代码如下 public int incrementProperty(String name Object obj) {String prop = Character toUpperCase(name charAt( )) +name substring( );String mname = get + prop;Class[] types = new Class[] {};Method method = obj getClass() getMethod(mname types);Object result = method invoke(obj new Object[ ]);int value = ((Integer)result) intValue() + ;mname = lishixinzhi/Article/program/Java/hx/201311/26154
在Java语言产生前 传统的程序设计语言的程序同一时刻只能单任务 *** 作 效率非常低 例如程序往往在接收数据输入时发生阻塞 只有等到程序获得数据后才能继续运行 随着Internet的迅猛发展 这种状况越来越不能让人们忍受 如果网络接收数据阻塞 后台程序就处于等待状态而不继续任何 *** 作 而这种阻塞是经常会碰到的 此时CPU资源被白白的闲置起来 如果在后台程序中能够同时处理多个任务 该多好啊!应Internet技术而生的Java语言解决了这个问题 多线程程序是Java语言的一个很重要的特点 在一个Java程序中 我们可以同时并行运行多个相对独立的线程 例如 我们如果创建一个线程来进行数据输入输出 而创建另一个线程在后台进行其它的数据处理 如果输入输出线程在接收数据时阻塞 而处理数据的线程仍然在运行 多线程程序设计大大提高了程序执行效率和处理能力
线程的创建
我们知道Java是面向对象的程序语言 用Java进行程序设计就是设计和使用类 Java为我们提供了线程类Thread来创建线程 创建线程与创建普通的类的对象的 *** 作是一样的 而线程就是Thread类或其子类的实例对象 下面是一个创建启动一个线程的语句
Thread thread =new Thread(); file://声明一个对象实例 即创建一个线程
Thread run(); file://用Thread类中的run()方法启动线程
从这个例子 我们可以通过Thread()构造方法创建一个线程 并启动该线程 事实上 启动线程 也就是启动线程的run()方法 而Thread类中的run()方法没有任何 *** 作语句 所以这个线程没有任何 *** 作 要使线程实现预定功能 必须定义自己的run()方法 Java中通常有两种方式定义run()方法
通过定义一个Thread类的子类 在该子类中重写run()方法 Thread子类的实例对象就是一个线程 显然 该线程有我们自己设计的线程体run()方法 启动线程就启动了子类中重写的run()方法
通过Runnable接口 在该接口中定义run()方法的接口 所谓接口跟类非常类似 主要用来实现特殊功能 如复杂关系的多重继承功能 在此 我们定义一个实现Runnable() 接口的类 在该类中定义自己的run()方法 然后以该类的实例对象为参数调用Thread类的构造方法来创建一个线程
线程被实际创建后处于待命状态 激活(启动)线程就是启动线程的run()方法 这是通过调用线程的start()方法来实现的
下面一个例子实践了如何通过上述两种方法创建线程并启动它们
// 通过Thread类的子类创建的线程 class thread extends Thread { file://自定义线程的run()方法 public void run() { System out println( Thread is running… ); } } file://通过Runnable接口创建的另外一个线程 class thread implements Runnable { file://自定义线程的run()方法 public void run() { System out println( Thread is running… ); } } file://程序的主类 class Multi_Thread file://声明主类 { plubic static void mail(String args[]) file://声明主方法 { thread threadone=new thread (); file://用Thread类的子类创建线程 Thread threado=new Thread(new thread ()); file://用Runnable接口类的对象创建线程 threadone start(); threado start(); file://strat()方法启动线程 } }
运行该程序就可以看出 线程threadone和threado交替占用CPU 处于并行运行状态 可以看出 启动线程的run()方法是通过调用线程的start()方法来实现的(见上例中主类) 调用start()方法启动线程的run()方法不同于一般的调用方法 调用一般方法时 必须等到一般方法执行完毕才能够返回start()方法 而启动线程的run()方法后 start()告诉系统该线程准备就绪可以启动run()方法后 就返回start()方法执行调用start()方法语句下面的语句 这时run()方法可能还在运行 这样 线程的启动和运行并行进行 实现了多任务 *** 作
线程的优先级
对于多线程程序 每个线程的重要程度是不尽相同 如多个线程在等待获得CPU时间时 往往我们需要优先级高的线程优先抢占到CPU时间得以执行 又如多个线程交替执行时 优先级决定了级别高的线程得到CPU的次数多一些且时间多长一些 这样 高优先级的线程处理的任务效率就高一些
Java中线程的优先级从低到高以整数 ~ 表示 共分为 级 设置优先级是通过调用线程对象的setPriority()方法 如上例中 设置优先级的语句为
thread threadone=new thread (); file://用Thread类的子类创建线程
Thread threado=new Thread(new thread ()); file://用Runnable接口类的对象创建线程
threadone setPriority( ); file://设置threadone的优先级
threado setPriority( ); file://设置threado的优先级
threadone start(); threado start(); file://strat()方法启动线程
这样 线程threadone将会优先于线程threado执行 并将占有更多的CPU时间 该例中 优先级设置放在线程启动前 也可以在启动后进行设置 以满足不同的优先级需求
线程的(同步)控制
一个Java程序的多线程之间可以共享数据 当线程以异步方式访问共享数据时 有时候是不安全的或者不和逻辑的 比如 同一时刻一个线程在读取数据 另外一个线程在处理数据 当处理数据的线程没有等到读取数据的线程读取完毕就去处理数据 必然得到错误的处理结果 这和我们前面提到的读取数据和处理数据并行多任务并不矛盾 这儿指的是处理数据的线程不能处理当前还没有读取结束的数据 但是可以处理其它的数据
如果我们采用多线程同步控制机制 等到第一个线程读取完数据 第二个线程才能处理该数据 就会避免错误 可见 线程同步是多线程编程的一个相当重要的技术
在讲线程的同步控制前我们需要交代如下概念
用Java关键字synchonized同步对共享数据 *** 作的方法
在一个对象中 用synchonized声明的方法为同步方法 Java中有一个同步模型 监视器 负责管理线程对对象中的同步方法的访问 它的原理是 赋予该对象唯一一把 钥匙 当多个线程进入对象 只有取得该对象钥匙的线程才可以访问同步方法 其它线程在该对象中等待 直到该线程用wait()方法放弃这把钥匙 其它等待的线程抢占该钥匙 抢占到钥匙的线程后才可得以执行 而没有取得钥匙的线程仍被阻塞在该对象中等待
file://声明同步的一种方式 将方法声明同步
class store {public synchonized void store_in(){… }public synchonized void store_out(){ … }}
利用wait() notify()及notifyAll()方法发送消息实现线程间的相互联系
Java程序中多个线程通过消息来实现互动联系的 这几种方法实现了线程间的消息发送 例如定义一个对象的synchonized 方法 同一时刻只能够有一个线程访问该对象中的同步方法 其它线程被阻塞 通常可以用notify()或notifyAll()方法唤醒其它一个或所有线程 而使用wait()方法来使该线程处于阻塞状态 等待其它的线程用notify()唤醒
一个实际的例子就是生产和销售 生产单元将产品生产出来放在仓库中 销售单元则从仓库中提走产品 在这个过程中 销售单元必须在仓库中有产品时才能提货 如果仓库中没有产品 则销售单元必须等待
程序中 假如我们定义一个仓库类store 该类的实例对象就相当于仓库 在store类中定义两个成员方法 store_in() 用来模拟产品制造者往仓库中添加产品 strore_out()方法则用来模拟销售者从仓库中取走产品 然后定义两个线程类 customer类 其中的run()方法通过调用仓库类中的store_out()从仓库中取走产品 模拟销售者 另外一个线程类producer中的run()方法通过调用仓库类中的store_in()方法向仓库添加产品 模拟产品制造者 在主类中创建并启动线程 实现向仓库中添加产品或取走产品
如果仓库类中的store_in() 和store_out()方法不声明同步 这就是个一般的多线程 我们知道 一个程序中的多线程是交替执行的 运行也是无序的 这样 就可能存在这样的问题
仓库中没有产品了 销售者还在不断光顾 而且还不停的在 取 产品 这在现实中是不可思义的 在程序中就表现为负值 如果将仓库类中的stroe_in()和store_out()方法声明同步 如上例所示 就控制了同一时刻只能有一个线程访问仓库对象中的同步方法 即一个生产类线程访问被声明为同步的store_in()方法时 其它线程将不能够访问对象中的store_out()同步方法 当然也不能访问store_in()方法 必须等到该线程调用wait()方法放弃钥匙 其它线程才有机会访问同步方法
lishixinzhi/Article/program/Java/gj/201311/27301
面向对象程序设计的三大特征是多态(Polymorphism)、继承(Inheritance)、封装(Encapsulation)。
1、多态
多态核心的思想就是,父类的引用能够指向子类的对象,或者接口类型的引用能够指向实现该接口的类的实例。多态会这样的原因是因为子类就是父类。
2、继承
Java是单继承的,这一点和C++有所不同,这也就意味着,一个类只能继承于一个类,被继承的类叫父类,或者是叫基类baseclass,继承的类叫子类。
Java当中的继承使用关键字extends。可是,一个类能够实现多个接口,多个接口之间用逗号进行分割。实现接口使用关键字implements。
3、封装(Encapsulation)
封装比较的简单,类包含了方法和数据,将方法和数据放在一个类当中,就构成了封装。封装的优点:将变化隔离,便于使用,提高重用性,提高安全性;封装的缺点:将变量等使用private修饰,或者封装进方法内,使其不能直接被访问,增加了访问步骤与难度!
面向对象程序设计的六大基本原则:
1、单一职责原则
不要存在多于一个导致类变更的原因,即一个类只承担一个职责。
2、开放-封闭原则
对扩展开放,对修改封闭。无论模块多么封闭,都会存在一些无法对之封闭的变化,既然不能完全封闭,我们必须对于自己设计的模块应该对哪种变化封闭做出选择,必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离这些变化。
3、迪米特原则
一个对象应该对其他对象有最少的了解,减少类与类之间的耦合。如果两个类不必彼此通信,那么这两个类就不应当发生直接的相互作用。类与类之间的耦合越弱,越有利于复用,一个处于弱耦合的类被修改,不会对有关系的类造成波及。
4、依赖倒转原则
上层模块不要依赖底层模块,它们都要依赖于抽象。抽象不能依赖于细节,细节要依赖于抽象。面向接口编程,不要面向实现编程。
5、里氏替换原则
子类型必须能够替换掉它们的父类型。只有当子类可以替换掉父类,软件单位的功能不受影响时,父类才能真正的被复用,而子类也能够在父类的基础上增加新的行为。
6、接口隔离原则
客户端不应该依赖于它不需要的接口,一个类对一个类的依赖应该建立在最小的接口上。不要让与自己无关的修改影响到自己功能模块的变化。
一 JAVA程序设计课程讲什么内容
《Java程序设计》课程是使用Java语言进行应用程序设计的课程。课程的主要目标有三:一、掌握Java语言的语法,能够较为深入理解Java语言机制,掌握Java语言面向对象的特点。 二、掌握JavaSE中基本的API,掌握在 、线程、输入输出、文本处理、图形用户界面、网络等方面的应用。三、能够编写有一定规模的应用程序,养成良好的编程习惯。 本课程要对Java语言的一些机制会详细讲解,所以具有系统性。本课程还注重实践性,要讲Java语言在文本、文件、窗体界面、图形、数据库、多线程、并行编程方面的应用。还会讲到编好代码的经验与技巧,包括面向对象的思想、软件开发工具的使用等。 在教学中,采用教师讲授、学生自测、学生讨论、编程实践相结合的方法。
二 千锋JAVA课程介绍
Java语言的发展及相关技术的介绍,Java技术和平台在网络计算及电子商务中的应用介绍;Java语言的基础知识:Java语言的主要特点,设计思想,Java虚拟机,垃圾回收机制,安全性的保证机制;Java语言的基本语法规范,包括标识符、关键字、数据类型、表达式和流控制,程序基本结构;面向对象技术的基本特点,Java语言的面向对象特性,类和对象的概念,封装性、继承性、多态性,Java语言的特殊属性;Java程序的例外处理机制和方法;
Java语言的输入/输出处理机制和方法,常用的输入/输出方法,输入/输出处理的应用;
Java语言的图形用户界面设计:AWT界面设计的基本方法,常用的组件类库,图形用户界面的事件处理模型和方法,JFC介绍,Swing图形界面设计;Java Applet程序设计,Applet程序的特点,运行机制,与浏览器的集成,安全机制的使用;
多线程程序设计,进程和线程的联系和区别,多线程程序设计的一般方法,线程的生命周期,线程状态的控制,多线程的互斥和同步;Java语言的网络编程技术和应用,Socket程序设计,Client/Server程序设计;Java的Servlet和JSP(JavaServerPage)技术;
JavaBeans和RMI。
三 java程序设计的介绍
《java程序设计》是2006年清华大学出版社 北京交通大学出版社出版的图书,作者是吴萍、蒲鹏、朱丽娟。主要讲述了本书通过对Java编程语言的全面介绍,引导读者快速地掌握Java编程语言的核心内容并学会灵活运用所学的语言知识及面向对象的编程思想。全书共分9章,内容包括Java语言概述、面向对象编程初步、Java的基本语法、类库与数组、面向对象编程深入、Applet程序、图形用户界面编程、异常处理和输入输出及多线程编程。
四 java程序设计的内容简介
本书采用任务驱动教学模式,通过任务的实施,使读者在读程序、版学知识、写程序的过程中,权逐渐掌握面向对象的Java程序设计思想和技能。本书共分12个单元,主要包括Java程序设计过程、基本语法规则、面向对象技术、数组与字符串、异常处理、GUI编程、输入/输出处理、多线程编程以及基础网络编程等内容。
本书适合作为高等职业院校计算机相关专业“Java程序设计”或者“面向对象程序设计”课程的教材,也可作为相关技术人员学习Java的参考用书。
五 java程序设计的内容简介
本书是依据本科和高职高专院校的培养目标及基本要求,结合作者多专年来的教学经验和工程实践属基础,为实施教学改革,使计算机教学进一步面向软件编程实践而编写的一本教材。包括的主要内容有:面向对象程序设计语言,Java程序设计入门,程序控制流程,JAVA的方法、类与对象、继承与派生,JAVA的异常处理,JAVA包的组成和使用,设计APPLET程序、JAVA的多线程、I/O流、网络程序设计等。每章后都配有上机实战和理论巩固题,实现教与学的统一。
本书语言通俗易懂,内容丰富翔实,突出了以实用为中心的特点。使用本书进行学习,可帮助读者用最少的时间掌握最多的知识及工作经验与技巧,是本科和高职高专院校理想的教学教材,同时也可作为软件和信息技术工程人员的参考用书。
六 《JAVA程序设计》课程设计
1 package studypart02;
2 import javautilCalendar;
3 import javaawt;
4 import javaxswing;
5 import javaawtevent;
6 import javalangThread;
7 public class Clock extends JFrame implements ComponentListener,
8 ItemListener,Runnable{
9 Thread timer;
10 private JComboBox bobox_color;
11 public void start(){
12 if(timer==null)
13 timer=new Thread(this,"ShowTime");
14 timerstart();
15 }
16 public void run(){
17 while(true){
18 try{
19 timersleep(1000);
20 }catch(InterruptedException e){}
21 repaint();
22 }
23 }
24 public void stop(){
25 timerstop();
26 }
27 public Clock(){
28 super("Clock");
29 thissetSize(600,600);
30 thissetDefaultCloseOperation(EXIT_ON_CLOSE);
31 thissetLayout(new FlowLayout());
32
33 thissetVisible(true);
34 }
35 public void paint(Graphics g){
36 Calendar cal=CalendargetInstance();
37 int year=calget(CalendarYEAR);
38 int month=calget(CalendarMONTH);
39 int day=calget(CalendarDATE);
40 int hour=calget(CalendarHOUR);
41 int minute=calget(CalendarMINUTE);
42 int second=calget(CalendarSECOND);
43 int a,b;
44 a=thisgetWidth()/2;
45 for(int i=1;i<=360;i++){
46 double angle=iMathPI/180;
47 double radius=a-50;
48 int x=(int)Mathround(radiusMathsin(angle));
49 int y=(int)Mathround(radiusMathcos(angle));
50 if(i%30==0){
51 int j=i/30;
52 String str=StringvalueOf(j);
53 gsetColor(Colorblack);
54 // gfillOval(a+x,a+y,1,1);
55 gdrawString(str,a+x,a-y);
56 }
57 double radh=a-200;
58 angle=hourMathPI/30;
59 int xh=(int)Mathround(radhMathsin(angle));
60 int yh=(int)Mathround(radhMathcos(angle));
61 gsetColor(Colorred);
62 gdrawLine(a,a,a+xh,a-yh);
63 double radm=a-150;
64 angle=minuteMathPI/30;
65 int xm=(int)Mathround(radmMathsin(angle));
66 int ym=(int)Mathround(radmMathcos(angle));
67 gsetColor(Colorblue);
68 gdrawLine(a,a,a+xm,a-ym);
69 double rads=a-100;
70 angle=secondMathPI/30;
71 int xs=(int)Mathround(radsMathsin(angle));
72 int ys=(int)Mathround(radsMathcos(angle));
73 gsetColor(Coloryellow);
74 gdrawLine(a,a,a+xs,a-ys);
75 //gdrawString(calget(CalendarHOUR)+":"+calget(Calendar
76 // MINUTE)+":"+calget(CalendarSECOND));
77 }
78 }
79 public void itemStateChanged(ItemEvent e){
80 repaint();
81 }
82 public void ponentResized(ComponentEvent e){
83 repaint();
84 }
85 public void ponentMoved(ComponentEvent e){}
86 public void ponentHidden(ComponentEvent e){}
87 public void ponentShown(ComponentEvent e){}
88
89 public static void main(String[] args){
90 Clock show=new Clock();
91 showstart();
92 }
93 }
七 java程序设计的内容简介
本书讲解了copyJava语言的基本知识及程序设计的基本方法,使读者掌握面向对象程序设计的基本概念,从而具有利用Java语言进行程序设计的能力,为将来从事软件开发,特别是Web应用系统开发打下良好基础。全书共分10章,从内容上大致分为三个部分:第一部分为第1章~第3章,介绍Java程序设计的基础知识,包括Java语言概述、Java语言基础以及算法与程序控制结构。第二部分为第4章~第6章,介绍Java面向对象程序设计的基本方法与技术,这是Java的核心与特色内容,包括类与对象、封装、继承与多态以及异常处理与输入/输出。第三部分为第7章~第10章,介绍Java的实际应用,包括多线程、网络程序设计、数据库应用以及图形用户界面开发技术。
本书内容讲解详细,程序代码均经过调试,案例实用。
本书适合作为高等院校计算机程序设计课程的教材,也可作为具有一定程序设计基础和经验的读者的参考用书。
八 java程序设计的内容简介
本书共分四篇15章来阐述Java语言。其中,第一篇介绍了Java的基础知识,包括Java的历史和特征、Java的开发环境和工具、Java语言的基本语法知识;第二篇介绍了面向对象编程的思想和相关概念,Java中类的定义和对象的创建,Java继承、接口和包,数组与字符串,异常处理及JDK类库的应用;第三篇介绍了Java的AWT和Swing图形包的使用以及Java的多线程编程支持;第四篇通过一些简单的例子介绍了Java在网络和数据库方面的编程。本书的篇章内容采用循序渐进、由简到繁、由易到难的学习思维特征进行编排,书中例子以人们学习与认知过程为基础,以实际开发的需求为目标。书中内容通俗易懂,丰富易学,每章都附有习题,帮助读者及时了解与掌握相应章节的知识点并将其应用到实践中。
本书适合作为高职院校各专业学习Java语言的基础教材,也可作为相关工程技术人员和科技工作者的参考用书。
九 JAVA程序设计课程主讲老师是谁
JAVA程序设计主讲老师是北京大学信息科学技术学院教师,在程序设计方面有多年的项目开发经验和教学经验,任教育部计算机教指委分委专家组成员。出版的教材包括《Java程序设计》(曾获第六届全国高校出版社优秀畅销书奖)、《C#程序设计教程》、《VB程序设计》、《Visual C++NET程序设计》等。在北京大学开设多门程序设计课程,课程内容以系统知识与实践应用相结合,注重培养对知识体系的深入理解,在与实际工作生活相结合的应用实践中分析问题、解决问题的能力。
十 Java程序设计与Web应用程序设计哪门课简单
java程序设计主要讲解java的基础知识,它是一种语言性的课程。
web应用设计则是一种方向性的课程,这个web的设计你可以使用asp,也可以使用jsp,如果是通过jsp来进行web开发的话,需要java的知识作为基础。
因此,如果你有asp的相关知识的话,可以不学习java直接学习web应用程序设计,如果没有的话,建议你先学习java程序设计,然后再学习web应用程序设计。
以上就是关于Java动态程序设计——反射介绍全部的内容,包括:Java动态程序设计——反射介绍、Java多线程程序设计初步入门、面向对象程序设计的三大特征是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)