??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲高清在线观看,国产精品久久久久久久久久久新郎 ,国产精品观看http://www.aygfsteel.com/sdllovelp/category/31615.html骨气、义气、豪?/description>zh-cnTue, 27 May 2008 12:07:55 GMTTue, 27 May 2008 12:07:55 GMT60HashMap排序问题http://www.aygfsteel.com/sdllovelp/archive/2008/05/27/203291.htmlsdlsdlTue, 27 May 2008 09:52:00 GMThttp://www.aygfsteel.com/sdllovelp/archive/2008/05/27/203291.htmlhttp://www.aygfsteel.com/sdllovelp/comments/203291.htmlhttp://www.aygfsteel.com/sdllovelp/archive/2008/05/27/203291.html#Feedback0http://www.aygfsteel.com/sdllovelp/comments/commentRss/203291.htmlhttp://www.aygfsteel.com/sdllovelp/services/trackbacks/203291.htmlHashMap输出排序Q以前写的接口没有考虑q个问题Q现在输求排序,可以在得到Mapl果后进行如下操作对数据q行排序Q?br />
Object[] key =   map.keySet().toArray();
//升序排序
        Arrays.sort(key);
       
        for(int i=0;i<key.length;++i)
        {
         System.out.println("Key_Id=="+key[i]+"Key_Value===="+map.get(key[i]));;
        }



sdl 2008-05-27 17:52 发表评论
]]>
java基础知识回顾http://www.aygfsteel.com/sdllovelp/archive/2008/05/21/201864.htmlsdlsdlWed, 21 May 2008 03:44:00 GMThttp://www.aygfsteel.com/sdllovelp/archive/2008/05/21/201864.htmlhttp://www.aygfsteel.com/sdllovelp/comments/201864.htmlhttp://www.aygfsteel.com/sdllovelp/archive/2008/05/21/201864.html#Feedback0http://www.aygfsteel.com/sdllovelp/comments/commentRss/201864.htmlhttp://www.aygfsteel.com/sdllovelp/services/trackbacks/201864.html     1Q抽象类Q?br />                     有时候,我们可能惌构造一个很抽象的父cd象,它可能仅仅代表一个分cL抽象概念Q它的实例没有Q何意义,因此不希望它能被实例化。例如:有一个父c?#8220;水果QFruitQ?#8221;Q它有几个子c?#8220;ҎQAppleQ?#8221;?#8220;子QOrangeQ?#8221;?#8220;香蕉QBananaQ?#8221;{。水果在q里仅仅只是作ؓ一个分c,昄水果的实例没有什么意义(好像一个h如果告诉你他C一些水果但是却不告诉你是苹果还是橘子,你很难想象他到底买的是什么。) 。而水果类又要能被子类化,q就要求我们使用抽象c(abstract classQ来解决q个问题?br /> 在java中,通过在class关键字前增加abstract修饰W,可以将一个类定义成抽象类。抽象类不能被实例化。例如:
          定义抽象cL果(FruitQ?br />           public abstract class Fruit {
                  ……
          }
           如果我们试图用以下语句来获得一个实例,无法编译成功?br />            Fruit fruit = new Fruit();
而我们仍然可以构造水果类的子c,如:
          子类“ҎQAppleQ?#8221;
           public class Apple extends Fruit {
                   ……
           }
          子类“子QOrangeQ?#8221;
           public class Orange extends Fruit {
                   ……
           }
q样p到我们的目的了?br /> 抽象c除了能象普通类一样可以拥有一般的属性和ҎQ也可以拥有抽象ҎQabstract methodQ。例如:
           抽象c?#8220;形状QShapeQ?#8221;拥有抽象Ҏdraw()?br />            public abstract class Shape {
                  ……
                  public abstract void draw();
                  ……
           }
