`
xyheqhd888
  • 浏览: 409215 次
  • 性别: Icon_minigender_1
  • 来自: 秦皇岛
社区版块
存档分类
最新评论
文章列表
1. Swing入门:     若要使用J2SE来开发窗口应用程序,可以有两种选择:一个是使用AWT(Abstract Window Toolkit),另一个是使用JFC(Java Foundation Classes)/Swing。 2. Swing简介:     每一个窗口上所出现的组件在J2SE中,都是java.awt.Component或是java.awt.MenuCompoment的子类,Component是按钮(Button)、标签(Label)、文字编辑组件(TextComponent)等类的父类,而MenuComponent则是菜单栏(MenuBar)、菜单项目(MenuItem ...
1. 程序中的一些文字信息可以将之定义在一个属性文件中,而不定要写在程序代码中,这样在日后想更改文字信息时,只要更改文本文件的内容而不用重新编译程序,就可以在程序运行时显示不同的信息。 2.使用ResourceBundle:    对于程序中日后可能变动的文字信息,可以考虑将信息移到程序之外。方法是用java.util.ResourceBundle来作信息绑定,首先要准备一个.properties文件,例如messages.properties,而文件的内容如下:                     onlyfun.caterpillar.welcome = Hello            ...
1. 日志(Logging)      程序不免会出现错误,当出现错误时,可能会想将错误信息以某种方式存储下来,以供使用者或是程序开发人员调试(Debug)时使用。java.lang.logging包提供了一系列的logging工具类,如果只是要简单地记录一些信息,就可以使用这些工具类。      要使用J2SE的日志功能,首先要取得java.util.logging.Logger实例,这可以通过Logger类的静态getLogger()方法来取得。如下例,当程序在启动时没有提供参数时会显示警示信息: package ysu.hxy; import java.util.logging.*; ...
1. 使用Date:       使用System.currentTimeMillis()方法可以取得系统的时间,是从1970年1月1日0时0分0秒到当前系统时间的毫秒数。当使用Date对象时,会使用System.currentTimeMillis()来取得系统时间,使用Date实例的toString()方法时,会将取得的1970年1月1日0时0分0秒至今的毫秒数转为“星期  月  日  时:分:秒  公元“的格式;使用Date的getTime()方法则可以取得实际经过的毫秒数。如下例: package ysu.hxy; import java.util.Date; public cl ...
 1. 所谓meta-annotation就是Annotation类型的数据,也就是Annotation类型的Annotation,在定义Annotation类型时,为Annotation类型加上Annotation可以为处理Annotation类型的分析工具提供更多的信息。 2. java.lang.annotation.Retention类型可以在您定义Annotation类型时,指示编译器该如何对待自定义的Annotation类型,编译器默认会将Annotation信息留在.class文件中,但不被JVM读取,而仅用于编译器或工具程序运行时提供信息。 3. 在使用Retention类型时, ...
1. Annotation对程序运行没有影响,它的目的在于对编译器或分析工具说明程序的某些信息,您可以在包、类、方法、域成员等加上Annotation。每个Annotation对应于一个实际的Annotation类型。 2. 限定Override父类方法@Override     java.lang.Override是J2SE 5.0中标准的Annotation类型之一,它对编译器说明某个方法必须是重写父类中的方法。编译器得知这项信息后,在编译程序时如果发现被@Override标示的方法并非重写父类中的方法,就会报告错误。    如下例: package ysu.hxy; public cla ...
1. 修改成员值:     尽管直接存取类的域成员是不被鼓励的,但仍可以直接存取公开的域成员,甚至也可以通过反射机制来存取私有域成员。下面以一个实例来说明,首先编写一个TestField类。     package ysu.hxy; public class TestField { public int testInt; public String testString; public String toString() { return testInt + ":" +testString; } }  下面的范例利用反射机制动态加载类来存取 ...
1. 使用反射机制,可以在运行时期动态加载类并生成对象,操作对象上的方法、改变类成员的值,甚至连私有成员的值也可以改变。 2. 生成对象:可以使用Class的newInstance()方法来实例化一个对象,实例化的对象以Object类型返回。例如:    Class c = Class.forName(className); Object obj = c.newInstance();  下面是一个简单的示范,可以动态加载实现了List接口的类。 package ysu.hxy; import java.util.*; public class NewInstanceDemo { publ ...
1. 当在命令行模式下执行java XXX.class 指令后,java运行程序会尝试找到JRE安装的所在目录,然后寻找jvm.dll(默认是在JRE目录下bin\client目录中),接着启动JVM并进行初始化动作,产生Bootstrap Loader,Bootstrap Loader会加载Extended Loader,并设定Extended Loader的parent为Bootstrap Loader。Bootstrap Loader会加载System Loader,并将System Loader的parent设定为Extended Loader。 2. Bootstrap Loader通 ...
1. Java提供的反射机制允许您在运行时动态加载类、查看类信息、生成对象或操作生成的对象。反射机制的一个应用实例,就是在整合式开发环境中所提供的方法提示或是类查看工具。另外像JSP中的JavaBean自动收集请求信息也使用到反射,而一些软件开发框架也常见到反射机制的使用,以达到动态加载使用者自定义类的目的。 2. 简介Class与类加载:     Java在真正需要使用一个类时才会加以加载。一个java.lang.Class对象代表了Java应用程序在运行时所加载的类或接口实例,也用来表达enum(属于类的一种)、annotation(属于接口的一种)、数组、初始类型、void。Class类没 ...
1. 容器类默认没有考虑线程安全问题,您必须自行实现同步以确保共享数据在多线程存取下不会出错。例如使用Arraylist时,可以这样实现: //arraylist参考至一个ArrayList的一个实例 synchronized(arrayList) { arrayList.add(new SomeClass()); }  2 ...
1.  wait()、notify()、notifyAll()方法是由Object类提供的方法,且都被声明为final,所以无法重新定义它们。通过这3个方法您可以要求线程进入等待,或者是通知线程回到Runnable状态。 2.  必须在被同步化的方法或区块中调用wait()方法,当对象的wait()方法被调用时,当前的线程会被放入对象的等待集合(Wait Set)中,线程会解除对对象的锁定,其他的纯种可竞争执行被同步化区块。被放在等待集合中的线程将不参与线程的排队,wait()可以指定等待的时间,如果指定时间,则时间到之后线程会再度加入排队,如果指定时间为0或者不指定,则线程会持续等待,直到被中 ...
1.  如果一个对象所持有的数据可以被多线程同时共享存取,必须考虑到数据同步的问题。所谓数据同步指的是两份数据的整体性和一致性。数据在多线程下共享时容易由于同时多个线程可能更新同一个对象的信息,而造成对象数据的不同步,因为数据的不同步可能引发的错误通常不易察觉,而且可能是在程序执行了几千几万次之后,才会发生错误。这通常会发生在产品已经上线之后,甚至是程序已经执行了几年之后。 2. 举个简单的例子,设计了一个PersonalInfo类:    package ysu.hxy; public class PersonalInfo { private String name; private ...
1.  Java中的每个线程都属于某个线程组(Thread Group)管理的一员。可以使用下面的语句来取得当前线程所属的线程组名称:      Thread.currentThread().getThreadGroup().getName();       每个线程产生时,都会被归入某个线程组,这视您的 ...
1. 线程生命周期:      线程的4个主要周期状态为创建线程、可执行(Runnable)、非可执行和终止(Dead)。当实例化一个Thread并执行start()之后,线程进入Runnable状态并开始执行run()方法。      线程有优先权,由1(Thread.MIN_PRIORITY)到10( ...
Global site tag (gtag.js) - Google Analytics