
Java
文章平均质量分 79
BruceZhang
计算机专业的一个小学生
展开
-
读秦小波《设计模式之禅》 -- 单例模式
新年第一天,在这里首先要祝大家新年快乐! 这篇文章中,介绍的是非常重要,也是非常常用的一种设计模式 -- 单例模式。例如,我们在电脑上登录QQ的时候,同一个QQ号码就只能登录一次,而不可能出现一个号码可以登录两次的情况;再好像我现在听歌用的播放器,我也只能打开它一次,当它在运行的时候,我不能够同时运行两个播放器客户端。。。等等的这些模式都是单例的,即它能保证一个类就只有一个实例对象。原创 2015-01-01 18:24:17 · 2126 阅读 · 1 评论 -
Java:使用匿名内部类在方法内部定义并启动线程
下面的代码展示了在一个方法中,通过匿名内部类定义一个Thread,并Override它的run()方法,之后直接启动该线程。这样的代码可用于在一个类内部通过另起线程来执行一个支线任务,一般这样的任务并不是该类的主要设计内容。public class StartFromMethod { private Thread t; private int number; private转载 2013-07-28 14:56:50 · 4481 阅读 · 0 评论 -
浅谈java异常
一. 异常的定义在《java编程思想》中这样定义 异常:阻止当前方法或作用域继续执行的问题。虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来看待异常。绝对一点说异常就是某种意义上的错误,就是问题,它可能会导致程序失败。之所以java要提出异常处理机制,就是要告诉开发人员,你的程序出现了不正常的情况,请注意。记得当初学习java的时候,异常总是搞不太清楚,不知道这个异常是什么转载 2013-07-26 23:11:04 · 1527 阅读 · 4 评论 -
java中重载与重写的区别
首先我们来讲讲:重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。 (2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方转载 2013-07-26 21:08:05 · 1685 阅读 · 0 评论 -
Java中的DeskTop类
在Jdk1.6以后新增加了一个类--DeskTop,在JDK中它的解释是这样的:The Desktop class allows a Java application to launch associated applications registered on the native desktop to handle a URI or a file. Supported operations i翻译 2013-08-03 14:30:53 · 4556 阅读 · 0 评论 -
Java中Integer和String浅谈
Java中的基本数据类型有八种:int、char、boolean、byte、long、double、float、short。Java作为一种面向对象的编程语言,数据在Java中也是一种对象。我们用基本数据类型创建的对象,如 int x = 0;这里的x只有值这个属性,没有(或者很少)有其他的方法。这在一些需要对数据进行操作时变的很不方便,程序员需要自己编写很多代码去实现一些常用的功能,增加了工作量转载 2013-07-25 16:09:28 · 2391 阅读 · 0 评论 -
Java之泛型编程
1.概念 泛型就是参数化类型。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。2.案例1)先看下面案例://不适用泛型编程Apple app0=new Apple();Apple app1=new Apple(); List li = new ArrayList();li.add(app0); //添加非需要类型时发现不了错误。转载 2013-07-25 16:05:03 · 1423 阅读 · 0 评论 -
Java异步通信
服务器端:import java.net.InetSocketAddress;import java.net.Socket;import java.net.SocketAddress;import java.nio.ByteBuffer;import java.nio.CharBuffer;import java.nio.channels.SelectionKey;import jav转载 2013-08-01 13:53:35 · 2556 阅读 · 0 评论 -
java实现异步调用实例
在JAVA平台,实现异步调用的角色有如下三个角色: 调用者 取货凭证 真实数据 一个调用者在调用耗时操作,不能立即返回数据时,先返回一个取货凭证.然后在过一断时间后凭取货凭证来获取真正的数据. 所以连结调用者和真实数据之间的桥梁是取货凭证.我们先来看它的实现:public class FutureTicket{ private Object data = null; private boo转载 2013-08-01 13:35:29 · 8345 阅读 · 0 评论 -
Java的深拷贝和浅拷贝
熟悉C++的朋友对这个话题应该很熟悉,浅拷贝就是指两个对象共同拥有同一个值,一个对象改变了该值,也会影响到另一个对象。深拷贝就是两个对象的值相等,但是互相独立。本来想把以前写的一篇文章扩充一下,没想到居然牵扯出很多复杂的问题。本文测试环境是windows xp sp3中文版、NetBeans6.7.1,JDK1.6-update16。这里抛砖引玉,希望大家能提宝贵意见。 首先,Java中常用转载 2013-07-23 16:45:04 · 1194 阅读 · 0 评论 -
java中的匿名内部类总结
匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象方法abstract class Person { public abstract void eat();} class Child extends Person { public转载 2013-07-28 14:42:34 · 1396 阅读 · 0 评论 -
Eclipse & MyEclipse下常用快捷键介绍
相信常做Java应用开发的朋友经常会用到一些快捷键,这篇文章我就总结下我用到的一些快捷键。 1.导入所需要的包 举个例子吧,我们写一个集合类--ArrayList,这时需要的包叫做 import java.util.ArrayList; 如果Eclipse中没有为我们提供这个包的引用,这时就需要我们自己去添加,如果手动去查,效率会很低,所以,Eclipse中提供了一个快捷键来引原创 2013-08-23 09:32:26 · 2976 阅读 · 2 评论 -
读秦小波《设计模式之禅》 -- 工厂模式
设计模式是一种非常有用的编程技巧,它对于代码的重构有些非常重要的作用,对于软件开发人员来说,需要理解并尝试着使用这些设计的方法。 个人感觉《设计模式之禅》这本书中讲解的非常具体,每个模式都配以适当的例子,非常适合学习设计模式的初学者,当然,程杰的《大话设计模式》也是非常好的一本书,都可以拿过来当做一本工具书随时查看理解设计的奥妙。 工厂模式 这个模式的名字原创 2014-12-25 08:36:29 · 3560 阅读 · 2 评论 -
Java 原子变量类
今天看了下 Java中的同步机制,刚刚开始看,内容比较浅,其中有一个被称为原子变量类的东西感觉还是很有意思的,所以,记录一下吧。 首先,我们先看一段这样的代码:public class AtomicClassTest implements Runnable{ /** * @param args */ public static void main(String[] args原创 2014-11-21 16:38:35 · 2522 阅读 · 0 评论 -
Java--Dom解析XML文件
之前写过几篇关于Java中解析XML文件的方法,不过,感觉不够简单,今天重写了一遍代码,用到的是方法是Dom,其中加入了日志记录功能--Log4j。 好了,不多说了,先把XMl文件贴出来 201.55.46.79 3389 DLUT F:\rec 研发 可以看到,这个XML文件不像标准的那样在根下面再包含一层,而是直接Document过后是Element,所以,原创 2013-08-17 18:35:22 · 2695 阅读 · 0 评论 -
写Java程序要体现面向对象
对于之前写的一篇文章现在想想存在不足之处,之前写的测试ArrayList和LinkedList的各项操作性能比较的程序没有体现面向对象的封装特性,所以,今天把代码重新写了一遍,其实改动的地方也很少,只是在文件中添加了一个抽象类。之前的那篇文章如下:http://blog.youkuaiyun.com/dlutbrucezhang/article/details/9931025 现在思考一个问题,我想原创 2013-08-17 17:41:52 · 1950 阅读 · 0 评论 -
java中Log4j的使用
当我们的代码存在有疑问的地方且不想去处理时,我们就需要把程序的日志信息输出,这时我们会用到一个类--Log4j,想用这个类,我们需要下载Log4j的引用包,下载地址如下:http://logging.apache.org/log4j/2.x/download.html 在我们编写测试代码之前,第一步,我们需要把下载的包引用到我们的程序中,右键点击项目选中BuildPath之后选择你的包所原创 2013-08-13 16:00:05 · 1890 阅读 · 0 评论 -
java操作xml文件--修改节点
上一篇文章我介绍了SAX方法解析XML文件的过程,这篇文章讲解的内容是利用DOM方法修改XML文件的节点内容。 下面依然是首先贴出XML文件: 172.16.6.17 8080 最高人民检查院 E:\rec 测试 我们可以看到这个文件非常简单,只有一个根节点,所以我在代码中就只是用到根节点,当然,如果遇到复杂的XML文件,解析方法是相同的,只需要指定某一层的原创 2013-08-13 13:32:14 · 10663 阅读 · 6 评论 -
java操作XML文件--读取内容
先把问题贴出来:编写一个可以解析xml及修改xml内容的工具类 由于我以前做过Android应用程序开发,之前也解析过xml文件,所以,这道题不是很难,这篇文章我先解决第一个问题,怎样去解析xml文件。 做过Android的朋友应该知道,Android中有几种解析xml文件的方法,最简单的当然是SAX(Simple API for XML),不过,这里需要注意一点,正是由于SA原创 2013-08-13 11:22:47 · 2650 阅读 · 0 评论 -
ArrayList和LinkedList的各项操作性能比较
如果用java编写程序,我们通常存储易变的数据集合时用到的数据结构往往是ArrayList,不过,在JDK中还存在另一个结构--LinkedList,只不过我们通常不用,原因在于性能问题,下面,我就以一个问题来分析下这两个结构的性能差别。问题:自己编写一个测试程序,测试验证ArrayList和LinkedList在做增、删、改、遍历等操作上的性能差异。首先,我先给出ArrayList的测试类:pa原创 2013-08-12 17:28:57 · 2933 阅读 · 0 评论 -
java中遍历map的几种方法介绍
喜欢用Java写程序的朋友都知道,我们常用的一种数据结构map中存储的是键值对,我们一般存储的方式是:map.put(key, value);而提取相应键的值用的方法是:map.get(key); 确实,这些就是map的基本方法,可是,如果我想查看map中所有的元素怎么办?也就是想遍历其中的每个元素。 下面,我就介绍三种方法遍历map:说明:我在map中存储的值是优快云一博主原创 2013-08-11 15:57:14 · 2223 阅读 · 0 评论 -
java反射详解
下面开始正文。【案例1】通过一个对象获得完整的包名和类名?123456789101112131415package Reflect; /** * 通过一个对象获得完整的包名和类名 * */class Demo{ //other codes...}转载 2013-07-21 19:08:58 · 1575 阅读 · 0 评论 -
java中Error与Exception有什么区别
Error类和Exception类都继承自Throwable类。Error的继承关系:java.lang.Object java.lang.Throwable java.lang.Error Exception的继承关系:java.lang.Objectjava.lang.Throwable java.lang.Exception 二者的不同之处: Exception:1.可转载 2013-07-18 09:32:26 · 1693 阅读 · 0 评论 -
Java 中的关键字 final
final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 final类不能被继承,没有子类,final类中的方法默认是final的。 final方法不能被子类的方法覆盖,但可以被继承。 final成员变量表示常量,只能被赋值一次,赋值后值不再改变。 final不能用于原创 2013-05-29 22:51:06 · 1475 阅读 · 1 评论 -
java 静态方法和实例方法的区别
静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。 下面几个例子展示了这一区别。 1、调用静态方法示例。//--原创 2013-05-29 16:53:23 · 2784 阅读 · 0 评论 -
Java 中的反射机制
反射,reflection,听其名就像照镜子一样,可以看见自己也可以看见别人的每一部分。在java语言中这是一个很重要的特性。下面是来自sun公司官网关于反射的介绍: Reflection is a feature in the Java programming language. It allows an executing Java program to examine原创 2013-05-16 10:47:25 · 1895 阅读 · 1 评论 -
Java 语言 集合架构(Set规则集)
集合中存在的是没有重复元素的对象的序列。Java提供了相应的类和接口存储这样的元素--Set规则集。下面以一个例子学习Set集合架构,其中包含注释:package com.brucezhang.test;import java.util.HashSet;import java.util.Iterator;import java.util.LinkedHashSet;import java原创 2013-05-28 14:36:55 · 1602 阅读 · 0 评论 -
Java实现二维码QRCode的编码和解码
涉及到的一些主要类库编码lib:Qrcode_swetake.jar (官网介绍-- http://www.swetake.com/qr/index-e.html) 解码lib:qrcode.jar (官网介绍-- http://sourceforge.jp/projects/qrcode/)原创 2013-03-14 10:11:58 · 2183 阅读 · 0 评论 -
Java与Unicode
Java与Unicode: Java的class文件采用utf8的编码方式,JVM运行时采用utf16。Java的字符串是unicode编码的。总之,Java采用了unicode字符集,使之易于国际化。Java支持哪些字符集: 即Java能识别哪些字符集并对它进行正确地处理?查看Charset 类,最新的JDK支持160种字符集。可以通过static方法原创 2013-03-14 10:28:33 · 2456 阅读 · 0 评论 -
Java中的Timer和Timer Task详解
Java Timer&TimerTask原理分析如果你使用Java语言进行开发,对于定时执行任务这样的需求,自然而然会想到使用Timer和TimerTask完成任务,我最近就使用 Timer和TimerTask完成了一个定时执行的任务,实现得没有问题,但当在TimerTaks的run()方法中使用 Thread.sleep()方式时,可能会出现奇怪的现象,好像Timer失效了,网上查了原创 2013-02-21 13:38:50 · 8262 阅读 · 0 评论 -
Java获取当前的系统时间
一. 获取当前系统时间和日期并格式化输出:import java.util.Date;import java.text.SimpleDateFormat;public class NowString {public static void main(String[] args) { SimpleDateFormat df = new SimpleDateFormat("原创 2013-02-16 00:27:57 · 13970 阅读 · 0 评论 -
Java中的匿名内部类
匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。这就要采用另一种形式的new语句,如下所示: new 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体。如果匿名类对另一个类进行扩展,它的主体可原创 2013-02-16 00:19:14 · 2168 阅读 · 0 评论 -
Java内存管理之软引用(Soft Reference)
软引用(Soft Reference)的主要特点是具有较强的引用功能。只有当内存不够的时候才回收这类内存,因此在内存足够的时候,他们通常不被回收。另外,这些引用对象还能保证在Java 抛出OutOfMemory异常之前,被设置为null。他可以用于实现一些常用资源的缓存,实现Cache的功能,保证最大限度的使用内存而不引起OutOfMemory异常。 下面是软引用的实现代码:impor原创 2013-06-03 09:34:59 · 2822 阅读 · 0 评论 -
深入Java关键字instanceof
深入Java关键字instanceof instanceof关键字用于判断一个引用类型变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例。 举个例子:public interface IObject { } public class Foo implements IObject{ } public class Test extends Foo{ } public clas转载 2013-07-17 20:39:26 · 1208 阅读 · 0 评论 -
java常用集合类详解(有例子,集合类糊涂的来看!)
Framework集合框架是一个统一的架构,用来表示和操作集合.集合框架主要是由接口,抽象类和实现类构成.接口:蓝色;实现类:红色Collection|_____Set(HashSet)| |_____SortedSet(TreeSet)|_____List(LinkedList,ArrayList)Collection:集合层次中的根接口,JDK没有提供这个接口的实现类。Set:转载 2013-07-15 20:58:23 · 2797 阅读 · 0 评论 -
Java基于Socket文件传输示例
这个实例中的socket文件传输采用了缓冲输入/输出流来包装输出流,再采用数据输入/输出流进行包装,加快传输的速度。先来看服务器端的程序。1.服务器端import java.io.BufferedInputStream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;imp转载 2013-06-13 19:27:53 · 1960 阅读 · 3 评论 -
Java 利用接口实现回调
在 Java 支持方法指针之前,Java 接口不能提供一种实现回调的好方法。如果您习惯于传递在事件驱动编程模型中调用的函数指针,则您会喜欢本技巧。 熟悉 MS-Windows 和 X Window System 事件驱动编程模型的开发人员,习惯于传递在某种事件发生时调用(即“回调”)的函数指针。Java 的面向对象模型目前并不支持方法指针,这样似乎就不可能使用这种很好的机制。但我们并不是一点办法都原创 2013-06-04 14:58:50 · 2146 阅读 · 0 评论 -
Java 接口和继承
1.JAVA里没有多继承,一个类只能有一个父类。而继承的表现就是多态。一个父类可以有多个子类,而在子类里可以重写父类的方法(例如方法print()),这样每个子类里重写的代码不一样,自然表现形式就不一样。这样用父类的变量去引用不同的子类,在调用这个相同的方法print()的时候得到的结果和表现形式就不一样了,这就是多态,相同的消息(也就是调用相同的方法)会有不同的结果。举例说明: //父类pub原创 2013-06-04 10:38:51 · 1798 阅读 · 0 评论 -
Java Garbage Collection
1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了释放没用原创 2013-06-03 22:12:04 · 2737 阅读 · 0 评论 -
ExecutorService生命周期
ExecutorService接口继承了Executor接口,定义了一些生命周期的方法public interface ExecutorService extends Executor { void shutdown(); List shutdownNow(); boolean isShutdown(); boolean isTerminated(); boolean awai原创 2013-06-02 22:50:51 · 1463 阅读 · 0 评论