`
chenpingtai2008
  • 浏览: 58734 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论
文章列表
在Java开发特别是数据库开发中,经常会用到Class.forName( )这个方法。通过查询Java Documentation我们会发现使用Class.forName( )静态方法的目的是为了动态加载类。在加载完成后,一般还要调用Class下的newInstance( )静态方法来实例化对象以 ...
早在Java 1.2推出之时,Java平台中就引入了一个新的支持:java.lang.ThreadLocal,给我们在编写多线程程序时提供了一种新的选择。使用这个工具类可以很简洁地编写出优美的多线程程序,虽然ThreadLocal非常有用,但是似乎现在了解它 ...
一、概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。 从线程的角度看,每个线程都保持一个对其线程局部变量副本的隐式引用,只要线程是活动的并且 ThreadLocal 实例是可访问的;在线程消失之后 ...
public class LinkQueue<E> { // 内部类 private class Node { public Node(E item) { this.item = item; } private Node next; private E item; } private Node top;// 指示删除的节点 private Node bottom;// 指示要增加的节点 // 添加操作 public void add(E target) { Node newnode = new Node(target); if ( ...
public class LinkStack<E> { //内部类 private class Node { public Node(E item) { this.item = item; } private Node next; private E item; } private Node node; //判断栈是否为空 public boolean isEmpty() { return node == null; } // 出栈操作,返回栈顶元素并删除 public E pop() { if (node == null) { ...
队列的特点是先进先出,以下是队列的顺序实现,用数组完成。 //本例采用的是循环队列。 //front指示下一个出队列的元素位置 //front+size指示下一个入队列的元素位置 //因为采用循环队列,出去队列留出来的位置可作为以后入队列的元素存放的位置 //解决这种问题的方式可用%来实现 //用(front+1)%data.length;(front+size)%data.length分别来实现 //循环的问题 public class ArrayQueue<E> { private E[] data=(E[]) new Object[10]; private int fro ...
栈是具有后进先出的特点,以下是栈的顺序实现,通过数组完成的。 public class ArrayStack<E> { private E[] data = (E[]) new Object[10]; private int top = -1; //用来指示存到数组的哪个位置了     //判断栈是否为空 public boolean isEmpty() { return top < 0; }    //出栈操作,返回栈顶元素并删除 public E pop() { if (isEmpty()) { return null; } else { ...
子类重写父类方法访问权只能变大不能变小 假如有一个父类 他属于package com.demo.powera; public abstract class ParentPower {   public abstract void test(); } 有这么一个子类实现了它,假如把方法访问权从public-->private public class ChildPower extends ParentPower{ private void test() {       } } 那么对于以下这个类 public class MyTest {   private ParentPower po ...

堆的实现

堆是一棵完全二叉树,所谓的完全二叉树的意思是所有的叶子节点都处于某一层,或者处于两个相邻的层并且最底层的叶子节点处于最左侧。但是堆具有的一个特殊性质是:每个节点上的值都小于(大于)或等于那个节点上的值。 下面的代码是以小于为实现。堆可以做为一个优先队列的实现,可以成为一种排序方式。 public class Heap<E extends Comparable<E>> { private E[] data=(E[])new Object[10]; //用数组实现 int top=-1;  //用来指向元素存到数组哪个位置了 public Heap(){ ...
在java中,当我们子类要重写父类中的方法,如果父类的方法有异常声明,那么子类重写这个方法时候,所要声明的异常不应该比父类的大。只能是小等,或者可以没有。原因如下。 假如我们自定意义一个异常: public class MyExcepti ...
费了好大的功夫,写了一棵二叉搜索树,还真是不容易。如果在写一遍,估计还会放蒙会。 难点主要在删除那个地方,有点麻烦,考虑的比较多。 以下是代码: //定义节点类 public class BinaryNode<E> { private E item; private BinaryNode<E> left; private BinaryNode<E> right; public BinaryNode(E item) { this.item = item; } public E getItem() { return item; } ...

插入排序

插入排序的做法: 假设前面m个已经有序(假如是升序),那么在考虑第m+1个的时候。把第m+1个元素与第m个元素比较,如果小于第m个,那么把第m个往后移。依次类推。 剩出的那个空位即是第m+1元素所属的位子 //插入排序 public class InsertionSort { public int[] insertionSort(int[] data){                  //排序从数组的第二个元素开始 for(int i=1;i<data.length;i++){ int j,target=data[i];                           ...
简单的选择排序的思想是: 以升序为例 第一轮从第一个元素到最后一个元素中选择出最小的元素和第一个元素交换 第二轮从第二个元素到最后一个元素中选择出最小的元素和第二个元素交换 。。。。。。。。。。。。。。。 依次类推 以下是代码: //简单的选择排序 public class SimpleSelectSort { public void selectSort(int[] data) { int minlocation = 0; int i; for (i = 0; i < data.length; i++) {                           //选择出i ...
责任链模式的优点在于 将请求的发送者和接受者解藕 可以简化你的对象,因为它不需要知道链的结构 通过改变链内的成员或调动他们的次序,允许你动态的新增或删除责任。 看以下情景: 我们都知道,在学校里,每个学员都有这样的请求:不去开班会,离校,退学。而每种请求必须由不同的人来处理。 那么我们就可以写这样的一个类来处理这样的请求。 public class HandlerWithoutPattern { private String name; //处理者的名字 public HandlerWithoutPattern(String name) { this.name = name; } ...
这段时间在学习设计模式,把自己学习的心得写一下,分享一下,也让大家指出一下理解上有什么不对。这是我最早接触的一个设计模式,也是大家很熟悉的。在文章的末尾会提出一个学习过程中对这个设计模式的疑问。对于这些代码的演变过程,尤其是工厂方法到抽象工厂,不知道这样理解是否正确。请大家指正下。 场景是这样的,我想开一家店,水果专卖店,但是不知道该专卖哪种水果比较赚钱。于是有了一段一下的代码: public class Dian {      private Fruit shuiguo;      public void KaiDian(String type){     if(type.equal ...
Global site tag (gtag.js) - Google Analytics