??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲视频小说图片,色偷偷女男人的天堂亚洲网,亚洲国产综合自在线另类http://m.tkk7.com/mark1207/category/27894.htmlMyEclipse, Java EE, Spring, Struts, Hibernate, JPA, SWT, Swing, AJAX, JavaScript,SOAzh-cnFri, 09 May 2008 07:04:40 GMTFri, 09 May 2008 07:04:40 GMT60java基本cd计算与运符试Q一Q?/title><link>http://m.tkk7.com/mark1207/archive/2008/05/09/199449.html</link><dc:creator>Mark</dc:creator><author>Mark</author><pubDate>Fri, 09 May 2008 03:44:00 GMT</pubDate><guid>http://m.tkk7.com/mark1207/archive/2008/05/09/199449.html</guid><wfw:comment>http://m.tkk7.com/mark1207/comments/199449.html</wfw:comment><comments>http://m.tkk7.com/mark1207/archive/2008/05/09/199449.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/mark1207/comments/commentRss/199449.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/mark1207/services/trackbacks/199449.html</trackback:ping><description><![CDATA[H然有h问vQ自己做了些验Q把l果记录下来?br /> <br /> java的几U数值基本类型:(x)int,short,long,float,double<br /> <br /> 试代码Q?br /> <br /> <p> public static void main(String[] args) {<br /> <br />   short x = 100;<br />   long b = 2;<br />   int a = 2;<br />   double y=1.1;<br />   float z=(float) 1.2;<br />   double c=1.1;<br />   float d=(float) 1.2;<br />   <br />   a=x+a;<br />   x+=1.1;<br />   b=b+a;<br />   y=y-1;<br />   z=z-1;<br />   c=c+1;<br />   d=d+1;<br />   <br />   System.out.println(a);<br />   System.out.println(x);<br />   System.out.println(b);<br />   System.out.println(z);<br />   System.out.println(y);<br />   System.out.println(c);<br />   System.out.println(d);</p> <p>  c=c+d;<br />   System.out.println(c);<br />   c=c-d;<br />   System.out.println(c);<br />   d=(float) (d-1.1);<br />   System.out.println(d);<br />  }<br /> <br /> q行l果Q?br /> <br /> 102<br /> 101<br /> 104<br /> 0.20000005<br /> 0.10000000000000009<br /> 2.1<br /> 2.2<br /> 4.3000000476837155<br /> 2.0999999999999996<br /> 1.1<br /> <br /> 试说明Q?br /> <br /> 不同cd数据做计时按照计算中最大范围数据类型返回,例如Qa=x+a;(如果负值对象是较小范围的类型就需要强转类型,否则?x)报?<br /> doublecd做加时运精度准,做减q算时有_ֺ偏差Q且和floatcd怺作加减操作都?x)出现精度缺失?br /> +=W号做运不牉|cd转换问题Q按照负值对象的cdq回?br /> </p> <img src ="http://m.tkk7.com/mark1207/aggbug/199449.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/mark1207/" target="_blank">Mark</a> 2008-05-09 11:44 <a href="http://m.tkk7.com/mark1207/archive/2008/05/09/199449.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaE序员的学习(fn)目标Q破坏源E序Q(转,_ֽ文章Q推荐)(j)http://m.tkk7.com/mark1207/archive/2008/04/21/194413.htmlMarkMarkSun, 20 Apr 2008 16:35:00 GMThttp://m.tkk7.com/mark1207/archive/2008/04/21/194413.htmlhttp://m.tkk7.com/mark1207/comments/194413.htmlhttp://m.tkk7.com/mark1207/archive/2008/04/21/194413.html#Feedback0http://m.tkk7.com/mark1207/comments/commentRss/194413.htmlhttp://m.tkk7.com/mark1207/services/trackbacks/194413.htmlJava作ؓ(f)一门编E语aQ最好的学习(fn)Ҏ(gu)是写代码。当你学?fn)一个类以后Q你可以自己写个简单的例子E序来运行一下,看看有什么结果,然后再多调用几个cȝҎ(gu)Q看看运行结果,q样非常直观的把cȝ学会(x)了,而且记忆非常深刻。然后不应该满把代码调通,你应该想想看如果我不q样写,换个方式Q再试试行不行。记得哪个高q学?fn)编E就是个破坏的过E,把书上的例子Q自己学?fn)Documentation~写的例子在q行通过以后Q不断的试着用不同的Ҏ(gu)实现Q不断的试破坏代码的结构,看看它会(x)有什么结果。通过q样的方式,你会(x)很彻底的很精通的掌握Java。D个例子,我们都编q?a target="_bank">Hello Worldq个E序?   
public class HelloWorld {