抽象Ҏ与抽象的行ؓ相对应,通常是这个行为对父对象没有意义,而子对象有具体动作。例如方法draw()对于cShape没有意义Q而类Shape的子cȝ形(RectangleQ的Ҏdraw()可以有实际的动作Q根据矩形的四个点d矩Ş的四个边Q,子类圆(CircleQ的Ҏdraw()也可以有实际的动作(Ҏ圆心和半径画出圆周)?br /> 抽象cd以有抽象Ҏ也可以没有抽象方法;但是如果一个类有抽象方法,那这个类只能定义为抽象类?br />            如果按照以下代码c?#8220;形状QShapeQ?#8221;仍然拥有抽象Ҏdraw()Q但没有定义为抽象类Q将会编译失败?br />            public class Shape {
                  ……
                  public abstract void draw();
                  ……
           }
抽象Ҏq有一个特ҎQ它子类要么仍然保持抽象性(即不具体实现该方法ƈ仍然定义为抽象类Q,要么具体表现个方法的行ؓQ实现具体的动作或者通过抛出UnsupportedOperationException异常来表明不支持该行为)。这样也可以强化多态性?br />
2Q接口(interfaceQ?br /> java语言使用关键字interface定义一个接口。接口也是抽象对象,它甚x抽象cL抽象。接口中的方法都是抽象方法?br />     一个接口可以承其他接口;一个类通过关键字implements声明要实C个接口,q具体实现接口的Ҏ?br />            例如Q有一个接口InterfaceAQ?br />            public interface InterfaceA {
                   void methodA();
           }
           cClassA实现接口InterfaceA?br />            public class ClassA {
                   public void methodA() {
                           System.out.println("methodA of ClassA implements InterfaceA");
                   }
           }
如果是抽象类实现一个接口,那么抽象cM可以不具体实现接口的ҎQ保持其抽象性)Q而由其子cd实现?br />            抽象cClassB实现接口InterfaceAQ但是没有具体实现方法methodA()Q?br />            public abstract class ClassB {
           }
           子类ClassBSub实现接口InterfaceAQ但是没有具体实现方法methodA()Q?br />            public class ClassBSub {
                   public void methodA() {
                           System.out.println("methodA of ClassBSub the subclass of ClassB");
                   }
           }
接口和抽象类显著的共同点是接口和抽象c都可以有抽象方法?br /> 接口和抽象类的不同点有:
           (1)抽象cd以有实例变量Q而接口不能拥有实例变量,接口中的变量都是静态(staticQ的帔RQfinalQ?br />            (2)抽象cd以有非抽象方法,而接口只能有抽象Ҏ?br /> java中,cMcM间是不能多承的。java之所以禁止类与类之间的多l承是因为多l承有很大的~点?br /> 多承虽然能使子cd时拥有多个父cȝ特征Q但是其~点也是很显著的Q主要有两方面:
(1)如果在一个子cȝ承的多个父类中拥有相同名字的实例变量Q子cd引用该变量时生歧义,无法判断应该使用哪个父类的变量。例如:
           cClassAQ?br />            public class ClassA {
                   protected int varSame = 0;
           }
           cClassBQ?br />            public class ClassB {
                   protected int varSame = 1;
           }
           子类ClassCQ(假设允许cMcM间多l承Q?br />            public class ClassC extends ClassA, ClassB {
                   public void printOut() {
                           System.out.println(super.varSame);
                   }
                   public static void main(String[] args) {
                           ClassC classC = new ClassC();
                           classC.printOut();
                   }
           }
           上面E序的运行结果会是什么呢Q输?q是1Q?br /> (2)如果在一个子cȝ承的多个父类中拥有相同方法,子类中有没有覆盖该方法,那么调用该方法时生歧义,无法判断应该调用哪个父类的方法。例如:
           cClassAQ?br />            public class ClassA {
                   public void printOut() {
                           System.out.println(0);
                   }
           }
           cClassBQ?br />            public class ClassB {
                   public void printOut() {
                           System.out.println(1);
                   }
           }
           子类ClassCQ(假设允许cMcM间多l承Q?br />            public class ClassC extends ClassA, ClassB {
                   public static void main(String[] args) {
                           ClassA classA = new ClassC();
                           classA.printOut();       -------------------------  A?br />                            ClassB classB = new ClassC();
                           classB.printOut();       -------------------------  B?br />                            ClassC classC = new ClassC();
                           classC.printOut();       -------------------------  C?br />                    }
           }
           上面E序的运行结果会是什么呢QA、B、C三行的输出是0q是1Q?br /> 正因为有以上的致命缺点,所以java中禁止一个类l承多个父类Q但是幸q的是java提供了接口,q能通过接口的功能获得多l承的许多优点而又摒弃了类与类多承的~点?br /> java允许一个接口承多个父接口Q也允许一个类实现多个接口Q而这L多承有上面提到的缺炚wQ?br /> {案是没有,q是由接口的抽象性决定的?br /> 正如前面介绍的,在接口中不能有实例变量,只能有静态的帔RQ不能有具体的方法(包含Ҏ体)Q只能有抽象ҎQ因此也摒弃了多承的~点?br /> 对于一个类实现多个接口的情况,因ؓ接口只有抽象ҎQ具体方法只能由实现接口的类实现Q在调用的时候始l只会调用实现类的方法(不存在歧义)Q因此不存在多承的W二个缺点;而又因ؓ接口只有静态的帔RQ但是由于静态变量是在编译期军_调用关系的,即存在一定的冲突也会在编译时提示出错Q而引用静态变量一般直接用类名或接口名,从而避免生歧义,因此也不存在多承的W一个缺炏V?br /> 对于一个接口承多个父接口的情况也一样不存在q些~点?br /> L以下CZ?br />             接口AQ?br />             public interface InterfaceA {
                    int len = 1;
                    void output();
            }
            接口BQ?br />             public interface InterfaceB {
                    int len = 2;
                    void output();
            }
            接口Subl承接口A和接口BQ?br />             public interface InterfaceSub extends InterfaceA, interfaceB {
            }
            cXyz实现接口SubQ?br />             public class Xyz implements InterfaceSub {
                    public void output() {
                            System.out.println("output in class Xyz.");
                    }
                     public void outputLen(int type) {
                             switch(type) {
                                     case InterfaceA.len:
                                             System.out.println("len of InterfaceA=."+type);
                                             break;
                                     case InterfaceB.len:
                                             System.out.println("len of InterfaceB=."+type);
                                             break;
                             }
                    }
                   public static void main(String[] args) {
                           Xyz xyz= new Xyz ();
                           xyz .output();
                           xyz .outputLen();
                   }
           }
           以上代码不存在什么问题,但是如果试图~写以下存在冲突的代码,则会~译p|?br />            Xyz xyz = new Xyz();
           int len = xyz.len;
           System.out.println(len);
׃引入了接口,java昑־非常灉|Q也使得java中的多态性更加富有魔力?br />

sdl 2008-05-21 11:44 发表评论
]]>
java模式入门http://www.aygfsteel.com/sdllovelp/archive/2008/05/19/201509.htmlsdlsdlMon, 19 May 2008 14:08:00 GMThttp://www.aygfsteel.com/sdllovelp/archive/2008/05/19/201509.htmlhttp://www.aygfsteel.com/sdllovelp/comments/201509.htmlhttp://www.aygfsteel.com/sdllovelp/archive/2008/05/19/201509.html#Feedback0http://www.aygfsteel.com/sdllovelp/comments/commentRss/201509.htmlhttp://www.aygfsteel.com/sdllovelp/services/trackbacks/201509.htmlq几天正在看《frist-head设计模式》这本书感觉写的实不错Q内定w俗易懂Q?br />         下面是摘抄的书上面的W一个例子?/p>

        1Q重点理解变化和不变化的部分
//类Duck

public abstract class Duck {
 
 FlyBehavior flyBehavior;
 QauckBehavior qauckBehavior;
 
 public void performQuack()
 {
  qauckBehavior.quack();
 }

 public void performFly()
 {
  flyBehavior.fly();
 }
 public void swim()
 {
  System.out.println("ALL duck float!!!!");
 }
}
//飞的行ؓc?/p>

public interface FlyBehavior {
 
 public void fly();

}

public class FlyingWithWing implements FlyBehavior{

 public void fly() {
  System.out.println("I can flying!!!");
  
 }

}


public interface QauckBehavior {

 public void quack();
}


public class Quack implements QauckBehavior{

 public void quack() {
  
  //内容
 }

}


public class MallardDuck  extends Duck{
 //q里可以不在构造器中去实现Q可以在SetҎ法把变量l赋倹{?br />  //可以理解一下动态的讑֮他的行ؓ的含义?br />  //如果攑ֈSetҎ中把QuackcL者FlyingWithWing作ؓ参数传进d可以完成
 //动态设定他们的行ؓ了?br />  public MallardDuck()
 {
  //qauckBehavior =  new Quack();
  //flyBehavior = new FlyingWithWing();
  
 }
 public void setQuackBehavior(Quack quack)
 {
  //内容
  qauckBehavior =  new Quack();
 }
 //外面调用
 public void setQuackBehavior(FlyingWithWing flyWithWing)
 {
  //内容
  flyBehavior =  new FlyingWithWing();
 }
}



sdl 2008-05-19 22:08 发表评论
]]>
վ֩ģ壺 | ͼƬ| Ȩ| | Զ| ̩| | | | | Ϫ| | ػʵ| | Ӧ| ɽ| | Դ| | | | ѭ| | Զ| | ֹ| | | | Ͻ| | | | | ̨| | | | ͨ| | ƽ|