??xml version="1.0" encoding="utf-8" standalone="yes"?>国产成一区二区,国产精选一区,户外极限露出调教在线视频http://www.aygfsteel.com/DuYang/category/10755.html拼搏在繁华的都市zh-cnFri, 02 Mar 2007 06:32:59 GMTFri, 02 Mar 2007 06:32:59 GMT60Outer Class & Inner Classhttp://www.aygfsteel.com/DuYang/articles/49496.htmlDalston.YoungDalston.YoungThu, 01 Jun 2006 03:24:00 GMThttp://www.aygfsteel.com/DuYang/articles/49496.htmlhttp://www.aygfsteel.com/DuYang/comments/49496.htmlhttp://www.aygfsteel.com/DuYang/articles/49496.html#Feedback0http://www.aygfsteel.com/DuYang/comments/commentRss/49496.htmlhttp://www.aygfsteel.com/DuYang/services/trackbacks/49496.html                                                                     Inner Class

a> 在一个类中定义一个类Q这个类叫做内部类或者内|类(inner class).
b> 内部cd以让我们逻辑上相关的一l类l织hQƈ由外部类(outer class)
   来控制内部类的可见?
c> 当我们徏立一个inner class的时?其对象就拥有了与外部cd象之间的一U关p?
   q是通过一个特D的this inference形成的,使得内部cd象可以随意的讉K外部
   cM的所有成员?br />d> 在内部类中可以访问外部类的私有成员变量,也就是在内部cM可以随意的访?br />   外部cM的所有的成员Ҏ和变?br />e> 可以把内部类攑ֈ一个方法中来定义,但是它的使用范围必须是在q个Ҏ?br />f> 当我们在一个方法中定义一个内部类Ӟ如果我们需要在Ҏ中内部类去访问这?br />   本地变量Q方法中声明的变量)Ӟ我们必须把这个变量声明ؓfinal才行Q不?br />   ~译器会报错
eg:
 void fn(int final a)
 {
  if(true)
  {
   class Middle
   {
    private int index=70;
    class Inner
    {
     private int index=60;
     void print()
     {
      int index=80;
      System.out.println(index);  //讉Kprint()Ҏ中的index=80变量
      System.out.println(this.index); //讉KInnercȝ成员变量index=60;
      System.out.println(Middle.this.index); //讉KMiddlecȝ成员变量index=70;
      System.out.println(Outer.this.index);  //讉KOutercȝ成员变量index=100;
     }
    }
   }
  }
 }
f> 对于Innercȝ讉K权限我们可以声明为所有的(protected,private,public,default)?br />h> 对于内部cL_如果赯问权限ؓprotectedQ那么他可以在同一个类被访也可以在?br />   一个包中被讉K。而如果声明ؓprivate的那么那只能在Outerq个外部c被讉K。我?br />   可以把它生命为abstract(q个时候不能用Inner直接d例化一个内部类)Q我们可以在
   外部cM定义一个类Q从Innerz出来Q直接实例化。当我们声明为finalQ那׃能再
   z了,对于内部cL说还可以声明为staticQ那么这个时候就可以不需要同时存在外?br />   cȝ对象Q那么这个时候我们也不能讉K外部cȝ非静态的成员变量和方法。相当于切断
   了与外部内对象的联系。非静态的内部cM能在内部cLw中定义静态的Ҏ(反之可以)?br />   非static的内部类中的成员变量不能声明为static的,只在层cLstatic的内部类中可?br />   声明为static的?br />g> Z么要使用内部c?
   1.在内部类(inner class)中可以随意访问外部类中的成员Q让我们更好的管理和l织我们
   的代码。增Z码的可读性?br />   2.内部cȝ于创建适配器类,适配器类是用于实现接口的c,使用内部cL实现接口Q可?br />   更好的定位与接口兌的方法在代码中的位置?br />   3.其他的用?br />   a> 我们可以通过把内部类声明为private来隐藏接口的实现l节
   b> 我们需要派生一个类Q同时又需要去实现一个接口,如果基类中有个方法和接口中的Ҏ
   同名Q但是他们的用法不一P我们可以用内部cL解决?br />=============================================================================