  public static void main(String[] args) {

  System.out.println("Hello World");

  }

  }


        很多初学者不是很理解Z么mainҎ(gu)一定要q样来定义public static void main(String[] args)Q能不能不这样写?包括我刚学习(fn)Java的时候也有这L(fng)疑问。想知道{案?很简单,你把main改个名字q行一下,看看报什么错误,然后Ҏ(gu)出错信息q行分析;把main的public取掉Q在试试看,报什么错?staticLq能不能q行;不知道mainҎ(gu)是否一定要传一个String[]数组的,把String[]Ҏ(gu)Q改?a target="_bank">int[]Q或者String试试?不知道是否必dargs参数名称的,也可以把argsҎ(gu)别的名字Q看看运行结果如何。我当初学习(fn)Java的时候就是这样做的,把Hello WorldE序反复改了七八ơ,不断q行Q分析运行结果,最后就d明白Z么mainҎ(gu)是这样定义的了?

  此外Q我对于staticQpublicQprivateQExceptionQtry{ }catch {}finally{}{等一开始都不是很懂Q都是把参考书上面的例子运行成功,然后开始破坏它Q不断的Ҏ(gu)自己心里面的疑问来重新改写程序,看看能不能运行,q行出来是个什么样子,是否可以得到预期的结果。这栯然比较费旉Q不q一个例子程序这样反复破坏几ơ之后。我对q个相关的知识彻底学通了。有时候甚x意写一些错误的代码来运行,看看能否得到预期的运行错误。这样对于编E的掌握是及(qing)其深ȝ。其中特别值得一提的?a target="_bank">JDK有一个非常棒的调试功?verbose?/p>

  java –verbose

  javac –verbose 以及(qing)其它很多JDK工具都有q个选项

  -verbose 可以昄在命令执行的q程中,JVM都依ơ加载哪里ClassQ通过q些宝贵的调试信息,可以帮助我们分析出JVM在执行的q程中都q了些什么。另外,自己在学?fn)过E中Q写的很多的q种破坏例程Q应该有意识的分门别cȝ保存下来Q在工作中积累的典型例程也应该定期整理,日积月篏Q自己就有了一个代码库了。遇到类似的问题Q到代码库里?Copy & Paste QSearch & ReplaceQ就好了Q极大提高了开发速度。最理想的情冉|把一些通用的例E自己再抽象一层,形成一个通用的类库,装好。那么可复用性就更强了。所以我觉得其实不是特别需要例E的Q自己写的破坏例E就是最好的例子Q如果你实在对自己写的代码不攑ֿ的话Q我强烈推荐你看看JDK基础cd的Java源代码。在JDK安装目录下面?x)有一个src.zipQ解开来就可以完整的看到整个JDK基础cdQ也是rt.jar的Java源代码,你可以参考一?a target="_bank">Sun是怎么写JavaE序的,规范是什么样子的。我自己在学?fn)Java的类库的时候,当有些地方理解的不是很清楚的时候,或者想更加清晰的理解运作的l节的时候,往往?x)打开相应的类的源代码Q通过看源代码Q所有的问题都会(x)一扫而空?/p>

Mark 2008-04-21 00:35 发表评论
]]>
Java关键字new和newInstance的区别方??http://m.tkk7.com/mark1207/archive/2008/04/21/194411.htmlMarkMarkSun, 20 Apr 2008 16:19:00 GMThttp://m.tkk7.com/mark1207/archive/2008/04/21/194411.htmlhttp://m.tkk7.com/mark1207/comments/194411.htmlhttp://m.tkk7.com/mark1207/archive/2008/04/21/194411.html#Feedback0http://m.tkk7.com/mark1207/comments/commentRss/194411.htmlhttp://m.tkk7.com/mark1207/services/trackbacks/194411.html  Java中工厂模式经怋用newInstance()Ҏ(gu)来创建对象,因此从ؓ(f)什么要使用工厂模式上可以找到具体答案?例如Q?/p>

  
class c = Class.forName(“Example”);

  factory = (ExampleInterface)c.newInstance();

        其中ExampleInterface是Example的接口,可以写成如下形式Q?/p>

  
String className = "Example";

  class c = Class.forName(className);

  factory = (ExampleInterface)c.newInstance();

        q一步可以写成如下Ş式:(x)

  
String className = readfromXMlConfig;//从xml 配置文g中获得字W串

  class c = Class.forName(className);

  factory = (ExampleInterface)c.newInstance();

        上面代码已经不存在Example的类名称Q它的优Ҏ(gu)Q无论ExamplecL么变化Q上qC码不变,甚至可以更换Example的兄弟类Example2 , Example3 , Example4……Q只要他们承ExampleInterface可以?/p>

  ?a target="_bank">JVM的角度看Q我们用关键字new创徏一个类的时候,q个cd以没有被加蝲。但是用newInstance()Ҏ(gu)的时候,必M证:(x)1、这个类已经加蝲;2、这个类已经q接了。而完成上面两个步骤的正是Class的静态方法forName()所完成的,q个静态方法调用了启动cd载器Q即加蝲java API的那个加载器?/p>

  现在可以看出QnewInstance()实际上是把newq个方式分解Z步,即首先调用Class加蝲Ҏ(gu)加蝲某个c,然后实例化?q样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灉|性,提供l了一U降耦的手段?/p>

  最后用最单的描述来区分new关键字和newInstance()Ҏ(gu)的区别:(x)

  newInstance: q型。低效率。只能调用无参构造?/p>

  new: 强类型。相寚w效。能调用Mpublic构造?/p>

