
Java SE
文章平均质量分 51
Alex_zhuang
这个作者很懒,什么都没留下…
展开
-
添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?
问题:添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身? 答:对象的引用。以下代码可以证明:Java代码 import java.util.ArrayList; import java.util.List; public class Test5 { public static void main(St转载 2012-03-03 19:33:05 · 9039 阅读 · 0 评论 -
IO(Input Output)流
IO流基本概念IO流用来处理设备之间的数据传输Java对数据的操作是通过流的方式Java用于操作流的对象都是在IO包上流按操作数据分为两种:字节流和字符流流按流向分为:输入流,输出流。字节流的抽象基类:InputStream,OutputStream字符流的抽象基类:Reader,Writer注:由这4个类派生出来的子类名称都是以其父类名作为子类名的后缀。原创 2011-10-31 21:05:13 · 718 阅读 · 0 评论 -
IO流对象的序列化
当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。把Java对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为Java对象的过程称为对象的反序列化。对象的序列化主要有两种用途:1) 把对象的原创 2011-11-05 09:11:55 · 971 阅读 · 0 评论 -
Java多语言编码问题解析
Java 编码 :字符串变成字节数组 ,String --> byte[] ,str.getBytes(charsetName);Java 解码 :字节数组变成字符串 , byte[]--> String ,new String(byte[],charsetName);I/O 操作中存在的编码我们知道涉及到编码的地方一般都在字符到字节或者字节到字符的转换上,而需要这种转换的原创 2011-11-04 18:17:04 · 683 阅读 · 0 评论 -
使用递归显示某个文件目录下所有文件名
列出指定目录下所有内容,因为目录下还有目录,而我们只要使用同一个列出目录功能的函数完成即可。也就是函数自身调用自身。这种表现形式或者编程手法,我们称之为递归。下面是显示出某个文件目录下所有文件名的Demo code:package javase.day18;import java.io.File;import java.math.BigInteger;public cla原创 2011-11-04 16:49:54 · 2600 阅读 · 0 评论 -
Java中Runtime对象
Java中的Runtime对象并没有提供构造函数 --> 说明该类不可使用new 来创造对象--> 该类的方法可能都是静态的--> 发现该类的API中还有非静态方法--> 说明该类肯定提供了方法来获取本类对象,而且该方法是静态的,并返回值类型是本类类型-->由以上信息可以看出该类使用了单例设计模式来完成使用Runtime对象可以打开程序可执行文件(exe文件),启动原创 2011-10-30 20:55:09 · 1712 阅读 · 0 评论 -
Java中System对象的使用
关于Java中使用的System对象,我们经常使用的是Systme.out.print ,而且也仅仅知道这是一个可以在控制台打印出语句,而没有去深究它的内在实现原理。下面我就详细地介绍System对象。 1.JDK中有如下定义:.The System class contains several useful class fields and methods. It cannot be i原创 2011-10-30 08:20:51 · 6531 阅读 · 1 评论 -
一篇不错的讲解Java异常的文章----感觉很不错,读了以后很有启发
六种异常处理的陋习你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? 1 OutputStreamWriter out = ... 2 java.sql.Connection conn = ... 3 try { // ⑸ 4 Statement stat = conn.createSta转载 2012-01-07 16:47:08 · 1262 阅读 · 0 评论 -
Java的内存泄漏
问题的提出Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或JVM的问题。其实,这种想法是不正确的,因为Java也存在内存泄露,但它的表现与C++不同。随着越来越多的服务器程序采用Java技术,转载 2012-01-07 16:36:20 · 525 阅读 · 0 评论 -
Java泛型简明教程
泛型是Java SE 5.0中引入的一项特征,自从这项语言特征出现多年来,我相信,几乎所有的Java程序员不仅听说过,而且使用过它。关于Java泛型的教程,免费的,不免费的,有很多。我遇到的最好的教材有:The Java TutorialJava Generics and Collections, by Maurice Naftalin and Philip Wadler转载 2012-01-07 11:37:55 · 738 阅读 · 0 评论 -
利用Java读写锁设计缓冲类
为了提高性能,Java提供了读写锁,在读的地方使用读锁,在写的地方使用写锁,灵活控制,如果没有写锁的情况下,读是无阻塞的,在一定程度上提高了程序的执行效率。注意: 在同一线程中,持有读锁后,不能直接调用写锁的lock方法 ,否则会造成死锁。package com.javase.thread;import java.util.HashMap;import java.util.co原创 2011-12-29 15:42:35 · 819 阅读 · 0 评论 -
Java多线程之Semephore
Semaphore 可以维护当前访问自身的线程个数,并提供了同步机制。使用Semaphore可以控制同时访问资源的线程个数,例如,实现一个文件允许的并发访问数。单个信号量的Semaphore对象可以实现互斥锁的功能,并且可以是由一个线程获得了“锁”,再由另一个线程释放“锁”,这可应用于死锁恢复的一些场合。package com.javase.thread;import java原创 2011-12-29 16:37:32 · 986 阅读 · 0 评论 -
定义一个交通灯枚举
定义一个交通灯枚举,包含红灯、绿灯、黄灯,需要有获得下一个灯的方法,例如:红灯获取下一个灯是绿灯,绿灯获取下一个灯是黄灯。package com.alex.question1;public enum TrafficLight { RED,GREEN,YELLOW; public static TrafficLight getNextLight(TrafficLight curr原创 2012-01-05 10:33:13 · 5089 阅读 · 0 评论 -
交通灯管理系统
交通灯管理系统需求:模拟实现十字路口的交通灯管理系统逻辑,具体需求如下:Ø 异步随机生成按照各个路线行驶的车辆。例如: 由南向而来去往北向的车辆 ---- 直行车辆 由西向而来去往南向的车辆 ---- 右转车辆 由东向而来去往南向的车辆 ---- 左转车辆 。。。Ø 信号灯忽略黄灯,只考虑红灯和绿灯。Ø 应原创 2011-12-20 17:04:00 · 912 阅读 · 0 评论 -
Java使用UDP实现数据的传输
UDP基本概念用户数据报协议(UDP)是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 UDP 协议基本上是 IP 协议与上层协议的接口。 UDP 协议适用端口分别运行在同一台设备上的多个应用程序。UDP协议有如下的特点: 1、UDP传送数据前并不与对方建立连接,即UDP是无连接的,在传输数据前,发送方和接收方相互交换信息使双方同步。原创 2011-11-05 17:58:36 · 4060 阅读 · 0 评论 -
Java使用TCP实现数据传输
TCP所提供服务的主要特点: 1.面向连接的传输; 2.端到端的通信; 3.高可靠性,确保传输数据的正确性,不出现丢失或乱序; 4.全双工方式传输; 5.采用字节流方式,即以字节为单位传输字节序列; 6.紧急数据传送功能。TCP传输需要建立客户端和服务器端,即Socket和Server Socket , 建立连接后,通过Socket中的IO流进行数据的传原创 2011-11-07 21:36:45 · 23077 阅读 · 3 评论 -
Java中的注解
注解(Annotation ) 是JDK 1.5 的新特性,现已应用于Spring , EJB ,JPA... 使用注解是一种趋势。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注释是以‘@注释名’在代码中存在的,根据注释参数的个数,我们可以将注释分为:标记注释、单值注释、完整注释三类。它们都不会直接影响到程序的语义,只是作为注释(标识)存在,我们可以通过反射机制编程实现对这些元原创 2011-12-08 09:27:10 · 4468 阅读 · 0 评论 -
Java中的反射
反射就是把Java类中的各种成分映射成相应的Java类。Constructor 类代表某个类中的一个构造方法*得到某个类所有的构造方法:Constructors[] constructors = Class.forName("java.lang.String").getConstructors();*得到某个类的一个构造方法:Constructor constructor =原创 2011-12-06 21:17:53 · 515 阅读 · 0 评论 -
银行业务调度系统
银行业务调度系统需求:模拟实现银行业务调度系统逻辑,具体需求如下:Ø 银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。Ø 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。Ø 异步随机生成各种类型的客户,生成各类型用户的概率比例为: VIP客户 :普通客户 :快速客户 =原创 2011-12-20 17:25:17 · 519 阅读 · 0 评论 -
Java多线程之CountDownLatch
CountDownLatch犹如倒计时计数器,调用CountDownLatch对象的countDown方法就将计数器减1,当计数器为0时,则所有等待者或单个等待者开始执行。package com.javase.thread;import java.util.Random;import java.util.concurrent.CountDownLatch;import java.uti原创 2011-12-29 17:51:03 · 1537 阅读 · 1 评论 -
线程同步工具类--CyclicBarrier
CyclicBarrier表示大家彼此等待,等大家集合好后才开始出发,分散活动后又在指定地点集合碰面package com.javase.thread;import java.util.Random;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier原创 2011-12-29 17:22:04 · 632 阅读 · 0 评论 -
使用反射调用方法
定义一个标准的JavaBean,名叫Person,包含属性name、age。使用反射的方式创建一个实例、调用构造函数初始化name、age,使用反射方式调用setName方法对名称进行设置,不使用setAge方法直接使用反射方式对age赋值。package com.alex.question2;import java.lang.reflect.InvocationTargetExcep原创 2012-01-05 10:57:20 · 2416 阅读 · 0 评论 -
写一个ArrayList类的代理
写一个ArrayList类的代理,其内部实现和ArrayList中完全相同的功能,并可以计算每个方法运行的时间。package com.alex.question3;import java.io.Serializable;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;impor原创 2012-01-05 11:24:30 · 3573 阅读 · 0 评论 -
字符串排序与统计
统计字符串”abadcdffbaeba”中每个字符出现了多少次,按次数排序并输出。例如:c : 1,e : 1,d : 2,f : 2,b : 3,a : 4package com.heima.question7;import static org.junit.Assert.assertEquals;import java.util.ArrayList;import java.u原创 2012-01-05 11:41:09 · 1931 阅读 · 0 评论 -
Java基本数据类型测试
Java共有8种基本数据类型(今天看到Bruce Eckel的Thinking in Java第三版上把void也作为了一种基本数据类型,但这是讲不通的),其大小及包装器类型如下:基本类型 大小(bit) 包装器类型boolean ---- Booleanchar 16转载 2011-12-19 16:38:23 · 1230 阅读 · 0 评论 -
JavaBean的简单内省操作
JDK中提供了对JavaBean进行操作的一些API,这套API就成为内省。对JavaBean的简单内省操作:import java.beans.BeanInfo;import java.beans.IntrospectionException;import java.beans.Introspector;import java.beans.PropertyDescriptor;原创 2011-12-07 22:16:46 · 614 阅读 · 0 评论 -
Java枚举类型
---------------------- android培训、java培训、期待与您交流! ---------------------- Java枚举类型是从JavaSE 5.0 版本开始出现的,它允许限制一个变量只能具有几个预定义的值中的某个值 。枚举类型有利于减少代码中的bug , 使得在编译器阶段便可以保证定义的变量在预测范围之类。Demo code :pub原创 2011-12-05 00:58:49 · 586 阅读 · 0 评论 -
深入Java对象及元素的存储区域
在Java平台上开发应用程序的时候,有一个很大的特点就是其是在应用程序运行的时候才建立对象。换句话说,在程序运行的时候,才会最终确定对象的归属,即对象应该存储在什么地方。由于存储在不同的区域,其在性能上会有所不同。为此作为Java程序开发人员需要了解各个存储区域的特点以及对性能的影响。然后再根据需要来调整应用程序的区域分配。总的来说,在操作系统中有五个地方可以用来保存应用程序运行中的数据。这类区域转载 2011-12-19 16:24:26 · 552 阅读 · 0 评论 -
Java中的泛型
什么是泛型?泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。可以在集合框架(Collection framework)中看到泛型的动机。例如,Map 类允许您向一个 Map 添加任意类的对象转载 2011-12-09 17:31:46 · 714 阅读 · 0 评论 -
关于Java的Hashcode方法
有许多人学了很长时间的Java,但一直不明白hashCode方法的作用,我来解释一下吧。首先,想要明白hashCode的作用,你必须要先知道Java中的集合。 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set。你知道它们的区别吗?前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。那么这里就有一个比较严重的问题了:要想保证元素不重复转载 2011-12-06 22:21:18 · 440 阅读 · 0 评论 -
Java网络编程
网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习。 在 学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的。首先来问一个问题:你 会打手机吗?很多人可能说肯定会啊,不就是按按电话转载 2011-11-06 10:52:49 · 1466 阅读 · 0 评论 -
JAVA中文字符编码问题详解 控制台输出,字符编码格式转换
JAVA的中文字符乱码问题一直很让人头疼。特别是在WEB应用中。网上的分析文章和解决方案都很多,但总是针对某些特定情况的。很多次遇到乱码问题后, 经过极为辛苦的调试和搜索资料后终于解决,满以为自己已经掌握了对付这些字符乱码怪兽的诀窍。可当过段时间,换了个应用或换了个环境,又会碰到那讨厌的火 星文,并再次无所适从。于是下决心好好整理一下中文字符编码问题,以方便自己记忆,也为其他程序员兄弟们提供一份参转载 2011-11-20 19:54:23 · 8851 阅读 · 0 评论 -
Java多线程同步死锁例程
在计算机领域有一个很经典的问题——哲学家进餐问题。在一个桌子旁边,围坐着五个哲学家,每个哲学家左右手边各有一支筷子。要求每个哲学家必须同时拿起两支筷子才可以吃饭。开始吃饭的时候每个哲学家都去拿身边的筷子,这样每个哲学家的手里就只有一支筷子,哲学谁也不想先将筷子放下,都希望别的哲学家先放下筷子。这样每个哲学家都吃不到饭。 上面的问题同样也会在计算机中线程调度的时候发生。假设在程序原创 2011-12-20 12:02:17 · 938 阅读 · 0 评论 -
使用Executors
java.util.concurrent包中的(Executor)可以管理Thread对象,从而简化了并发编程。Executor允许管理异步任务的执行,而无需显式地管理线程的声明周期。Executor是Java SE5/6中启动任务的优选方法。此类中提供的一些方法有: 1.1 public static ExecutorService newCachedThreadPool(原创 2011-12-21 10:02:29 · 793 阅读 · 0 评论 -
线程间通信-生产者消费者
对于多个生产者和消费者:1.不要用if ,而要定义while判断标记,使得被唤醒的线程再一次判断标记;2.需要使用notifyAll唤醒对方线程。因为之用notify,容易出现只唤醒本方线程的情况,导致程序中的所有线程都等待。但使用notifyAll不仅仅会唤醒对方线程,也会唤醒本方线程,这种解决方案并不是很好。package com.javase.thread;publi原创 2011-12-28 17:27:33 · 785 阅读 · 0 评论 -
Java语言的类型安全
Java是强类型语言,也就是说,编译器会对代码进行检查,确保变量的每一次赋值,方法的每一次调用都是符合类型的。如果有任何不想符合的情况,Java编译器就会给出错误。Java的类型检查是基于这样一个简单的事实:每一个变量的声明都给出一个类型,每一个方法(包括构造器)的声明都给出一个特征,Java编译器会针对任何表达式推断出一个明显类型(Apparent Type),Java编译器可以基于明显类型原创 2011-12-28 11:43:08 · 4894 阅读 · 0 评论 -
传统线程同步通讯技术
子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程循环100,如此循环50次,请写出程序。面向对象设计经验:如要用到共同数据(包括同步锁)或共同算法的若干个方法应该归在同一个类身上,这种设计正好体现了高内聚和程序的健壮性。public class TradtionalThreadCommunication { static boolean threadF原创 2011-12-28 10:56:08 · 698 阅读 · 0 评论 -
实现类似于Spring的可配置的AOP框架
AopFrameworkTest.java import java.io.InputStream;import java.util.Collection;public class AopFrameworkTest { public static void main(String[] args) { InputStream is = AopFrameworkTest.class原创 2011-12-15 14:57:44 · 852 阅读 · 0 评论 -
Java 创建动态类和查看方法列表信息
Sample code :import java.lang.reflect.Constructor;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import java.lang.reflect.Type;impor原创 2011-12-14 21:00:24 · 6332 阅读 · 1 评论 -
Java 类加载器
类加载器(class loader)是 Java中的一个很重要的概念。类加载器负责加载 Java 类的字节代码到 Java 虚拟机中。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Clas原创 2011-12-14 10:47:29 · 669 阅读 · 0 评论