内部cȝ一般用?
class Outer            //Outer class
{
 private int index=100;  //U有的变?br /> /*
 class Inner           //Inner Class,independence individual
 {                     //可以整体的把Innercȝ成是Outercȝ一个成?br />  private int index=50;
  void print()
  {
   int index=30;
   System.out.println(index);
   System.out.println(this.index);
   System.out.println(Outer.this.index);
  }
 }*/
 /*
 *InnercM嵌套层ơ有多深Q都可以随意的访问外部的成员变量
 *当我们在一个方法中定义一个内部类Ӟ如果我们需要在Ҏ中内部类去访问这?br />  *本地变量Q方法中声明的变量)Ӟ我们必须把这个变量声明ؓfinal才行Q不?br />  *~译器会报错
 void fn(final int a)
 {
  final int b=1;
  if(true)
  {
   class Middle
   {
    private int index=70;
    class Inner
    {
     private int index=60;
     void print()
     {
      int index=80;
      System.out.println(index);  //讉Kprint()Ҏ中的index=80变量
      System.out.println(this.index); //讉KInnercȝ成员变量index=60;
      System.out.println(Middle.this.index); //讉KMiddlecȝ成员变量index=70;
      System.out.println(Outer.this.index);  //讉KOutercȝ成员变量index=100;
      System.out.println(a);
      System.out.println(b);
     }
    }
   }
  }
 }
/*
 *我们可以把内部类攑ֈ一个方法中Q但是它的用范围也定在了这个方法的范围里,甚至可以攑ֈif()?br /> *代码块中{}中,它告诉我们,不管我们把Inner()嵌套有多深,它都可以随意的访问外部类中的所有成?br />  void fn()
  {
  class Inner          
  {                   
  private int index=50;
  void print()
  {
   int index=30;
   System.out.println(index);
   System.out.println(this.index);
   System.out.println(Outer.this.index);
  }
  }   
  }
  */
  static class Inner      
 {                  
  private int index=50;
  void print()
  {
    int index=80;
    System.out.println(index);  //讉Kprint()Ҏ中的index=80变量
    System.out.println(this.index); //讉KInnercȝ成员变量index=60;
    System.out.println(Outer.this.index);  //讉KOutercȝ成员变量index=100;
  }
 }
 
 void print()
 {
  //Inner inner=new Inner();
  //inner.print();
 }
 /*
 Inner getInner()
 {
  return new Inner();
 }
 */
 /*
 public static void main(String[] args)
 {
  Outer outer=new Outer();
  //outer.print();
  //Inner in=outer.getInner();q是一句错误的代码Q因为Inner是定义在Outercȝ内部的,所以对外是
  //不可见的Q这个时候需要我们,使用外部cd来调?br />  Inner in=outer.getInner(); //因ؓ现在main()Ҏ在Outerc里Q这个时候Innercd于main()Ҏ来说是可见的
  Inner in=new Inner();
  in.print();
 }*/
}
class Test
{
 /*public static void main(String[] args)
 {
  Outer outer=new Outer();
  //outer.print();
  //Inner in=outer.getInner();q是一句错误的代码Q因为Inner是定义在Outercȝ内部的,所以对外是
  //不可见的Q这个时候需要我们,使用外部cd来调?br />  Outer.Inner in=outer.getInner();
  in.print();
 }*/
 public static void main(String[] args)
 {
  Outer outer=new Outer();
  //outer.print();
  //Inner in=outer.getInner();q是一句错误的代码Q因为Inner是定义在Outercȝ内部的,所以对外是
  //不可见的Q这个时候需要我们,使用外部cd来调?br />  //Outer.Inner in=outer.getInner();
  Outer.Inner in=outer.new Inner();  //用外部类对象来?br />  in.print();
 }
}
*****************************************************************************

从内部类z的用?
/*
 *从内部类z的用?br />*/