Mark 2008-04-21 00:19 发表评论
]]>
Java语言中的参数传??http://m.tkk7.com/mark1207/archive/2008/04/18/194071.htmlMarkMarkFri, 18 Apr 2008 09:01:00 GMThttp://m.tkk7.com/mark1207/archive/2008/04/18/194071.htmlhttp://m.tkk7.com/mark1207/comments/194071.htmlhttp://m.tkk7.com/mark1207/archive/2008/04/18/194071.html#Feedback0http://m.tkk7.com/mark1207/comments/commentRss/194071.htmlhttp://m.tkk7.com/mark1207/services/trackbacks/194071.html         和其它程序设计语acMQJava语言的参C递也分ؓ(f)两种Q?/div>
1?nbsp;按g?by value)
适用范围Q?U基本数据类型、String对象
特点Q在内存中复制一份数据,把复制后的数据传递到Ҏ(gu)内部
作用Q在Ҏ(gu)内部改变参数的|外部数据不会(x)跟着发生改变
2?nbsp;按址传?by address)
适用范围Q数l、除String以外的其他所有类型的对象
特点Q将对象的地址传递到Ҏ(gu)内部
作用Q在Ҏ(gu)内部修改对象的内容,外部数据也会(x)跟着发生改变
基础CZ代码Q?/div>
    public class Test1{
    public static void t1(int n){
        n = 10;
    }
    public static void t2(String s){
               s = "123";
    }
    public static void t3(int[] array){
        array[0] = 2;
    }
    public static void main(String[] args){
           int m = 5;
        t1(m);
        System.out.println(m);
        String s1 = "abc";
        t2(s1);
        System.out.println(s1);
           int[] arr = {1,2,3,4};
        t3(arr);
        System.out.println(arr[0]);
    }   
   }
         按照上面的参C递规则,该代码的输出l果应该是:(x)5 abc 2。因为intcd是按g递,所以把参数m传递到Ҏ(gu)t1Ӟ相当于又复制了一份m的|在方法t 1内部修改的是复制后的|所以m的g变,s1的输出和mcM。而arr是数l,属于按址传递,也就是把arr的地址传递到了方法t3内部Q在Ҏ(gu)t3内部修改数组中的值时Q原来的内容也发生改变?/div>
         以上Ҏ(gu)是Java语言中的规定Q在语法上无法指定参C递是按g递还是按址传递,但是可以通过下面的变换实玎ͼ(x)
1?nbsp;对于按g递的参数Q如果需要在Ҏ(gu)调用以后修改参数的|可以利用q回值来实现?/div>
2?nbsp;对于按g递的参数Q如果需要在Ҏ(gu)内部修改时原来的参数不改变,则可以在Ҏ(gu)内部重新创徏该对象实现?/div>
CZ代码如下Q?/div>
public class Test2{
    public static int t1(int n){
        n = 10;
        return n;
    }
    public static String t2(String s){
                  s = "123";
                  return  s;
    }
    public static void t3(int[] array){
        //创徏新的数组q赋?/div>
        int[] newArray = new int[array.length];
        //数据拯
       System.arraycopy(array,0,newArray,0,array.length);
        newArray[0] = 2;
    }
    public static void main(String[] args){
                  int m = 5;
        //重新赋?/div>
        m = t1(m);
        System.out.println(m);
        String s1 = "abc";
        //重新赋?/div>
        s1 = t2(s1);
        System.out.println(s1);
                  int[] arr = {1,2,3,4};
        t3(arr);
        System.out.println(arr[0]);
    }   
}
q样Q程序的输出l果将是:(x)10 123   1?/div>
在实际的E序开发中Q可以根据需要用类似的l构来进行实现?/div>
         下面再介l一个参C递的常见应用Q利用参C递实现返回|q样的功能在IOc设计的readҎ(gu)中大量用。示例代码如下:(x)
public class Test3{
    public static void initArray(int[] array){
                  for(int i = 0;i < array.length;i++){
                            array[i] = i;
        }
    }
    public static void main(String[] args){
                  int[] a = new int[10];
        initArray(a);
        for(int i = 0;i < a.length;i++){
                            System.out.println(a[i]);
        }
    }
}
         在该CZ代码中,在initArrayҎ(gu)内部修改了数l的g后,外部数组a的g?x)发生改变,间接实现了返回值的效果。当?dng)在该CZ代码中,因ؓ(f)只返回一个参敎ͼ所以作用体现的不明显,如果需要返回多个参数时Q用按址传递是一U不错的L?/div>
    因时间仓促,疏漏之处隑օQ请大家U极补充和指正?/div>

Mark 2008-04-18 17:01 发表评论
]]>ObjectOutputStream和ObjectInputStreamhttp://m.tkk7.com/mark1207/archive/2008/04/14/192751.htmlMarkMarkMon, 14 Apr 2008 05:53:00 GMThttp://m.tkk7.com/mark1207/archive/2008/04/14/192751.htmlhttp://m.tkk7.com/mark1207/comments/192751.htmlhttp://m.tkk7.com/mark1207/archive/2008/04/14/192751.html#Feedback0http://m.tkk7.com/mark1207/comments/commentRss/192751.htmlhttp://m.tkk7.com/mark1207/services/trackbacks/192751.htmlObjectOutputStream和ObjectInputStream

--ObjectOutputStream

ObjectInputStream cL复以前?ObjectOutputStream cd列化后的基本cd数据和对象?

ObjectOutputStream ?ObjectInputStream 分别利用 FileOutputStream ?FileInputStream 能支持应用程序实现对象图象的E_存储?/p>

ObjectInputStream 可用于恢复以前序列化q的对象。另外其它一些情况也使用此类Q诸如用一?Socket 在主机间传递对象时Q?/p>

或在q程通讯pȝ中ؓ(f)实现参数和参变量的通讯而进行对象传递时?

ObjectInputStream 保证从流中创建的图象中的所有对象的cd?Java 虚拟Z出现的类匚w。用标准机制按需装蝲相应cR?

只有支持 java.io.Serializable ?java.io.Externalizable 接口的对象才能从中d。?readObject Ҏ(gu)从该中

d一个对象?Java 的安全造型应该用于获取期望cd。在 Java ? 串和数组都是对象且可当作是序列化q程中的对象?/p>

dӞ它们需要{换ؓ(f)所需cd?

另外基类型也可?DataInput 中的正确Ҏ(gu)从该中d?

对象的缺省逆序列化机制每个域的内Ҏ(gu)复ؓ(f)它被写入时的值和cd。逆序列化q程中忽略申明ؓ(f)暂时的或静态的域?/p>

对其它对象的引用促那些对象必须从流中读取。用引用共享机制正地恢复对象的图象。逆序列化时L分配新对象,

防止重写已存在的对象?

d一个对象同q行一个新对象的构造子cM。ؓ(f)该对象分配的内存初始化ؓ(f)I?NULL)。ؓ(f)非序列化c调用无参构造子Q?/p>

