博文
Java入门(2006-09-03 11:49:00)
摘要:Java总有它的千般好处使你选择它,但这些随便翻翻书或在网上逛一圈就能找到答案。在本文中,笔者把自己学习Java的一些切身体会和过程写出来,供初学者做个参考。
我在学习Java的过程中主要围绕以下几个方面来学习:
1.时刻提醒自己Java是一种OOP语言工具,而不仅仅是编码,只有这样才能总体把握和运用Java。
2.在学习的过程中,最好能够了解Java的底层机制,而不是仅仅停留在表层,不是抄书上的例子运行出结果就可以。要注意,即便对一个简单的例子也要有耐心去琢磨、调试、改动。
3.在学习的过程中一定要动手做、写代码,而不是抱一本书看看就行。很多东西和体会必须自己动手才能真正属于自己,最好能参与一些实际的项目。
4.在学到一定阶段后,你开始希望用学过的东西做些什么。这时的你应该开始学习一些更多、更复杂的知识,比如J2EE平台的构建、EJB的开发等。对于这一部分,我建议最好找一本较薄的书先了解一个大概,心里有个总体的认识,对更多的技术术语做个初步掌握。我认为这个阶段看看《J2EE技术实践》很不错,它可以让你了解J2EE包含的各种技术和框架,同时提供很多实际的例子来加深对J2EE的整体了解。
学习Java的兴趣和决心起了很关键的作用。在有了上述基础后,我便开始一步一步地学习Java。
Java环境的搭建
要运行Java程序,必须安装JDK。JDK是整个Java的核心,其中包括了Java编译器、JVM、大量的Java工具以及Java基础API。
可以从http://Java.sun.com下载JDK,有1.4版本和1.31版本。我的学习环境中首先,采用的是1.31版本。
解压安装。然后,进行环境设置。
1.对于Windows平台要进行以下设置:
set PATH=YOUR_INSTALL_ DIR\bin; C:\Windows;C:\Windows\Command
set classpath=. ;YOUR_INSTALL_DIR\lib\tools.jar
2.对于Linux平台要编辑/etc/profile文件:
......
Java程序员32问(2006-09-03 11:47:00)
摘要:
一,谈谈final, finally, finalize的区别。
final-修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载
finally-再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize-方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http: //www.frontfree.net/articles/services/view.asp?id=704&page=1
注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象
第四,&和&&的区别......
Java笔记交流(二)(2006-09-03 11:46:00)
摘要:91、包命名:小写字母,使用顺序反过来的域名。
92、包内的类需声明为public,否则不属于此包的方法无法使用它。
93、采用JAR文件方便维护和安装,一个JAR文件往往包含多个包,Sun J2SE所提供的标准类放在rt.jar中
。
94、J2SE提供工具软件jar来生成JAR文件:
jar cvf
jar cmvf 用m来包含自定义的说明(manifest)文件
Manifest.mf。
95、将创建的包输入进来:用import com.mycompany.shape.*;非import com.mycompany.shp;另外还需将
此JAR文件包含在类路径中,在Windows中需要设置:SET CLASSPATH=.;shapr.jar。或者可以使用:java
-classpath
96、由于和对象相关的变量属于引用类型,使用obj1=obj2;obj1只是得到一份obj2应用的副本,而不是
obj2对象本身。
97、使用clone()来复制一个对象,clone()从Object类继承。obj1=obj2.clone();obj2必须是可复制的
。
98、为了使一个用户自定义的类对象可被复制,必须使用接口Cloneable,并声明一个public方法clone()
来执行复制工作。
99、若要完成深度复制(deep copy)(包含所参考的对象和其相关的对象),则需根据对象间的阶层关系
一层层地复制下去。
100、Reflection又称introspection,因为它允许执行中地Java程序来进行自我检查,可以得到一个对象
所属类定义的成员及相关的数据,这是Java特有的功能。
101、Reflection提高像功能指针一样的功能,可在程序执行时才动态提高所以执行的类对象方法名称与
所要输入的参数。
102、首先得到一个Class对象,有两种方法
由既存类对象,使用getClass()得到一个类对象,如obj.getClass();
使用Class.forName(String className)
103、其次,使用Class提供的方法来得到该类的相关数据
St......
Java笔记交流(一)(2006-09-03 11:46:00)
摘要:、一般地,一个文件只存放一个类。当然,也可以将多个类放在同一个文件内,但只能有一个类声明为public,
此文件的名字需和声明为public的类同名。
2、Java严格区分大小写。
3、命名的习惯:类名中,各个英文名字的第一个字母使用大写,并且不要使用任何符号作为字与字之间的分隔。
4、类似C++,main()是Java程序执行的起点。Java只能执行包含main()的文件,它必须为public(热合对象都可
读取它)和,static(可被直接调用而无需有对象存在)以及void(无返回值),但这也不是绝对的。例如,
Apple和Servlet,它们不是从main()开始执行的。
5、分号(;)是用来表示一个程序语句的结束。
6、/** …… */用来生成Java程序的说明文件。
7、javap可以用来读取.class文件的内容。
8、可利用Java反编译器来得到.class文件的Java源程序代码,如Jad或Decafe。
9、为了避免他人利用反向工程的方法来解读Java程序,可使用模糊器进行保护。如JBuilder就提供了此功能,
其他还有JCloak、JProof。
10、Applet是包含在HTML网页内,在客户端浏览器执行的Java小程序,Servlet是在服务器执行的Java程序。
11、Applet小程序需要有两个文件,一是Java小程序的源程序,二是包含此小程序的HTML文件。
12、有两种执行Applet小程序的方法,一是直接使用浏览器打开该HTML文件;二是使用appletviewer来执行该HTML文件。
13、标识符必须以字母、下划线(_)或美元符号($)开头,其余部分可由前面所说的字符以及数字(0~9)所组成。
14、关键字(keyword)不能作为标识符。
15、true、false、null并不是关键字,但也不能用作标识符。
16、Java基本上有类变量、实例变量和区域(local)变量3种类型的变量。类变量和实例变量只能在方法之外
声明,而区域变量只能在方法之内声明。
17、由于类变量和实例变量并不会占据命名的空间,因此,类内的方法仍可声明同名的变量。
18、数据类型分为引用数据类型和基本数据类型。
......
使用XML的五种场合(2006-09-03 11:45:00)
摘要:使用XML的五种场合
主 题: 使用XML的五种场合[精华]
作 者: ChinaOk (蓝蝶[授人以鱼,不如授人以渔])
在很多研讨会和培训班上我遇到过许多人,他们还不明白为什么要使用XML也不知道如何
在他们的应用中使用XML。一些来自诸如Gartner公司的报告建议说,商业公司不能再做
局外人了,不能对XML置之不理。如果你还不清楚XML到底有什么好处的话,你并不是唯
一的人。
我决定把与人们和媒体关于XML话题的交谈整理成文,列出XML在应用中的五个最令人喜
爱的用法。尽管这些并不能包含XML的所有潜在应用,至少是些最重要的领域。
1、数据交换
用XML在应用程序和公司之间作数据交换已不是什么秘密了,毫无疑问应被列为第一位。
那么为什么XML在这个领域里的地位这么重要呢?原因就是XML使用元素和属性来描述数
据。在数据传送过程中,XML始终保留了诸如父/子关系这样的数据结构。几个应用程序
可以共享和解析同一个XML文件,不必使用传统的字符串解析或拆解过程。
相反,普通文件不对每个数据段做描述(除了在头文件中),也不保留数据关系结构。使
用XML做数据交换可以使应用程序更具有弹性,因为可以用位置(与普通文件一样)或用元
素名(从数据库)来存取XML数据。
2、Web服务
Web服务是最令人激动的革命之一,它让使用不同系统和不同编程语言的人们能够相互交
流和分享数据。其基础在于Web服务器用XML在系统之间交换数据。交换数据通常用XML标
记,能使协议取得规范一致,比如在简单对象处理协议(Simple Object Access Protoc
ol, SOAP)平台上。
SOAP可以在用不同编程语言构造的对象之间传递消息。这意味着一个C#对象能够与一个
J2ME程序开发新手入门九大要点 (2006-09-03 11:44:00)
摘要:
一、J2ME中需要的Java基础知识
现在有大部分人,都是从零开始学J2ME的,学习J2ME的时候,总是从Java基础开始学习,而且现在讲Java基础的书籍中都是以J2SE来讲基础,这就给学习造成了一些不必要的麻烦,下面将J2ME中用到的和不需要的Java基础知识做一个简单的说明。
J2ME中使用到的Java基础知识:
1、Java语法基础:包括基本数据类型、关键字、运算符等等
2、面向对象的思想:类和对象的概念,继承和多态等等。
3、异常处理
4、多线程
J2ME中没有用到的Java基础知识:
1、JDK中javac和java命令的使用
2、Java基础中的很多类在J2ME中没有,或者类中的方法做了大量的精简。所以建议在J2ME中熟悉类库。
3、Applet、AWT、Swing这些知识在J2ME中根本使用不到。
简单说这么多,希望学J2ME的朋友们能少走一些弯路,不足之处希望大家积极指正和补充。
二、J2ME中暂时无法完成的功能
列一些J2ME中暂时无法完成的功能,希望大家能积极补充:
1、在手机中不更改代码实现移植,主要指游戏。
2、动态修改按钮文字。
3、在Canvas上接受中文输入。
4、操作本地资源、例如地址本、已收短信息等。
5、制作破坏性的手机病毒。
6、其他等待大家来补充。
三、J2ME的跨平台性
J2ME技术源于Java,所以也具有JVM的优势,可以在支持Java的平台上进行移植,但是现在的J2ME技术在跨平台上却做的很糟糕,我们来简单看一下原因:
1、手机的屏幕尺寸不一:
这个主要在界面制作上。如果你使用的是高级用户界面,比如你做的是应用开发或者用户登陆、用户注册这样的通用功能时,一般没有什么问题。
如果你使用的是低级用户界面,比如你做的是游戏,那么你就需要考虑这个问题了。
......
用java编写xml的读写程序(2006-09-03 11:43:00)
摘要:用java编写xml的读写程序
这是读取xml文件的java程序,我调试好的。采用的是dom方式读取xml文件到Vector中。
package src;
import java.io.*;
import java.util.Vector;
import javax.xml.parsers.*;
import org.w3c.dom.*;
public class readxml {
static Document document;
private boolean validating;
public readxml() {
}
public Vector toRead(String filename) {
Vector title=new Vector();
Vector content=new Vector();
String myStr=new String();
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(validating);
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse(new File(filename));
document.getDocumentElement().normalize();
Node node = document.getFirstChild();
NodeList list = node.getChildNodes();
for (int i = 0; i < list.getLength(); i++) {
Node nodeitm = list.item(i);
if (nodeitm.getNodeName().equals("Title")) {
myStr=nodeitm.getFirstChild().ge......
Java学习从入门到精通(2006-09-03 11:41:00)
摘要:Java Learning Path (一)、工具篇
一、 JDK (Java Development Kit)
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好。
1、 JDK的下载和安装
JDK又叫做J2SE(Java2 SDK Standard Edition),可以从Sun的Java网站上下载到,http://java.sun.com/j2se/downloads.html ,JDK当前最新的版本是J2SDK1.4.2,建议下载该版本的JDK,下载页面在这里:http://java.sun.com/j2se/1.4.2/download.html。
下载好的JDK是一个可执行安装程序,默认安装完毕后会在C:\Program Files\Java\目录下安装一套JRE(供浏览器来使用),在C:\j2sdk1.4.2下安装一套JDK(也包括一套JRE)。然后我们需要在环境变量PATH的最前面增加java的路径C:\j2sdk1.4.2\bin。这样JDK就安装好了。
2、 JDK的命令工具
JDK的最重要命令行工具:
java: 启动JVM执行class
javac: Java编译器
jar: Java打包工具
javadoc: Java文档生成器
这些命令行必须要非常非常熟悉,对于每个参数都要很精通才行。对于这些命令的学习,JDK Documentation上有详细的文档。
二、 JDK D......