class Car
{
 class Wheel
 {
 }
}
class PlaneWheel extends Car.Wheel
{
 PlaneWheel(Car car)
 {
  car.super();  //建立内部cd象到子类的引?br /> }
 public static void main(String[] args)
 {
  Car car=new Car();
  PlaneWheel pw=new PlaneWheel(car);
 }
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

内部cd现接?
//用内部类实现接口,接口不能被实例化
interface Animal
{
 void eat();
 void sleep();
}
class Zoo
{
 private class Tiger implements Animal
 {
  public void eat()
  {
   System.out.println("Tiger eat!");
  }
  public void sleep()
  {
   System.out.println("Tiger sleep!");
  }
 }
 
 Animal getAnimal()
 {
  return new Tiger();
 }
 /*
 Animal getAnimal()
 {
  return new Animal()
  {                       //q是是匿名的类
   public void eat()
   {
    System.out.println("Animal eat!");
   }
   public void sleep()
   {
    System.out.println("Animal sleep!");
   }
  };                   //q是是匿名的类
 }*/
}
class DoTest
{
 public static void main(String[] args)
 {
  Zoo z=new Zoo();
  Animal an=z.getAnimal();
  an.eat();
  an.sleep();
 }
}
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

基类中有个方法和接口中的Ҏ,同名Q但是他们的用法不一?
//基类中有个方法和接口中的Ҏ,同名Q但是他们的用法不一?br />interface Machine
{
 void run();
}

class Person
{
 public void run()
 {
  System.out.println("run");
 }
}

class Robot extends Person
{
 private class MachineHeart implements Machine
 {
  public void run()
  {
   System.out.println("heart run");
  }
 }
 Machine getMachine()
 {
  return new MachineHeart();
 }
}

class Work
{
 public static void main(String[] args)
 {
   Robot robot=new Robot();
   Machine m=robot.getMachine();
   m.run();
   robot.run();  
 }
}



Dalston.Young 2006-06-01 11:24 发表评论
]]>
谈Java的Clonehttp://www.aygfsteel.com/DuYang/articles/44918.htmlDalston.YoungDalston.YoungSun, 07 May 2006 13:52:00 GMThttp://www.aygfsteel.com/DuYang/articles/44918.htmlhttp://www.aygfsteel.com/DuYang/comments/44918.htmlhttp://www.aygfsteel.com/DuYang/articles/44918.html#Feedback1http://www.aygfsteel.com/DuYang/comments/commentRss/44918.htmlhttp://www.aygfsteel.com/DuYang/services/trackbacks/44918.html    我们知道在Java在java中,传参Ӟ都是以传值的形式q行。对于基本数据类型,传递的是数据的拯Q对于引用类型,传递的引用的拷贝。ؓ了获取对象的一份拷贝,我们可以利用Objectcȝclone()Ҏ。至于怎么h实现Clone我们必须做以下的事情:
1> 在派生类中覆盖基cȝclone()Qƈ声明为public?br />2> 在派生类的clone()Ҏ中,调用super.clone()?br />3> 在派生类中实现Cloneable接口?br />4> 没有抽象Ҏ的接口叫标识接口?br />5> Z么我们在zcM覆盖Object的clone()ҎӞ一定要调用super.clone()?在运行时?Object
   的clone()Ҏ能识别出你要复制的是哪一个对象,然后为此对象分配I间Qƈq行对象的复Ӟ原
   始对象的内容一一复制到新的对象空间去?br />我们看下面的例子:

class TestClone
{
 public static void main(String[] args)
   {
      Animal an1=new Animal("Dog",50);
      Animal an2=(Animal)an1.clone();
      an2.name="Fox";
      an2.weight=30;
      System.out.println(an1);
    }
}
class Animal implements Cloneable
{
   String name;
   int weight;
 public Animal(String name,int weight)
   {
       this.name=name;
       this.weight=weight;
   }
 public String toString()
  {
       return "name="+name+","+"weight="+weight;
  }
 public Object clone()
  {
     Object o=null;
  try
    {
       o=super.clone();
     }
  catch(CloneNotSupportedException e)
  {
       System.out.println(e.toString());
  }
      return o;
   }
}
q行l果如下:
F:\Java Develop>javac TestClone.java
F:\Java Develop>java TestClone
name=Dog,weight=50
我们看到我们修改an2的值ƈ没有影响到an1里的?q就是克隆的作用.是因为在q里通过Clone我们在内存中?块地方用来储存不同的an1,an2
我们在看下面一个例?我们再增加一个动物的饲养员类,来相兛_具体的每个动?
class TestClone
{
 public static void main(String[] args)
 {
  Feeder f=new Feeder("google",50);
  Animal an1=new Animal("Dog",50,f);
  Animal an2=(Animal)an1.clone();
  an2.f.name="baidu";
  an2.f.age=60;
  System.out.println(an1.f.name);
  System.out.println(an1.f.age);
 }
}