然后序列化cȝ域从该流中恢复,恢复从最接近 java.lang.object 的序列化对象开始,到指定对象结束?

例如d在示例中写入 ObjectOutputStream 中的:(x)


 FileInputStream istream = new FileInputStream("t.tmp");
 ObjectInputStream p = new ObjectInputStream(istream);
 int i = p.readInt();
 String today = (String)p.readObject();
 Date date = (Date)p.readObject();
 istream.close();
 
c通过实现 java.io.Serializable ?java.io.Externalizable 接口来控制它们的序列化?/p>

实现序列化接口可以对象能保存和恢复它的完整状态,可以使类在写入流和从中d的期间内q行改进?/p>

它自动地遍历对象间的引用Q保存和恢复完整图象。在序列化和逆序列化处理q程中需要特定句柄的可序列化c,

必须实现如下q两个方法:(x)


 private void writeObject(java.io.ObjectOutputStream stream)
     throws IOException;
 private void readObject(java.io.ObjectInputStream stream)
     throws IOException, ClassNotFoundException;
 
利用 writeObjectmethod Ҏ(gu)一个特D类的对象的状态写入某后Q相应的 readObject Ҏ(gu)负责读取和恢复q些数据?/p>

此方法不必关心状态是属于它的父类q是子类??ObjectInputStream d数据恢复单个域的状态,q将之赋l该对象的恰当域?/p>

使用 DataInput Ҏ(gu)d基本数据cd?/p>

序列化操作对没有实现 java.io.Serializable 接口的对象,不读取或分配它的域倹{非序列化对象的子类可以是序列化的?/p>

在这U情况下Q非序列化类必须有一个无参构造子Q它的域能使用此构造子完成初始化?在此情况下,

子类负责保存和恢复非序列化类的状态。通常情况父类的域是可存储?公有的、包或保护的)Q?/p>

或存在用于恢复它的状态的可用的获取或设|方法?

ObjectInputStream 能获取逆序列化一个对象期间出现的M异常Q一旦出现异常,则放弃读q程?

实现外部接口可以使对象完全控制此对象序列化Ş式的内容和格式?/p>

调用外部接口的方法:(x)writeExternal ?readExternal 保存和恢复对象状态。当一个类实现了这些方法时Q?/p>

它们p使用 ObjectOutput ?ObjectInput Ҏ(gu)的所有方法写入或d它们自己的状态。对象负责管理它出现的相应版本?


ObjectOutputStream

public class ObjectOutputStream
extends OutputStream
implements ObjectOutput, ObjectStreamConstants
c?ObjectOutputStream ?Java 对象中的基本数据cd和图元写入到一?OutputStream 对象中。可使用 ObjectInputStream dq些对象?/p>

另外使用此流对应的文件能存储q些对象。如果该是一个网l通讯,则在另一C机或另一个处理机上可重徏q些对象?

只有支持 java.io.Serializable 接口的对象才能被写入该流。对每个可序列化的对象进行编码,包括相应cȝ名称和标讎ͼ

对象的属性和数组|以及(qing)初始化对象时引用的Q何其它对象等?

使用 writeObject 一个对象写入该。Q一对象Q包括串和数l,均采?writeObject Ҏ(gu)被写入?/p>

也能多个对象或基类型对象写入此。反q来Q必Mq些对象被写入的相同cd和相同顺序,

从相应的 ObjectInputstream 中dq些对象?

基类型也可?DataOutput 中的正确Ҏ(gu)写入此流。串对象也可使用 writeUTF Ҏ(gu)写入?/p>