/*
class Feeder implements Cloneable
{
 String name;
 int age;
 public Feeder(String name,int age)
 {
  this.name=name;
  this.age=age;
 }
 public Object clone()
 {
  Object o=null;
  try
  {
   o=super.clone();
  }
  catch(CloneNotSupportedException e)
  {
   System.out.println(e.toString());
  }
  return o;
 }
}
*/

class Feeder
{
 String name;
 int age;
 public Feeder(String name,int age)
 {
  this.name=name;
  this.age=age;
 }
}

class Animal implements Cloneable
{
 String name;
 int weight;
 Feeder f;
 public Animal(String name,int weight,Feeder f)
 {
  this.name=name;
  this.weight=weight;
  this.f=f;
 }
 public String toString()
 {
  return "name="+name+","+"weight="+weight;
 }
 public Object clone()
 {
  Object o=null;
  //Animal o=null;
  try
  {
   o=super.clone();
  }
  catch(CloneNotSupportedException e)
  {
   System.out.println(e.toString());
  }
  //o.f=(Feeder)f.clone();
  return o;
 }
}
我们看输出结?
F:\Java Develop>javac TestClone.java
F:\Java Develop>java TestClone
baidu
60
从结果可以看出来我们修改了an2.f.name和an.f.age但是an1d生了变化,q是因ؓ我们没有对Feederc进行克?q就是浅克隆,Z解决q个问题我们需要用到Deeply克隆,java默认的克隆方式是克?
代码如下:
class TestClone
{
 public static void main(String[] args)
 {
  Feeder f=new Feeder("google",50);
  Animal an1=new Animal("Dog",50,f);
  Animal an2=(Animal)an1.clone();
  an2.f.name="baidu";
  an2.f.age=60;
  System.out.println(an1.f.name);
  System.out.println(an1.f.age);
 }
}

class Feeder implements Cloneable
{
 String name;
 int age;
 public Feeder(String name,int age)
 {
  this.name=name;
  this.age=age;
 }
 public Object clone()
 {
  Object o=null;
  try
  {
   o=super.clone();
  }
  catch(CloneNotSupportedException e)
  {
   System.out.println(e.toString());
  }
  return o;
 }
}

class Animal implements Cloneable
{
 String name;
 int weight;
 Feeder f;
 public Animal(String name,int weight,Feeder f)
 {
  this.name=name;
  this.weight=weight;
  this.f=f;
 }
 public String toString()
 {
  return "name="+name+","+"weight="+weight;
 }
 public Object clone()
 {
  //Object o=null;
  Animal o=null;
  try
  {
   o=(Animal)super.clone();
  }
  catch(CloneNotSupportedException e)
  {
   System.out.println(e.toString());
  }
  o.f=(Feeder)f.clone();
  return o;
 }
}
输出l果如下:
F:\Java Develop>javac TestClone.java
F:\Java Develop>java TestClone
google
50
java克隆是指copyc里所有没有引用类型的变量.Deeply Clone则刚好相?