一个对象的~省序列化机制将写入对象的类Q类标记和所有的非暂时的和非静态的属性倹{?/p>

其它对象(除暂时的或静态的属?的引用也促使以上这些对象被写入?使用׃n机制Q对单一对象的多ơ引用进行编码,

以至对象的图元能被存储ؓ(f)与它原来写入时有相同的Ş状?

例如写入一个对象,此对象能?ObjectInputStream 中读出:(x)


 FileOutputStream ostream = new FileOutputStream("t.tmp");
 ObjectOutputStream p = new ObjectOutputStream(ostream);
 p.writeInt(12345);
 p.writeObject("Today");
 p.writeObject(new Date());
 p.flush();
 ostream.close();
 
在序列化处理q程中需要特定句柄的c,必须使用如下q些恰当的标记实现特定的Ҏ(gu)Q?

 private void readObject(java.io.ObjectInputStream stream)
     throws IOException, ClassNotFoundException;
 private void writeObject(java.io.ObjectOutputStream stream)
     throws IOException
 
writeObject Ҏ(gu)负责写特定类的对象的状态,以相应?readObject Ҏ(gu)能存储它?/p>

此方法不必关心写入对象的父类或子cȝ状态。?writeObject Ҏ(gu)或基本类型支持的 DataOutput

Ҏ(gu)每个域的状态保存到 ObjectOutputStream 中?

序列化操作不能输出没有实?java.io.Serializable 接口的Q一对象的域。非序列化对象的子类可以是序列化的?

在这U情况下Q非序列化类必须有一个无参构造子Q它的域能被初始化?在此情况下,子类负责保存和恢复非序列化类的状态?

通常情况父类的域是可存储?公有的、包或保护的)Q或存在用于恢复它的状态的可用的获取或设|方法?

实现抛出 NotSerializableException 异常?writeObject ?readObject Ҏ(gu)能阻止一个对象的序列化?

ObjectOutputStream 获取这个异常,q放弃这个序列化q程。实现外部接口可以对象完全控制此对象序列化形式的内容和格式?

调用外部接口的方法:(x)writeExternal ?readExternal 保存和恢复对象状态。当一个类实现了这些方法时Q?/p>

它们p使用 ObjectOutput ?ObjectInput Ҏ(gu)的所有方法写入或d它们自己的状态。对象负责管理它出现的相应版本?


import java.io.*;
import java.util.*;

public class Logon implements Serializable {

       private Date date = new Date();
       private String username;
       private transient String password;


       Logon(String name, String pwd) {
              username = name;
              password = pwd;
       }


       public String toString() {
              String pwd = (password == null) ? "(n/a)" : password;
              return "logon info: \n " + "username: " + username + "\n date: " + date + "\n password: " + pwd;
       }


       public static void main(String[] args) throws IOException, ClassNotFoundException {
              Logon a = new Logon("Morgan", "morgan83");
              System.out.println( "logon a = " + a);
              ObjectOutputStream o = new ObjectOutputStream( new FileOutputStream("Logon.out"));
              o.writeObject(a);
              o.close();

              int seconds = 5;
              long t = System.currentTimeMillis() + seconds * 1000;
              while(System.currentTimeMillis() < t) ;

              ObjectInputStream in = new ObjectInputStream( new FileInputStream("Logon.out"));
              System.out.println( "Recovering object at " + new Date());
              a = (Logon)in.readObject();
              System.out.println("logon a = " + a);
       }
}
 

cLogon是一个记录登录信息的c,包括用户名和密码。首先它实现了接口SerializableQ这标志着它可以被序列化?/p>

之后再mainҎ(gu)里ObjectOutputStream o = new ObjectOutputStream( new FileOutputStream("Logon.out"));

新徏一个对象输出流包装一个文件流Q表C对象序列化的目的地是文件Logon.out。然后用Ҏ(gu)writeObject开始写入?/p>

惌q原的时候也很简单ObjectInputStream in = new ObjectInputStream( new FileInputStream("Logon.out"));

新徏一个对象输入流以文件流Logon.out为参敎ͼ之后调用readObjectҎ(gu)可以了?/p>

 



Mark 2008-04-14 13:53 发表评论
]]>
JAVA正则表达?U常用功?/title><link>http://m.tkk7.com/mark1207/archive/2008/04/01/190068.html</link><dc:creator>Mark</dc:creator><author>Mark</author><pubDate>Tue, 01 Apr 2008 06:02:00 GMT</pubDate><guid>http://m.tkk7.com/mark1207/archive/2008/04/01/190068.html</guid><wfw:comment>http://m.tkk7.com/mark1207/comments/190068.html</wfw:comment><comments>http://m.tkk7.com/mark1207/archive/2008/04/01/190068.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/mark1207/comments/commentRss/190068.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/mark1207/services/trackbacks/190068.html</trackback:ping><description><![CDATA[正则表达式在字符串处理上有着强大的功能,sun在jdk1.4加入了对它的支持 <br /> <br /> 下面单的说下它的4U常用功能:(x)<br /> <br /> 查询Q?br /> <br /> String str="abc efg ABC";<br /> 正则表达式在字符串处理上有着强大的功能,sun在jdk1.4加入了对它的支持 <br /> <br /> 下面单的说下它的4U常用功能:(x)<br /> <br /> 查询Q?br /> <br /> String str="abc efg ABC";<br /> <br /> String regEx="a|f";   //表示a或f <br /> <br /> Pattern p=Pattern.compile(regEx);<br /> <br /> Matcher m=p.matcher(str);<br /> <br /> boolean rs=m.find();<br /> <br /> 如果str中有regExQ那么rs为trueQ否则ؓ(f)flase。如果想在查找时忽略大小写,则可以写成Pattern p=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);<br /> <br /> <strong>提取Q?/strong><br /> String regEx=".+\\\\(.+)$";<br /> <br /> String str="c:\\dir1\\dir2\\name.txt";<br /> <br /> Pattern p=Pattern.compile(regEx);<br /> <br /> Matcher m=p.matcher(str);<br /> <br /> boolean rs=m.find();<br /> <br /> for(int i=1;i<=m.groupCount();i++){<br /> <br /> System.out.println(m.group(i));<br /> <br /> }<br /> <br /> 以上的执行结果ؓ(f)name.txtQ提取的字符串储存在m.group(i)中,其中i最大gؓ(f)m.groupCount();<br /> <br /> <strong>分割Q?/strong><br /> <br /> String regEx="::";<br /> <br /> Pattern p=Pattern.compile(regEx);<br /> <br /> String[] r=p.split("xd::abc::cde");<br /> <br /> 执行后,r是{"xd","abc","cde"}Q其实分割时q有跟简单的Ҏ(gu)Q?br /> <br /> String str="xd::abc::cde";<br /> <br /> String[] r=str.split("::");<br /> <br /> <strong>替换Q删除)(j)Q?/strong><br /> <br /> String regEx="a+"; //表示一个或多个a<br /> <br /> Pattern p=Pattern.compile(regEx);<br /> <br /> Matcher m=p.matcher("aaabbced a ccdeaa");<br /> <br /> String s=m.replaceAll("A");<br /> <br /> l果?Abbced A ccdeA"<br /> <br /> 如果写成IZQ既可达到删除的功能Q比如:(x)<br /> <br /> String s=m.replaceAll("");<br /> <br /> l果?bbced  ccde"<br /> <br /> <strong>附:(x)</strong><br /> <br /> \d {於 [0-9] 数字 <br /> \D {於 [^0-9] 非数?nbsp;<br /> \s {於 [ \t\n\x0B\f\r] I白字元 <br /> \S {於 [^ \t\n\x0B\f\r] 非空白字?nbsp;<br /> \w {於 [a-zA-Z_0-9] 数字或是英文?nbsp;<br /> \W {於 [^a-zA-Z_0-9] 非数字与英文?nbsp;<br /> <br /> ^ 表示每行的开?br /> $ 表示每行的结?br /> <br /> String regEx="a|f";   //表示a或f <br /> <br /> Pattern p=Pattern.compile(regEx);<br /> <br /> Matcher m=p.matcher(str);<br /> <br /> boolean rs=m.find();<br /> <br /> 如果str中有regExQ那么rs为trueQ否则ؓ(f)flase。如果想在查找时忽略大小写,则可以写成Pattern p=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);<br /> <br /> <strong>提取Q?/strong><br /> String regEx=".+\\\\(.+)$";<br /> <br /> String str="c:\\dir1\\dir2\\name.txt";<br /> <br /> Pattern p=Pattern.compile(regEx);<br /> <br /> Matcher m=p.matcher(str);<br /> <br /> boolean rs=m.find();<br /> <br /> for(int i=1;i<=m.groupCount();i++){<br /> <br /> System.out.println(m.group(i));<br /> <br /> }<br /> <br /> 以上的执行结果ؓ(f)name.txtQ提取的字符串储存在m.group(i)中,其中i最大gؓ(f)m.groupCount();<br /> <br /> <strong>分割Q?/strong><br /> <br /> String regEx="::";<br /> <br /> Pattern p=Pattern.compile(regEx);<br /> <br /> String[] r=p.split("xd::abc::cde");<br /> <br /> 执行后,r是{"xd","abc","cde"}Q其实分割时q有跟简单的Ҏ(gu)Q?br /> <br /> String str="xd::abc::cde";<br /> <br /> String[] r=str.split("::");<br /> <br /> <strong>替换Q删除)(j)Q?/strong><br /> <br /> String regEx="a+"; //表示一个或多个a<br /> <br /> Pattern p=Pattern.compile(regEx);<br /> <br /> Matcher m=p.matcher("aaabbced a ccdeaa");<br /> <br /> String s=m.replaceAll("A");<br /> <br /> l果?Abbced A ccdeA"<br /> <br /> 如果写成IZQ既可达到删除的功能Q比如:(x)<br /> <br /> String s=m.replaceAll("");<br /> <br /> l果?bbced  ccde"<br /> <br /> <strong>附:(x)</strong><br /> <br /> \d {於 [0-9] 数字 <br /> \D {於 [^0-9] 非数?nbsp;<br /> \s {於 [ \t\n\x0B\f\r] I白字元 <br /> \S {於 [^ \t\n\x0B\f\r] 非空白字?nbsp;<br /> \w {於 [a-zA-Z_0-9] 数字或是英文?nbsp;<br /> \W {於 [^a-zA-Z_0-9] 非数字与英文?nbsp;<br /> <br /> ^ 表示每行的开?br /> $ 表示每行的结?br /> <img src ="http://m.tkk7.com/mark1207/aggbug/190068.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/mark1207/" target="_blank">Mark</a> 2008-04-01 14:02 <a href="http://m.tkk7.com/mark1207/archive/2008/04/01/190068.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>技术辞典:(x)Java术语Q封?/title><link>http://m.tkk7.com/mark1207/archive/2008/03/17/186723.html</link><dc:creator>Mark</dc:creator><author>Mark</author><pubDate>Mon, 17 Mar 2008 03:46:00 GMT</pubDate><guid>http://m.tkk7.com/mark1207/archive/2008/03/17/186723.html</guid><wfw:comment>http://m.tkk7.com/mark1207/comments/186723.html</wfw:comment><comments>http://m.tkk7.com/mark1207/archive/2008/03/17/186723.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/mark1207/comments/commentRss/186723.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/mark1207/services/trackbacks/186723.html</trackback:ping><description><![CDATA[<strong>术语解释Q?/strong></descript>装有数据和实现Ҏ(gu)Q因此用户就可以其视ؓ(f)一个提供服务的黑匣子,可向其中d实例变量和方法,也可删除或改变其中的实例变量和方法。但只要提供的服务保持不变,使用该程序代码的p可以l箋使用它而不必被重写。另见实例变量、实例方法?<br /> <img src ="http://m.tkk7.com/mark1207/aggbug/186723.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/mark1207/" target="_blank">Mark</a> 2008-03-17 11:46 <a href="http://m.tkk7.com/mark1207/archive/2008/03/17/186723.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何正确的封装Javac?/title><link>http://m.tkk7.com/mark1207/archive/2008/03/17/186722.html</link><dc:creator>Mark</dc:creator><author>Mark</author><pubDate>Mon, 17 Mar 2008 03:44:00 GMT</pubDate><guid>http://m.tkk7.com/mark1207/archive/2008/03/17/186722.html</guid><wfw:comment>http://m.tkk7.com/mark1207/comments/186722.html</wfw:comment><comments>http://m.tkk7.com/mark1207/archive/2008/03/17/186722.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/mark1207/comments/commentRss/186722.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/mark1207/services/trackbacks/186722.html</trackback:ping><description><![CDATA[装c要保证装内容的高度统一性,q些Ҏ(gu)都大大简化了cd装的可维护性和重调用性?br />   可维护?br />   既然大家都知道重载是面向对象E序设计的很重要l成部分Q那么你可以看出软g的可l护性的重要性。如果能正确地封装类Q你可以减很多函数的更改?br />   <br />   在同一装里严密地联结各个c?br />   严密地联l封装中的各个类可以得到高凝聚的装。如果两个类展示出很好的联结性,那么q两个类很有可能被经常地调用以提供联pL便的服务。所以当在设计你的封装时Q你可以最大限度地减小装之间的依靠性,以避免各个封装的冲突?br />   <br />   在同一装里类要统一改变<br />   昄的,当其他类改变Ӟ各个严密l合的类也同样受到媄(jing)响。Q一个类的更攚w?x)导致与q一cȝ关的cȝ相应更改Q至,cM的函数必L攏V你可以通过在同一装里严密联l类来避免这些风险?br />   <br />   然而,一些联l不严密的类也被工程的其他改变而改变。在q样的情况下Q你应该把这些类攑֜同一装。因为独立的cL变时Q它们会(x)产生其他的负影响?br />   <br />   在不同封装里cM要一赯?br />   装启发的可行性取决于是否装能提供真正的联结。即使类能经常地一赯调用Q它们却不能一赯改变。所认你必须把这些类q行独立装。当?dng)q就意味着引入多个装来调用独立的cR这一Ҏ(gu)的优Ҏ(gu)显而易见的?br />   <br />   在一个封装里对一个类的依赖也?x)生对其他cȝ依赖Q这是必然的。当装中一个类改变Ӟ整个装都会(x)发生变化?br />   <br />   在不同封装里cM要一起重?br />   不幸的是Q即使在初始化时Q一个类对象不能允许它自己去调用不同的类Q就lY件升U带来不利,q样软g的可l护性就变得非常很重要。所以在不同的封装里Q独立的c重载是一个最有效的方法?br />   <br />   关键的注意事?br />   在JavaE序设计Ӟ你必L意以下几点:(x)<br />   <br />   Containing Change ––––装各个cd一个单一的封装里能减很多更改,把所有改变都集中C个封装里有助于Y件的可维护性?br />   <br />   Class coupling –––––当在同一装里联l类Ӟ你应该注意到其他cM有可能和q一个类有关。忽视这些联pM(x)产生很多不必要的兌?br />   <br />   Contention ––––– 前两个启发生比较大的封装,目的是调用;后两个启发生比较小的封装,目的是可l护。这前后的封装会(x)发生冲突。在开发过E中Q你必须在程序结构上作出相应的改变。在E序设计开发初期,你应该选择利于软g可维护性的比较?yu)的装Q当在开发后期,你应该选择利于软g调用的比较大的封装?br />   <br />   调用<br />   当设计程序框架时Q你应该集中于封装的调用Q因为Java装的调用和可维护非常的重要。当设计合理Q程序就很容易的支持装的调用功能?br /> <img src ="http://m.tkk7.com/mark1207/aggbug/186722.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/mark1207/" target="_blank">Mark</a> 2008-03-17 11:44 <a href="http://m.tkk7.com/mark1207/archive/2008/03/17/186722.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java生成随机?/title><link>http://m.tkk7.com/mark1207/archive/2007/12/05/165650.html</link><dc:creator>Mark</dc:creator><author>Mark</author><pubDate>Wed, 05 Dec 2007 13:29:00 GMT</pubDate><guid>http://m.tkk7.com/mark1207/archive/2007/12/05/165650.html</guid><wfw:comment>http://m.tkk7.com/mark1207/comments/165650.html</wfw:comment><comments>http://m.tkk7.com/mark1207/archive/2007/12/05/165650.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/mark1207/comments/commentRss/165650.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/mark1207/services/trackbacks/165650.html</trackback:ping><description><![CDATA[<p><font size="2">一.在j2se里我们可以用Math.random()Ҏ(gu)来生一个随机数Q这个生的随机数是0-1之间的一个doubleQ我们可以把他乘以一定的敎ͼ比如说乘?00Q他是?00以内的随机,q个在j2me中没有?/font></p> <p><font size="2">?在java.utilq个包里面提供了一个Random的类Q我们可以新Z个Random的对象来产生随机敎ͼ他可以生随机整数、随机float、随机doubleQ随机longQ这个也是我们在j2me的程序里l常用的一个取随机数的Ҏ(gu)?/font></p> <p><font size="2">?在我们的SystemcM有一个currentTimeMillis()Ҏ(gu)Q这个方法返回一个从1970q?????U到目前的一个毫U数Q返回类型是longQ我们可以拿他作Z个随机数Q我们可以拿他对一些数取模Q就可以把他限制在一个范围之内啦</font></p> <p><font size="2">其实在Random的默认构造方法里也是使用上面W三U方法进行随机数的生的</font></p> <p><font size="2">对于Ҏ(gu)二中的RandomcL以下说明Q?</font></p> <p><font size="2">java.util.RandomcL两种方式构徏方式Q带U子和不带种?/font></p> <p><font size="2">不带U子Q?/font></p> <p><font size="2">此种方式会(x)q回随机的数字,每次q行l果不一?/font></p> <p><font size="2">public class RandomTest {</font></p> <p><font size="2">public static void main(String[] args) {</font></p> <p><font size="2">java.util.Random r=new java.util.Random(); </font></p> <p><font size="2">for(int i=0;i<10;i++){ </font></p> <p><font size="2">System.out.println(r.nextInt());</font></p> <p><font size="2">}</font></p> <p><font size="2">}</font></p> <p><font size="2">带种子:(x)</font></p> <p><font size="2">此种方式Q无论程序运行多次Q返回结果都是一L(fng)</font></p> <p><font size="2">public static void main(String[] args) {</font></p> <p><font size="2">java.util.Random r=new java.util.Random(10);</font></p> <p><font size="2">for(int i=0;i<10;i++){</font></p> <p><font size="2">System.out.println(r.nextInt());</font></p> <p><font size="2">}</font></p> <p><font size="2">}</font></p> <p><font size="2">两种方式的差别在?/font></p> <p><font size="2">(1) 首先h开Java DocQ我们会(x)看到Randomcȝ说明Q?/font></p> <p><font size="2">此类的实例用于生成伪随机数流Q此cM?48 位的U子Q该U子可以使用U性同余公式对其进行修改(请参?Donald Knuth 的《The Art of Computer Programming, Volume 2》,W?3.2.1 节)(j)?/font></p> <p><font size="2">如果用相同的U子创徏两个 Random 实例Q则Ҏ(gu)个实例进行相同的Ҏ(gu)调用序列Q它们将生成q返回相同的数字序列。ؓ(f)了保证实现这U特性,我们为类Random指定了特定的法。ؓ(f)?Java 代码的完全可UL性,Java 实现必须让类 Random 使用此处所C的所有算法。但是允?Random cȝ子类使用其他法Q只要其W合所有方法的常规协定卛_?/font></p> <p><font size="2">Java Doc对Randomcdl解释得非常明白Q我们的试也验证了q一炏V?/font></p> <p><font size="2">(2) 如果没有提供U子敎ͼRandom实例的种子数是当前旉的毫U数Q可以通过System.currentTimeMillis()来获得当前时间的毫秒数。打开JDK的源代码Q我们可以非常明地看到q一炏V?/font></p> <p><font size="2">/** <br /> * Creates a new random number generator. Its seed is initialized to <br /> * a value based on the current time: <br /> * Random() { this(System.currentTimeMillis()); }java.lang.System#currentTimeMillis()<br /> */ <br /> public Random() { this(System.currentTimeMillis()); } </font></p> <p><font size="2">另外Q?</font></p> <p><font size="2">random对象的nextInt(),nextInt(int n)Ҏ(gu)的说明:(x)</font></p> <p><font size="2">int </font><font size="2">nextInt() <br /> q回下一个伪随机敎ͼ它是此随机数生成器的序列中均匀分布?int 倹{?/font></p> <p><font size="2">int </font><font size="2">nextInt(int n) <br /> q回一个伪随机敎ͼ它是从此随机数生成器的序列中取出的、在 0Q包括)(j)和指定|不包括)(j)之间均匀分布?int倹{?br /> <br /> 源引自:(x)http://okone96.itpub.net/post/9033/231699</font></p> <img src ="http://m.tkk7.com/mark1207/aggbug/165650.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/mark1207/" target="_blank">Mark</a> 2007-12-05 21:29 <a href="http://m.tkk7.com/mark1207/archive/2007/12/05/165650.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://32-k.com" target="_blank">91ƷѹƬ</a>| <a href="http://jpsp8.com" target="_blank">޹˾Ʒþþùһ </a>| <a href="http://38miao.com" target="_blank">޾Ʒ</a>| <a href="http://zibochanglong.com" target="_blank">޸רƵ</a>| <a href="http://ddtase.com" target="_blank">99ֻоƷƵѿ </a>| <a href="http://jdwx58.com" target="_blank">ɫƵ15</a>| <a href="http://znboxcdn304.com" target="_blank">þþþ޾Ʒ˵</a>| <a href="http://jgc528.com" target="_blank">ҹӰԺѹۿ</a>| <a href="http://zzz477.com" target="_blank">avһ</a>| <a href="http://seosuanfa.com" target="_blank">޹avӰ</a>| <a href="http://haha02.com" target="_blank">ŷxxxxx</a>| <a href="http://lshwork.com" target="_blank">ɫƵѿ</a>| <a href="http://3atv3523.com" target="_blank">AV߹ۿ</a>| <a href="http://8888kkk.com" target="_blank">߹ۿҹһ</a>| <a href="http://yes5555.com" target="_blank">ëƬƵ߹ۿ</a>| <a href="http://www44wawa.com" target="_blank">ƬվɫƬѹۿcn</a>| <a href="http://zhaofeiz.com" target="_blank">޳AVƬþ</a>| <a href="http://jgc528.com" target="_blank">AVվ߹ۿ</a>| <a href="http://jdvgo.com" target="_blank">99þѾƷ72Ʒž</a>| <a href="http://ziniurj.com" target="_blank">йƷNѹۿ</a>| <a href="http://www9797nn.com" target="_blank">պƬӰ</a>| <a href="http://www52a.com" target="_blank">AVþþƷ</a>| <a href="http://singbomb.com" target="_blank">˿</a>| <a href="http://zgdhuibao.com" target="_blank">޵һվƵ</a>| <a href="http://7755ga.com" target="_blank">ͺˬӲƵ</a>| <a href="http://91se01.com" target="_blank">Ůרhd</a>| <a href="http://xixidhw.com" target="_blank">þþþþþAv </a>| <a href="http://6711wan.com" target="_blank">޲Ļ</a>| <a href="http://dqzlxgg.com" target="_blank">av뾫ƷƷ</a>| <a href="http://zhidianzh.com" target="_blank">ڵĤѿƵ</a>| <a href="http://goldwellib.com" target="_blank">AëƬƵл</a>| <a href="http://caita88.com" target="_blank">Ƭ߹ۿѹۿȫй</a>| <a href="http://818812.com" target="_blank">Ʒþþþþ޾Ʒ</a>| <a href="http://ahjmdd.com" target="_blank">þþۺɫһ </a>| <a href="http://www998xe.com" target="_blank">AV˵߹ۿ</a>| <a href="http://haiholr.com" target="_blank">AVһ </a>| <a href="http://180xiu.com" target="_blank">youjizz</a>| <a href="http://jxszzhzs.com" target="_blank">Ƶ߲</a>| <a href="http://520baoyu.com" target="_blank">vavava</a>| <a href="http://xyjxnhcl.com" target="_blank">պ߾Ʒһ</a>| <a href="http://gujingyuye.com" 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>