Dalston.Young 2006-05-07 21:52 发表评论
]]>
正则表达式小?/title><link>http://www.aygfsteel.com/DuYang/articles/44582.html</link><dc:creator>Dalston.Young</dc:creator><author>Dalston.Young</author><pubDate>Fri, 05 May 2006 00:04:00 GMT</pubDate><guid>http://www.aygfsteel.com/DuYang/articles/44582.html</guid><wfw:comment>http://www.aygfsteel.com/DuYang/comments/44582.html</wfw:comment><comments>http://www.aygfsteel.com/DuYang/articles/44582.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/DuYang/comments/commentRss/44582.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/DuYang/services/trackbacks/44582.html</trackback:ping><description><![CDATA[ <p>在新的JDK中加入了对用正则表辑ּ的模式匹配的支持。正则表辑ּ是根据文本匹配模式的ҎQ类g~译器生成类文g的工作原理?br />在正则表辑ּ的上下文中,模式是序列的文本表示Ҏ。例如,我们想知道一个字W序列中是否存在"money"q个词,可以用模式money,<br />因ؓq是_表示该字W串的方法?br />   我们q样来检验用戯入的是否Z合法的email地址:<br />Code:<br />import java.util.regex.Pattern;<br />import java.util.regex.Matcher;</p> <p>public class TestRegex<br />{<br /> public boolean isEmail(String email)<br /> {<br />             //指定使用的模?br />  Pattern pattern=Pattern.compile<br />            ("<a href="file://%5C%5Cp%7BDigit%7D+@%5C%5Cw+%5C%5C.%5C%5Cp%7BAlpha%7D%7B2,3/">\\p{Digit}+@\\w+\\.\\p{Alpha}{2,3</a>}");<br />  String[] words=pattern.split(email);<br />  Matcher matcher=pattern.matcher(email);<br />  if(matcher.find()&&words.length==0)<br />    return true;<br />  else<br />    return false;<br /> }<br />}<br />来看怎么用它:<br />Code:<br />public class Client<br />{<br /> public static void main(String[] args)<br /> {<br />  TestRegex regex=new TestRegex();<br />  String s1="<a href="mailto:DuYang163@gmail.com">DuYang163@gmail.com</a>";<br />  String s2="<a href="mailto:feiyang@126.123.com">feiyang@126.123.com</a>";<br />  System.out.println(s1+(regex.isEmail(s1)?"?:"不是")+"Email格式!");<br />  System.out.println(s2+(regex.isEmail(s2)?"?:"不是")+"Email格式!");<br /> }<br />}<br />一些常用的表达式格?<br />文字(Literal): 表达式内M不具有特D意义的字符都被看做是一个文字,q与自n匚w?br />量词(Quantifier): 某些字符或者表辑ּQ他们被用来计算一个文字或分组可以字符列中出现的次敎ͼ以便该序列与表达式匹配?br />例:<br />? 表示出现一ơ或Ҏ不出现?br />* 表示出现零次或一ơ以?含一??br />+ 表示出现一ơ或多次?br />字符c?Character class): 一个字W类是Ҏ号内的一个字W集Q其中,匚w可以是括号内的Q意一个字W。可以把字符和量词结合v来,例如Q[acegikmoqsuwy*]<br />                        是只包含字母表中奇数字母的L字符列。某些字W列是预先定义好?<br />\d-数字(0?)<br />\DQ非数字<br />\s-I白字符Q如制表W或换行W?br />\S-非空白字W?br />\w-单字W?a到z,A到Z,0?以及下划U?<br />\W-非单字字W?其他L字符)<br />Posix 字符c?Posix character class): 某些字符仅在用于US-ASCII比较时才有效?br />例如Q?br />\p{Lower}-写字符<br />\p{Upper}-大写字符<br />\p{ASCII}-所有ASCII字符<br />\p{Alpha}-字符字符(\p{Lower}与\p{Upper}相结?<br />\p{Digit}-??的数?br />\p{Alnum}-字母数字字符<br />范围(Range): 使用短线(dash)来指定范围。例如:[A-J]表示从A到J的大写字母?br />否定(Negation): 使用脱字W^表示否定字符。例如:[^A-K]表示除A到K之外的Q何字W?/p> <img src ="http://www.aygfsteel.com/DuYang/aggbug/44582.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/DuYang/" target="_blank">Dalston.Young</a> 2006-05-05 08:04 <a href="http://www.aygfsteel.com/DuYang/articles/44582.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ԭ</a>| <a href="http://" target="_blank">̩</a>| <a href="http://" target="_blank">鶴</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ԫı</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɳƺ</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">֯</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">彧</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Զ</a>| <a href="http://" target="_blank">ǰ</a>| <a href="http://" target="_blank">ʯ</a>| <a href="http://" target="_blank">ӯ</a>| <a href="http://" target="_blank">IJ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ij</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ԫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">«Ϫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>