ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>91麻豆精品国产91久久久久久 ,国产精品第一视频,欧美日韩国产中文字幕在线http://www.aygfsteel.com/JafeLee/category/22866.htmlzh-cnMon, 10 Dec 2007 15:31:55 GMTMon, 10 Dec 2007 15:31:55 GMT60Java 正则表达å¼?(2) -- Metacharacters & Character Classeshttp://www.aygfsteel.com/JafeLee/archive/2007/12/10/166494.htmlJafeJafeMon, 10 Dec 2007 01:58:00 GMThttp://www.aygfsteel.com/JafeLee/archive/2007/12/10/166494.htmlhttp://www.aygfsteel.com/JafeLee/comments/166494.htmlhttp://www.aygfsteel.com/JafeLee/archive/2007/12/10/166494.html#Feedback0http://www.aygfsteel.com/JafeLee/comments/commentRss/166494.htmlhttp://www.aygfsteel.com/JafeLee/services/trackbacks/166494.html([{\^-$|]})?*+.。注æ„,在æŸäº›æ—¶å€™è¿™äº›ç‰¹ŒDŠçš„字符òq¶ä¸ä¸€å®šä»£è¡¨ç‰¹ŒDŠå«ä¹‰ï¼Œä¾‹å¦‚ - 在[a-c]中是元字½W¦ï¼Œä½†åœ¨ a-c 则ä¸è¡¨ç¤ºç‰ÒŽ®Šå«ä¹‰ã€‚丘q‡ä¸Šé¢æ²¡åˆ—出的字½W¦åˆ™ä¸€å®šä¸ä¼šä»£è¡¨ç‰¹ŒDŠå«ä¹‰ã€?br />
2ã€å¯ä»¥å¯¹å…ƒå­—½W¦è¿›è¡Œè{ä¹‰ï¼Œä¸»è¦æœ‰ä¸¤¿U方法:
  • 在元字符å‰é¢åŠ ä¸€ä¸ªåæ–œæ  (backslashåQ‰\
  • ç”?\Q å’?\E包å«èµäh¥åQŒä¾‹å¦?\? == \Q?\E
3ã€Character Classes åQšè¿™é‡Œçš„classòq¶ä¸æ˜¯Java中的classåQŒåœ¨æ­£åˆ™è¡¨è¾¾å¼ä¸­åQŒä¸€ä¸ªcharacter class是由一¾pÕdˆ—包å«åœ¨æ–¹æ‹¬å·ä¸­çš„字符¾l„æˆåQŒå®ƒèƒ½åœ¨è¾“入的一¾pÕdˆ—字符串中匚w…一个字½W¦ï¼Œä¾‹å¦‚[a-d]匚w…a, b, c, d,中的ä»ÖM½•一个字½W¦ã€‚å†çœ‹ä¸‹é¢ä¸€ä¸ªä¾‹å­ï¼ˆæ‘˜è‡ªjava.sun.comåQ?br />

Character Classes
[abc] a, b, or c (simple class)
[^abc] Any character except a, b, or c (negation)
[a-zA-Z] a through z, or A through Z, inclusive (range)
[a-d[m-p]] a through d, or m through p: [a-dm-p] (union)
[a-z&&[def]] d, e, or f (intersection)
[a-z&&[^bc]] a through z, except for b and c: [ad-z] (subtraction)
[a-z&&[^m-p]] a through z, and not m through p: [a-lq-z] (subtraction)

4ã€Character Classes ä¹‹é—´çš„è¿½Ž—ï¼šä»Žä¸Šé¢çš„表格也å¯ä»¥çœ‹å‡?character classes包å«äº†å‡ ä¸ªè·Ÿé›†åˆæ“作很相似的æ“作åQšä¾‹å¦‚negationåQˆè¡¥åQ‰ã€union(òqÓž¼‰ã€intersection(交)ã€subtraction(差)。由上é¢çš„表æ ég¹Ÿå¯ä»¥çœ‹å‡ºä¸¤ä¸ªCharacter Classesä¹‹é—´çš„è¿½Ž—åªéœ€è¦ç®€å•地ž®†ä¸€ä¸ªCharacter Classes嵌入到å¦ä¸€ä¸ªCharacter Classesòq¶ä‹É用正¼‹®çš„æ“ä½œ½W¦å°±å¯ä»¥äº†ã€?br />
5ã€Predefined Character ClassesåQšjava.util.regex.* 包å«äº†ä¸€äº›é¢„先定义的 Character Classes,在实际中å¯ä»¥å¾ˆæ–¹ä¾¿åœ°˜q用åQšï¼ˆæ‘˜è‡ª java.sun.com )

Predefined Character Classes
. Any character (may or may not match line terminators)
\d A digit: [0-9]
\D A non-digit: [^0-9]
\s A whitespace character: [ \t\n\x0B\f\r]
\S A non-whitespace character: [^\s]
\w A word character: [a-zA-Z_0-9]
\W A non-word character: [^\w]



]]>
Java 正则表达å¼?(1) -- java.util.regex.* 介ç»http://www.aygfsteel.com/JafeLee/archive/2007/12/09/166489.htmlJafeJafeSun, 09 Dec 2007 11:47:00 GMThttp://www.aygfsteel.com/JafeLee/archive/2007/12/09/166489.htmlhttp://www.aygfsteel.com/JafeLee/comments/166489.htmlhttp://www.aygfsteel.com/JafeLee/archive/2007/12/09/166489.html#Feedback0http://www.aygfsteel.com/JafeLee/comments/commentRss/166489.htmlhttp://www.aygfsteel.com/JafeLee/services/trackbacks/166489.html
  • Pattern : 用æ¥è¡¨ç¤ºä¸€ä¸ªç»˜q‡ç¼–译处ç†åŽçš„æ­£åˆ™è¡¨è¾‘ּ。通俗一ç‚ÒŽ¥è¯ß_¼Œž®±æ˜¯ç”¨ä¸€ä¸ªç±»æ¥è¡¨½CÞZ¸€ä¸ªæ­£åˆ™è¡¨è¾‘Ö¼åQŒè¿™ä¸ªç±»æ˜¯ä»Žæ­£åˆ™è¡¨è¾¾å¼æž„造得到的。这个类òq¶æ²¡æœ‰public constructor, 如果惛_¾—åˆîC¸€ä¸ªè¿™ä¸ªç±»çš„一个对象则必须调用该类的public staticæ–ÒŽ³•åQšpublic static Pattern compile(String regex)或è€?public static Pattern compile(String regex,int flags)。这两个æ–ÒŽ³•˜q”回一个Pattern型的对象ã€?/li>
  • Matcher : 解释Patternòq¶æ‰§è¡ŒåŒ¹é…ã€æŸ¥æ‰‘Ö·¥ä½œçš„¾c»ï¼Œè·ŸPattern¾cÖM¸€æ øP¼Œ˜q™ä¸ª¾cÖM¹Ÿæ²¡æœ‰å®šä¹‰public constructoråQŒè¦æƒŒ™Ž·å¾—一个Matcher对象必须调用Pattern¾cÈš„æ–ÒŽ³• public Matcher matcher(CharSequence input) æ¥å¾—到ã€?/li>
  • PatternSyntaxException : 一个unchecked exception。当é‡åˆ°ä¸ç¬¦å’ŒJava正则表达å¼çš„语法的时候程åºå°±ä¼šæŠ›å‡ø™¿™ä¸ªå¼‚常ã€?/li>
2ã€ä¸€ä¸ªä¾‹å­ï¼ˆæ‘˜è‡ªjava.sun.com åQ?br />
package regex;

import
 java.io.Console;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class RegexTestHarness {
    
public static void main(String [] args) {
        Console console 
= System.console();
        
if (console == null) {
            System.err.println(
"No console.");
            System.exit(
1);
        }
        
while (true) {
            Pattern pattern 
= Pattern.compile(console.readLine("%nEnter your regex: "));
            Matcher matcher 
= pattern.matcher(console.readLine("Enter input string to search: "));
            
boolean found = false;
            
while (matcher.find()) {
                console.format(
"I found the text \"%s\"starting at " +
                        
"index %d and ending at index %d. %n", matcher.group(), matcher.start(), matcher.end());
                found 
= true;
            }
            
if (!found)
                console.format(
"No match found.%n");
        }
    }
}
注:ç”׃ºŽ˜q™ä¸ªä¾‹å­ä½¿ç”¨äº†JDK 1.6åŽæ‰æœ‰çš„æ–ÒŽ³•åQšSystem.console(),所以这个例å­åœ¨eclipseå’Œnetbeans都ä¸èƒ½æ­£å¸¸è¿è¡Œã€‚åªæœ‰åœ¨å‘½ä×o行下æ‰èƒ½æ­£ç¡®˜q行。如果想在eclipseå’Œnb下è¿è¡Œï¼Œå¥½åƒå¯ä»¥ç”¨System.out/inæ¥ä»£æ›¿System.consoleã€?br />

]]>
Java Thread (1)http://www.aygfsteel.com/JafeLee/archive/2007/09/12/144519.htmlJafeJafeWed, 12 Sep 2007 13:32:00 GMThttp://www.aygfsteel.com/JafeLee/archive/2007/09/12/144519.htmlhttp://www.aygfsteel.com/JafeLee/comments/144519.htmlhttp://www.aygfsteel.com/JafeLee/archive/2007/09/12/144519.html#Feedback0http://www.aygfsteel.com/JafeLee/comments/commentRss/144519.htmlhttp://www.aygfsteel.com/JafeLee/services/trackbacks/144519.html
  • ¾l§æ‰¿¾c»java.lang.Thread åQŒè¦†ç›–其中的æ–ÒŽ³• run(); 实例化该å­ç±»åQŒä¾‹å¦‚:
    public class MyThread extends Thread 
    {
       
    public void run() 
      {
          
    // do some work
       }
    }
    // code to use MyThread
    new MyThread().start();
  • 定义一个实现接å?java.lang.Runnable; 的类åQŒå®žçŽ°è¯¥æŽ¥å£çš„æ–¹æ³•run(); 然厞®†è¯¥¾cÈš„一个实例作为实å‚ä¼ ¾l™Thread的构造方法。例如:
    public class MyThread2 implements Runnable 
    {
       
    public void run() 
      {
          
    // do some work
       }
    }

    // code to use MyThread2
    Thread t = new Thread(MyThread2);
    t.start();
  • 无论用哪¿U方法最¾lˆå¾—到的都是一个Threadçš„objectåQŒå½“调用æ–ÒŽ³•start()æ—Óž¼Œ¾pÈ»Ÿž®†åˆ›å»ÞZ¸€ä¸ªæ–°çš„线½E‹æ¥æ‰§è¡Œrun() æ–ÒŽ³•åQŒè¿™ä¸ªæ–°çš„线½E‹å°†ä¸€ç›´è¿è¡ŒçŸ¥é“runæ–ÒŽ³•退出。在新线½E‹å¼€å§‹è¿è¡Œçš„åŒæ—¶åQŒåŽŸæ¥çš„¾U¿ç¨‹ä¹Ÿå°†¾l§ç®‹æ‰§è¡Œstart()之åŽçš„代ç ã€?/span>
2ã€ä¸€ä¸ªçº¿½E‹çš„生命周期åQšæ¯ä¸ªçº¿½E‹çš„生命周期(lifecycle)一共有六个状æ€?state)åQŒè¿™å…­ä¸ªçжæ€ç”¨æžšä‹D¾cÕdž‹Thread.State的六个枚丑ָ¸é‡æ¥è¡¨ç¤ºã€‚分别是åQ?br />3ã€çº¿½E‹ä¼˜å…ˆçñ”åQšçº¿½E‹å¯ä»¥æœ‰ä¸åŒä¼˜å…ˆ¾U§ï¼ŒThread定义了三个优先çñ”帔R‡åQ?br />
public final static int MIN_PRIORITY = 1; //最ž®ä¼˜å…ˆçñ”
public final static int NORM_PRIORITY = 5; //默认的优先çñ”
public final static int MAX_PRIORITY = 10; //最大优先çñ”
一个线½E‹çš„优先¾U§å¯ä»¥æ˜¯1åˆ?0中ä“Q何一个整敎ͼˆåŒ…括1å’?0).æ–ÒŽ³• void setPriority(int newPriority) å¯ä»¥ç”¨æ¥è®„¡½®¾U¿ç¨‹æœ‰é™¾U§ã€‚关于优先çñ”éœ€è¦æ³¨æ„的是,调度器æ€ÀL˜¯é€‰æ‹©ä¼˜å…ˆ¾U§æœ€é«˜çš„¾U¿ç¨‹æ¥æ‰§è¡Œï¼Œä½†æ˜¯java的线½E‹ä¼˜å…ˆçñ”是和æ“作¾pÈ»Ÿç›¸å…³çš„,例如windows XP¾pÈ»Ÿæœ?个优先çñ”åQŒjava中的æŸäº›ä¼˜å…ˆ¾U§ä¼šå¯¹åº”到xpçš?个优先çñ”中去。但是SUN çš„linux版本的JVM上所有线½E‹çš„优先¾U§éƒ½æ˜¯NORM_PRIORITY。在使用优先¾U§çš„åŒæ—¶ä¹Ÿè¦é¿å…饿死的情况出现ã€?br />
4ã€å¤„ç?uncaught exceptions:
当一个线½E‹çš„run()æ–ÒŽ³•执行完毕或者run()æ–ÒŽ³•执行returnè¯­å¥æ—Óž¼Œ¾U¿ç¨‹æ­£å¸¸ä¸­æ­¢ã€‚当runæ–ÒŽ³•抛出一个unchecked异常æ—Óž¼ˆæ³¨æ„åQšrunæ–ÒŽ³•是ä¸èƒ½æŠ›å‡ºchecked异常的)åQŒçº¿½E‹ä¹Ÿä¼šä¸­æ­¢åƈ且打å°å‡ºå¼‚常信æ¯ã€‚如果你æƒÏx•获处ç†è¯¥å¼‚常åQŒåˆ™å¿…须䏸™¯¥¾U¿ç¨‹æ·ÕdŠ ä¸€ä¸ªuncaught exception handleræ¥æ‰§è¡Œã€‚例如:
package uncaughtexception;
public class MyThread implements Runnable
{
    @Override
    
public void run()
    {
        
throw new UnsupportedOperationException();
    }
}


package uncaughtexception;

public class TestMyThread
{
    
public static void main(String [] args)
    {
        Thread aThread 
= new Thread(new MyThread());
        
        aThread.setUncaughtExceptionHandler(
new Thread.UncaughtExceptionHandler()
        {
            @Override
            
public void uncaughtException(Thread t, Throwable e)
            {
                System.out.println(
"Hello");
            }
        });
        
        aThread.start();
    }
}
˜q行¾l“æžœ: Hello


]]>
Java Enumeration (æžšä‹D¾cÕdž‹) (5) -- Value-specific class bodyhttp://www.aygfsteel.com/JafeLee/archive/2007/09/09/143793.htmlJafeJafeSun, 09 Sep 2007 07:29:00 GMThttp://www.aygfsteel.com/JafeLee/archive/2007/09/09/143793.htmlhttp://www.aygfsteel.com/JafeLee/comments/143793.htmlhttp://www.aygfsteel.com/JafeLee/archive/2007/09/09/143793.html#Feedback0http://www.aygfsteel.com/JafeLee/comments/commentRss/143793.htmlhttp://www.aygfsteel.com/JafeLee/services/trackbacks/143793.html
ArithmeticOp.java

TestOperator.java

  1. 定义æ¯ä¸€ä¸?value-specific class body åQˆä¸çŸ¥å¦‚何翻译~~)ž®†ä¼šåˆ›å¾ä¸€ä¸ªè¯¥æžšä‹D¾cÕdž‹çš„匿åå­¾c»ï¼ˆanonymous subclass), 对应的枚丑ָ¸é‡å°†ä¼šå”¯ä¸€çš„æŒ‡å‘该å­ç±»ã€‚è¿™é‡Œéœ€è¦æ³¨æ„的是,ž®½ç®¡æžšä‹D¾cÕdž‹ä¸èƒ½è¢«extendsåQŒä½†æ˜¯å®ƒå´å¯ä»¥æ‹¥æœ‰åŒ¿åå­¾c»ï¼Œä»Žè¿™ä¸ªæ„义上æ¥è¯´åQŒæžšä¸„¡±»åž‹åÆˆä¸æ˜¯ä¸€ä¸ªä¸¥æ ¼çš„final¾c…R€?/li>
  2. 匿åå­ç±»ž®±é¢„½Cºç€˜q™äº›å­ç±»æ²¡æœ‰è‡ªå·±çš„constructoråQŒä½ ä¹Ÿä¸èƒ½åœ¨ä½ çš„代ç ä¸­å¼•用一些匿åå­¾c»è‡ªå·±æ‹¥æœ‰çš„æ–ÒŽ³•或域åQˆè§ä¸Šé¢ä¾‹å­ADD中的justForAddæ–ÒŽ³•åQ‰ï¼Œ˜q™æ˜¯å› äØ“æ¯ä¸ªæžšä‹D¾cÕdž‹çš„æžšä¸‘Ö¸¸é‡çš„æžšä‹D¾cÕdž‹éƒ½æ˜¯è¯¥æžšä¸„¡±»åž‹çš„。å¯èƒ½è¿™å¥è¯æˆ‘表˜q°çš„ä¸å¥½ã€‚ä‹D个例å­ï¼Œè®¾æœ‰¾c?A, B是A的孾c»ï¼ŒB有一个自å·Þqš„æ–ÒŽ³• bMethod()。在代ç ä¸­ï¼Œæˆ‘å…ˆnew一个B的实例båQŒç„¶åŽå†declare一个Açš„å˜é‡a,òq¶è®©a指å‘b(a = b)åQŒè¿™æ—Óž¼Œž®½ç®¡aåQŒb指å‘åŒä¸€ä¸ªå¯¹è±¡ï¼Œä½†ä½ å¯ä»¥b.bMethod()å´ä¸èƒ½å¤Ÿa.bMethod()ã€?/li>
  3. æžšä‹D¾cÕdž‹å¯ä»¥å®šä¹‰abstractæ–ÒŽ³•åQŒä½†ä½ å¿…™å»è‡³ž®‘定义一个枚丑ָ¸é‡æ¥å®žçް˜q™äº›abstractæ–ÒŽ³•åQŒå¦åˆ™å°†ä¼šäñ”生编译错误ã€?/li>
  4. ç”?å¯ä»¥çœ‹å‡ºåQŒå®šä¹‰value-specific class body实际上就是实现枚丄¡±»åž‹ä¸­çš„abstractæ–ÒŽ³•或者overrideæžšä‹D¾cÕdž‹¿U存在的æ–ÒŽ³•ã€?br />


]]>
Java Enumeration (æžšä‹D¾cÕdž‹) (3) -- 自定义类ä½?class body)http://www.aygfsteel.com/JafeLee/archive/2007/09/08/143614.htmlJafeJafeSat, 08 Sep 2007 07:39:00 GMThttp://www.aygfsteel.com/JafeLee/archive/2007/09/08/143614.htmlhttp://www.aygfsteel.com/JafeLee/comments/143614.htmlhttp://www.aygfsteel.com/JafeLee/archive/2007/09/08/143614.html#Feedback0http://www.aygfsteel.com/JafeLee/comments/commentRss/143614.htmlhttp://www.aygfsteel.com/JafeLee/services/trackbacks/143614.htmlpackage custom;
public enum Prefix
{
    
// These are the values of this enumerated type.
    
// Each one is followed by constructor arguments in parentheses.
    
// The values are separated from each other by commas, and the
    
// list of values is terminated with a semicolon to separate it from
    
// the class body that follows.
    MILLI("m", .001), 
    CENTI(
"c", .01), 
    DECI(
"d"), 
    DECA(
"D", 10.0), 
    HECTA(
"h", 100.0), 
    KILO(
"k", 1000.0);  // Note semicolon

                                                                                                                                                                                                                        
// semicolon

    
// This is the constructor invoked for each value above.
    private Prefix(String abbrev, double multiplier)
    {
        
this.abbrev = abbrev;
        
this.multiplier = multiplier;
    }
    
    
//Another constructor
    private Prefix(String abbrev)
    {
        
this.abbrev = abbrev;
        
this.multiplier = .1;
    }
    
    
// These are the private fields set by the constructor
    private String abbrev;
    
private double multiplier;

    
// These are accessor methods for the fields. They are instance methods
    
// of each value of the enumerated type.
    public String abbrev()
    {
        
return abbrev;
    }

    
public double multiplier()
    {
        
return multiplier;
    }
}
需注æ„åQŒä¸€ä¸ªæžšä¸„¡±»åž‹å¯ä»¥æœ‰å¤šä¸ªæž„造器ã€?br />


]]>
Java Enumeration (æžšä‹D¾cÕdž‹) (2) -- switch语å¥http://www.aygfsteel.com/JafeLee/archive/2007/09/08/143609.htmlJafeJafeSat, 08 Sep 2007 06:43:00 GMThttp://www.aygfsteel.com/JafeLee/archive/2007/09/08/143609.htmlhttp://www.aygfsteel.com/JafeLee/comments/143609.htmlhttp://www.aygfsteel.com/JafeLee/archive/2007/09/08/143609.html#Feedback0http://www.aygfsteel.com/JafeLee/comments/commentRss/143609.htmlhttp://www.aygfsteel.com/JafeLee/services/trackbacks/143609.htmlpackage other;
import basic.Day;
public class SwitchTest
{
    
public static void main(String [] args)
    {
        
int FRIDAY = 5;
        System.out.println(FRIDAY);
        
        Day today 
= Day.SATURDAY;
        
switch(today)
        {
        
case FRIDAY:
            System.out.println(
"Today is " + today.toString().toLowerCase());
            
break;
        
case SATURDAY:
            System.out.println(
"Today is " + today.toString().toLowerCase());
            
break;
        
case SUNDAY:
            System.out.println(
"Today is " + today.toString().toLowerCase());
            
break;
        
case MONDAY:
            System.out.println(
"Today is " + today.toString().toLowerCase());
            
break;
        
case TUESDAT:
            System.out.println(
"Today is " + today.toString().toLowerCase());
            
break;
        
case WEDNESDAY:
            System.out.println(
"Today is " + today.toString().toLowerCase());
            
break;
        
case THURSDAY:
            System.out.println(
"Today is " + today.toString().toLowerCase());
            
break;
        
default:
            System.out.println(
"otherday");
        }
    }
}
注æ„在case标签中,Dayä¸å‡ºçŽŽÍ¼Œå³case Day.FRIDAY是ä¸åˆæ³•的。而在其他地方出现时则必须用Day.FRIDAY


]]>
Java Enumeration (æžšä‹D¾cÕdž‹) (1) -- 基本概念http://www.aygfsteel.com/JafeLee/archive/2007/09/08/143578.htmlJafeJafeSat, 08 Sep 2007 06:13:00 GMThttp://www.aygfsteel.com/JafeLee/archive/2007/09/08/143578.htmlhttp://www.aygfsteel.com/JafeLee/comments/143578.htmlhttp://www.aygfsteel.com/JafeLee/archive/2007/09/08/143578.html#Feedback0http://www.aygfsteel.com/JafeLee/comments/commentRss/143578.htmlhttp://www.aygfsteel.com/JafeLee/services/trackbacks/143578.htmlJava 5.0新引˜q›äº†ä¸€¿U类型:枚ä‹D¾cÕdž‹ã€‚昨晚看了一下,语法˜q˜æ˜¯æ¯”è¾ƒå¤æ‚的,臛_°‘比C的枚举è¦å¤æ‚的很多,ä¸è¿‡åŠŸèƒ½ä¹Ÿå¼ºå¤§äº†å¾ˆå¤šã€‚å…·ä½“è¯­æ³•è¯·å‚è§ JLS 8.9
1ã€å®šä¹‰ä¸€ä¸ªåŠŸèƒ½ç®€å•的枚ä‹D¾cÕdž‹åQŒæ›´å®šä¹‰ä¸€ä¸ªç®€å•çš„¾cÕd¾ˆç›æ€¼¼åQŒä¾‹å¦?/font>
package  basic;
public   enum  Day
{
    MONDAY, TUESDAT, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
  • è·Ÿç±»å®šä¹‰ä¸€æ øP¼Œæžšä‹D¾cÕdž‹å¯ä»¥å•独攑֜¨ä¸€ä¸ªæ–‡ä»‰™‡ŒåQŒå½“一个枚丄¡±»åž‹ç”¨public修饰æ—Óž¼Œå®ƒå¯¹å…¶ä»–包å¯è§ï¼Œå¦åˆ™åªå¯¹åŒä¸€ä¸ªåŒ…中的¾cÕd¯è§ï¼Œ˜q™å’Œ¾cÕd®šä¹‰æ˜¯ä¸€æ ïLš„ã€?/font>
  • 标识½W?MONDAY, TUESDAY½{‰å°±¿UîCؓ枚ä‹D帔R‡åQˆenumeration constantsåQ?/font>
  • æ¯ä¸€ä¸ªæžšä¸‘Ö¸¸é‡è¢«éšå¼çš„声明æˆDay的一个publicã€staticæˆå‘˜åQŒè€Œä¸”å…¶ç±»åž‹äØ“DayåQŒäº¦ž®±æ˜¯è¯´è¿™äº›å¸¸é‡æ˜¯self-typedçš?br />
2ã€ä¸‹é¢çš„å®šä¹‰ä¹Ÿæ˜¯åˆæ³•的:
package basic;

public enum Day
{
    MONDAY, TUESDAT, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY,
}
�br />
package basic;

public enum Day
{
    MONDAY, TUESDAT, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY,;
}
�br />
package basic;

public enum Day
{
    MONDAY, TUESDAT, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}
但是当枚丄¡±»åž‹æœ‰å…¶ä»–定义æ—Óž¼Œåˆ™åˆ†å?是必™åÈš„
3ã€å£°æ˜Žã€ä‹É用一个枚丄¡±»åž‹ï¼š
åQ?åQ‰åœ¨åŒä¸€ä¸ªåŒ…中:

BasicMainClass.java

åQ?åQ‰åœ¨ä¸åŒåŒ…中åQ?br />
OtherMainClass.java

4ã€æžšä¸„¡±»åž‹çš„æ€§è´¨åQšï¼ˆæ‘˜è‡ªo'relly 出版çš?Java in A Nutshell 5th)

  • Enumerated types have no public constructor. The only instances of an enumerated type are those declared by the enum.

  • Enums are not Cloneable, so copies of the existing instances cannot be created.

  • Enums implement java.io.Serializable so they can be serialized, but the Java serialization mechanism handles them specially to ensure that no new instances are ever created.

  • Instances of an enumerated type are immutable: each enum value retains its identity. (We'll see later in this chapter that you can add your own fields and methods to an enumerated type, which means that you can create enumerated values that have mutable portions. This is not recommended, but does not affect the basic identity of each value.)

  • Instances of an enumerated type are stored in public static final fields of the type itself. Because these fields are final, they cannot be overwritten with inappropriate values: you can't assign the DownloadStatus.ERROR value to the DownloadStatus.DONE field, for example.

  • By convention, the values of enumerated types are written using all capital letters, just as other static final fields are.

  • Because there is a strictly limited set of distinct enumerated values, it is always safe to compare enum values using the = = operator instead of calling the equals() method.

  • Enumerated types do have a working equals( ) method, however. The method uses = =finalso that it cannot be overridden. This working equals( ) method allows enumerated values to be used as members of collections such as Set, List, and Map. internally and is

  • Enumerated types have a working hashCode() method consistent with their equals( )equals(), hashCode( ) is final. It allows enumerated values to be used with classes like java.util.HashMap. method. Like

  • Enumerated types implement java.lang.Comparable, and the compareTo() method orders enumerated values in the order in which they appear in the enum declaration.

  • Enumerated types include a working toString( ) method that returns the name of the enumerated value. For example, DownloadStatus.DONE.toString( ) returns the string "DONE" by default. This method is not final, and enum types can provide a custom implementation if they choose.

  • Enumerated types provide a static valueOf( ) method that does the opposite of the default
    toString( ) method. For example, DownloadStatus.valueOf("DONE") would return DownloadStatus.DONE.

  • Enumerated types define a final instance method namedordinal()that returns an integer for each enumerated value. The ordinal of an enumerated value represents its position (starting at zero) in the list of value names in the enum declaration. You do not typically need to use the ordinal( ) method, but it is used by a number of enum-related facilities, as described later in the chapter.

  • Each enumerated type defines a static method named values( ) that returns an array of enumerated values of that type. This array contains the complete set of values, in the order they were declared, and is useful for iterating through the complete set of possible values. Because arrays are mutable, the values( ) method always returns a newly created and initialized array.

  • Enumerated types are subclasses of java.lang.Enum, which is new in Java 5.0. (Enum is not itself an enumerated type.) You cannot produce an enumerated type by manually extending the Enum class, and it is a compilation error to attempt this. The only way to define an enumerated type is with the enum keyword.

  • It is not possible to extend an enumerated type. Enumerated types are effectively final, but the final keyword is neither required nor permitted in their declarations. Because enums are effectively final, they may not be abstract.

  • Like classes, enumerated types may implement one or more interfaces. 




]]>
Java å•å…ƒ‹¹‹è¯•http://www.aygfsteel.com/JafeLee/archive/2007/08/22/138699.htmlJafeJafeWed, 22 Aug 2007 13:00:00 GMThttp://www.aygfsteel.com/JafeLee/archive/2007/08/22/138699.htmlhttp://www.aygfsteel.com/JafeLee/comments/138699.htmlhttp://www.aygfsteel.com/JafeLee/archive/2007/08/22/138699.html#Feedback0http://www.aygfsteel.com/JafeLee/comments/commentRss/138699.htmlhttp://www.aygfsteel.com/JafeLee/services/trackbacks/138699.html
1ã€å•元测试利å™?JUnit 4
http://www.ibm.com/developerworks/cn/java/j-lo-junit4/

2ã€JUnit 4抢先çœ?br />http://www.ibm.com/developerworks/cn/java/j-junit4.html

3ã€æ·±å…¥æŽ¢ç´?JUnit4åQˆè¿™ä¸ªä¼¼ä¹Žè¦å…ˆæ³¨å†Œçš„åQ?br />http://www.ibm.com/developerworks/cn/edu/j-dw-java-junit4.html

4ã€?font size="3">TestNG ä½?Java å•å…ƒ‹¹‹è¯•轻而易ä¸?br />http://www.ibm.com/developerworks/cn/java/j-testng/

5ã€?/font>˜q½æ±‚代ç è´¨é‡: JUnit 4 ä¸?TestNG 的对æ¯?br />http://www.ibm.com/developerworks/cn/java/j-cq08296/



]]>
Javaç‚ÒŽ»´ (3)http://www.aygfsteel.com/JafeLee/archive/2007/07/23/131890.htmlJafeJafeMon, 23 Jul 2007 07:47:00 GMThttp://www.aygfsteel.com/JafeLee/archive/2007/07/23/131890.htmlhttp://www.aygfsteel.com/JafeLee/comments/131890.htmlhttp://www.aygfsteel.com/JafeLee/archive/2007/07/23/131890.html#Feedback0http://www.aygfsteel.com/JafeLee/comments/commentRss/131890.htmlhttp://www.aygfsteel.com/JafeLee/services/trackbacks/131890.htmlawtevent.JPG

2ã€å¸¸ç”¨AWT事äšg¾cÕdž‹åˆ—表
ActionEvent     KeyEvent
AdjustmentEvent     MouseEvent
FocusEvent     MouseWheelEvent
ItemEvent     WindowEvent


用于监嬘q™äº›äº‹äšg的接å£ï¼š
ActionListener                  MouseMotionListener
AdjustmentListener MouseWheelListener
FocusListener WindowListener
ItemListener WindowFocusListener
KeyListener WindowStateListener
MouseListener


常用的适é…器类åQ?br />FocusAdapter MouseMotionAdapter
KeyAdapter WindowAdapter
MouseAdapter


3ã€äº‹ä»¶ç›‘å¬åŽŸç†ï¼š
接收事äšgçš„ç±»å¿…é¡»å®žçŽ°ç›‘å¬æŽ¥å£åQŒè¿™ä¸ªç±»è¦ç”¨äº‹äšgæºæ³¨å†Œï¼Œç„¶åŽåQŒæŽ¥å—所需è¦çš„事äšg对象åQŒåƈ通过监å¬å™¨æŽ¥å£ä¸­çš„æ–¹æ³•对事äšg作出相应的处ç?br />
4ã€æ‰€æœ‰AWT事äšgæºéƒ½æ”¯æŒå¤šç‚¹ä¼ é€ï¼ˆmulticast)模型åQŒå³åŒä¸€ä¸ªäº‹ä»¶å¯ä»¥å‘é€ç»™å¤šä¸ªç›‘å¬å™¨å¯¹è±¡ã€‚当时APIä¸èƒ½ä¿è¯ä¸€ä¸ªç»™å®šäº‹ä»¶æºæ³¨å†Œçš„一¾l„监å¬å™¨ä¼ é€äº‹ä»¶çš„‹Æ¡åºåQŒå› æ­¤ä¸è¦ç¼–写ä¾èµ–传逿¬¡åºçš„½E‹åºé€»è¾‘ã€?br />

]]>
Java¾l§æ‰¿http://www.aygfsteel.com/JafeLee/archive/2007/07/22/131188.htmlJafeJafeSun, 22 Jul 2007 08:40:00 GMThttp://www.aygfsteel.com/JafeLee/archive/2007/07/22/131188.htmlhttp://www.aygfsteel.com/JafeLee/comments/131188.htmlhttp://www.aygfsteel.com/JafeLee/archive/2007/07/22/131188.html#Feedback0http://www.aygfsteel.com/JafeLee/comments/commentRss/131188.htmlhttp://www.aygfsteel.com/JafeLee/services/trackbacks/131188.html1ã€å…³é”®å­—super有两个用途:一是调用超¾cÈš„æ–ÒŽ³•åQŒè€Œæ˜¯è°ƒç”¨­‘…类的构造器ã€?br /> super䏿˜¯å¯¹ä¸€ä¸ªå¯¹è±¡çš„引用åQŒä¸èƒ½å°†super赋给å¦ä¸€ä¸ªå¯¹è±¡å˜é‡ï¼Œå®ƒåªæ˜¯ä¸€ä¸ªæŒ‡½Cºç¼–译器调用­‘…ç±»æ–ÒŽ³•的特有关键字。super在构造器中的作用åQ?br />
    public  Manager(String n,  double  s,  int  year,  int  month,  int  day)    
    {      
      
    super (n, s, year, month, day);    
      bonus 
    =   0 ;    
    }    

ç”׃ºŽæž„造器ä¸èƒ½èŒƒå›´Employee¾cÈš„¿U有域(具体例å­è§æœ¬æ–‡æœ€åŽé¢PersonTest.javaåQ‰ï¼Œæ‰€ä»¥å¿…™åÕdˆ©ç”¨Employee¾cÈš„构造器对这部分¿U有域进行åˆå§‹åŒ–å­?/font> åQŒæˆ‘们å¯ä»¥é€šè¿‡super实现对超¾cÀLž„造器的调用ã€?font color="#ff0000">使用super调用构造器的语å¥å¿…™åÀL˜¯ ¾cÀLž„造器的第一æ¡è¯­å?/font>。如果之¾cÈš„构造器没有昄¡¤ºçš„调用超¾cÈš„构造器åQŒè¿™ž®†è‡ªåŠ¨è°ƒç”¨è¶…¾c»é»˜è®¤ï¼ˆæ²¡æœ‰å‚æ•°åQ‰çš„æž„造器。如果超¾cÀL²¡æœ‰ä¸å¸¦å‚数的构造器åQŒåƈ且在å­ç±»çš„æž„造器中没有显½Cºåœ°è°ƒç”¨­‘…类的其它构造器åQŒåˆ™Java¾~–译器将报告错误åQŒè¿™ä¸ªè§„则对与abstract base class 也是æˆç«‹çš„ã€?br />
2ã€å…³é”®å­—this有两个用途:一是引用éšå¼å‚敎ͼŒäºŒæ˜¯è°ƒç”¨è¯¥ç±»çš„其它的构造器。在调用构造器时和super很相ä¼û|¼Œéƒ½åªèƒ½ä½œä¸ºå¦ä¸€ä¸ªæž„造器的第一æ¡è¯­å¥å‡ºçްã€?br />
3ã€å¤šæ€ã€‚先看例å­ï¼š
Manager boss = new Manager();
Employee [] staff 
= new Employee[3];
staff[
0] = boss;
在这个例å­ä¸­åQŒå˜é‡staff[0]å’Œboss引用åŒä¸€ä¸ªå¯¹è±?但编译器ž®†staff[0]看待æˆEmployee对象.˜q™æ„味ç€å¯ä»¥˜q™æ ·è°ƒç”¨:
boss.setBonus(5000);
但ä¸èƒ½è¿™æ ¯‚°ƒç”?br />staff[0].setBonus(5000);//erroråQŒè¿™æ ·ä¼šå¼•è“v一个编译错è¯?br />˜q™æ˜¯å› äØ“staff[0]声明的类型是EmployeeåQŒè€ŒsetBonus䏿˜¯Empoyee¾cÈš„æ–ÒŽ³•ã€?br />
4ã€åЍæ€ç»‘定:
  • æ–ÒŽ³•çš„åå­—å’Œå‚æ•°åˆ—表被称为方法的½{‘ÖåQˆsignature).如果在孾cÖM¸­å®šä¹‰äº†ä¸€ä¸ªä¸Ž­‘…ç±»½{‘Ö相åŒçš„æ–¹æ³•,那么å­ç±»ä¸­çš„˜q™ä¸ªæ–ÒŽ³•ž®Þp¦†ç›–了­‘…类中的˜q™ä¸ªåŒç­¾åçš„æ–ÒŽ³•。但是,˜q”回¾cÕdž‹ä¸æ˜¯½{‘Ö的一部分åQŒå› æ­¤åœ¨è¦†ç›–æ–ÒŽ³•的时候,一定è¦ä¿è¯˜q”回¾cÕdž‹çš„å…¼å®ÒŽ€§ã€‚在JDK 5.0以å‰çš„版本中åQŒè¦æ±‚返回类型必™åÀL˜¯ä¸€æ ïLš„。而现在å…许孾cÕd°†è¦†ç›–æ–ÒŽ³•˜q”回¾cÕdž‹å®šä¹‰ä¸ºåŽŸ˜q”回¾cÕdž‹çš„å­¾cÕdž‹ã€‚例如,å‡è®¾Employee¾cÀLœ‰åQ?div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;">public Employee getBuddy(){}在åŽé¢çš„å­ç±»Manager中,å¯ä»¥æŒ‰ç…§å¦‚下所½Cºçš„æ–ÒŽ³•覆盖˜q™ä¸ªæ–ÒŽ³•åQ?div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;">public Manager getBuddy(){} //OK in JDK 5.0
  • 如果æ–ÒŽ³•是private, static, final或者是构造器åQŒé‚£ä¹ˆç¼–译器ž®†å¯ä»¥å‡†¼‹®åœ°çŸ¥é“应该调用那个æ–ÒŽ³•。我们将˜q™ç§è°ƒç”¨æ–¹å¼¿UîCØ“é™æ€ç»‘定。但是,å­ç±»ä¸èƒ½¾l§æ‰¿çˆ¶ç±»private åQˆæ–¹æ³?æ›´è°ˆä¸ä¸Šè¦†ç›–åQ‰ä¸èƒ½è¦†ç›–final修饰的方法,但å¯ä¸€è¦†ç›–staticæ–ÒŽ³•
  • 覆盖一个方法的时候,å­ç±»æ–ÒŽ³•ä¸èƒ½ä½ŽäºŽ­‘…ç±»æ–ÒŽ³•çš„å¯è§æ€§ã€‚特别是如果­‘…类得方法是publicåQŒé‚£ä¹ˆå­¾cÀL–¹æ³•一定è¦å£°æ˜Žä¸ºpublicã€?br />


]]>
Java ç‚ÒŽ»´ (2)http://www.aygfsteel.com/JafeLee/archive/2007/07/21/120165.htmlJafeJafeSat, 21 Jul 2007 01:55:00 GMThttp://www.aygfsteel.com/JafeLee/archive/2007/07/21/120165.htmlhttp://www.aygfsteel.com/JafeLee/comments/120165.htmlhttp://www.aygfsteel.com/JafeLee/archive/2007/07/21/120165.html#Feedback0http://www.aygfsteel.com/JafeLee/comments/commentRss/120165.htmlhttp://www.aygfsteel.com/JafeLee/services/trackbacks/120165.htmlåQ?åQ?使用 * 一‹Æ¡åªèƒ½import 一个package的类åQŒä¾‹å¦‚想è¦?import 包java.util中内容ä¸èƒ½ç”¨ import java.*.*; 也ä¸èƒ½ä¼å›ùN€šè¿‡˜q™ç§æ–¹å¼åQ?font color="#0000ff">import java.*; util.Date date = new Date();æ¥å¼•ç”?br />
åQ?åQ‰static imports: 从JDK 5.0开始,å¯ä»¥ç”¨staticæ–ÒŽ³•æ¥import æŸä¸ª¾cÈš„陿€æ–¹æ³•å’Œé™æ€å¸¸é‡ã€‚例如:

ImportTest.java

static imports 的好处:例如åQ?/font>sqrt(pow(x, 2) + pow(y, 2))
�font color="#0000ff">Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2))
  åQ›Â?font color="#0000ff"> if (d.get(DAY_OF_WEEK) == MONDAY)
æ¯?if (d.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY) 看è“væ¥è¦æ•´æ´åQŒå¯è¯ÀL€§ä¹Ÿä¸æ¯«ä¸ä¼šå—媄å“~~

2ã€å—作用域:åQˆå‚考资料:《Java2 核心技术》)
åQ?åQ‰å—åQˆå³½W¦åˆè¯­å¥åQ‰æ˜¯æŒ‡ç”±ä¸€å¯¹èŠ±æ‹¬å·æ‹¬è“væ¥çš„若干æ¡ç®€å•çš„Java语å¥ã€‚å—¼‹®å®šäº†å˜é‡çš„作用域。一个å—å¯ä»¥åµŒå¥—在å¦ä¸€ä¸ªå—中。例å¦?br />
TestBlock.java
注æ„k的作用域åQŒåœ¨èŠ±æ‹¬å·å¤–是ä¸èƒ½å†å¼•用kçš„ã€?br />åQ?åQ‰ä¸èƒ½åœ¨åµŒå¥—的两个å—中声明åŒåå˜é‡ã€‚例如下é¢çš„代砾~–译时是通丘q‡çš„åQ?br />
TestBlock.java

但是˜q™æ ·æ˜¯å¯ä»¥çš„åQ?br />
TestBlock.java

3ã€ä‹É用内部类(inner class)的动机:
4ã€åªæœ‰å†…部类å¯ä»¥æ˜¯ç§æœ‰ç±»åQŒå¸¸è§„ç±»åªèƒ½å…ähœ‰åŒ…çš„å¯è§æ€§æˆ–公有的å¯è§æ€?br />
5ã€JFrame 与JPane¾cÈš„¾l§æ‰¿å±‚次¾l“æž„
jframe.JPG

6ã€æœ‰æ—¶å€™JFrame½E‹åºé€€å‡ºæ—¶ä¸ÞZ»€ä¹ˆè¦è°ƒç”¨setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)?
˜q™æ˜¯å› äؓ在包å«å¤šä¸ªç¨‹åºæ¡†æž¶çš„½E‹åºä¸­ï¼Œä¸èƒ½å› äؓ用户关闭了其中一个框架就让程åºé€€å‡ºã€‚åœ¨é»˜è®¤æƒ…å†µä¸‹ç”¨æˆ·å…³é—­çª—å£æ—¶åªæ˜¯ž®†æ¡†æž‰™šè—了èµäh¥åQŒè€Œç¨‹åºåƈ没有¾lˆæ­¢ã€?br />
7ã€å°è£…了用户¾pÈ»Ÿçš„å„个元素的颜色的SystemColor¾cÖM¸­çš„ç³»¾lŸé¢œè‰²å’Œå®ƒä»¬çš„å«ä¹‰ï¼š

System Colors

desktop

Background color of desktop

activeCaption

Background color for captions

activeCaptionText

Text color for captions

activeCaptionBorder

Border color for caption text

inactiveCaption

Background color for inactive captions

inactiveCaptionText

Text color for inactive captions

inactiveCaptionBorder

Border color for inactive captions

window

Background for windows

windowBorder

Color of window border frame

windowText

Text color inside windows

menu

Background for menus

menuText

Text color for menus

text

Background color for text

textText

Text color for text

textInactiveText

Text color for inactive controls

textHighlight

Background color for highlighted text

textHighlightText

Text color for highlighted text

control

Background color for controls

controlText

Text color for controls

controlLtHighlight

Light highlight color for controls

controlHighlight

Highlight color for controls

controlShadow

Shadow color for controls

controlDkShadow

Dark shadow color for controls

scrollbar

Background color for scrollbars

info

Background color for spot-help text

infoText

Text color for spot-help text



Jafe 2007-07-21 09:55 å‘表评论
]]>Java Interfacehttp://www.aygfsteel.com/JafeLee/archive/2007/05/26/119852.htmlJafeJafeFri, 25 May 2007 16:16:00 GMThttp://www.aygfsteel.com/JafeLee/archive/2007/05/26/119852.htmlhttp://www.aygfsteel.com/JafeLee/comments/119852.htmlhttp://www.aygfsteel.com/JafeLee/archive/2007/05/26/119852.html#Feedback2http://www.aygfsteel.com/JafeLee/comments/commentRss/119852.htmlhttp://www.aygfsteel.com/JafeLee/services/trackbacks/119852.html
2ã€æŽ¥å£ä¸èƒ½å®žçŽ°æ–¹æ³•ï¼ˆimplement method),åªèƒ½å£°æ˜Žã€‚接å£å¯ä»¥åªå®šä¹‰å¸”R‡ä½†ä¸å£°æ˜Žä»ÖM½•æ–ÒŽ³•ã€?br />
3ã€Interfaceä¸èƒ½æœ‰å®žä¾‹åŸŸåQˆinstance fields)æˆ–é™æ€æ–¹æ³•(static method),但å¯ä»¥å®šä¹‰å¸¸é‡?define constants),帔R‡è‡ªåŠ¨è®¾äØ“public static finalåQŒå¯ä»¥é€šè¿‡¾cÕd‘½ç›´æŽ¥å¼•用帔R‡åQŒä¾‹å¦?br />
ImplementClass.z
å¯ä»¥é€šè¿‡æŽ¥å£å‘½å’Œå¸”R‡å直接访问常é‡ï¼š
FirstInterface.z

4ã€ä¸€ä¸?font color="#000000">éžæŠ½è±?/font>¾c?font color="#ff0000">åQˆæ³¨æ„æ˜¯éžæŠ½è±¡ç±»åQï¼‰å®žçŽ°ä¸€ä¸ªæŽ¥å£æ—¶åQŒå¿…™åÕd®žçŽ°æŽ¥å£çš„æ‰€æœ‰æ–¹æ³•,抽象¾cÕdˆ™ä¸å¿…实现所有方法ã€?br />
5ã€ä¸èƒ½ä‹É用newæ“作½W¦å®žä¾‹åŒ–一个接å£ï¼Œä½†å¯ä»¥å£°æ˜Žä¸€ä¸ªæŽ¥å£å˜é‡ï¼Œè¯¥å˜é‡å¿…™åÕd¼•用(refer to)一个实现该接å£çš„类的对象。å¯ä»¥ä‹Éç”?instanceof ‹‚€æŸ¥ä¸€ä¸ªå¯¹è±¡æ˜¯å¦å®žçŽîCº†æŸä¸ªç‰¹å®šçš„æŽ¥å£ã€‚例如:
if(anObject instanceof Comparable){}


6ã€æŽ¥å£å¯ä»¥è¢«å¦ä¸€ä¸ªæŽ¥å£ç‘ô承(但是final好åƒä¸èƒ½ä¿®é¥°interfaceåQŒç¼–译通丘q‡ï¼Œä»¥åŽæ…¢æ…¢ç ”ç©¶~~)

7ã€æ ‡è®°æŽ¥å£ï¼ˆtagging interface, marker interface)没有æ–ÒŽ³•åQŒä‹É用它的唯一目的是å¯ä»¥ç”¨instanceof ˜q›è¡Œ¾cÕdž‹‹‚€æŸ¥ï¼ˆHorstmann说了åQŒä¸é¼“励用这¿U技æœ?^_^åQ?br />
8ã€?font size="3">æ–ÒŽ³•çš„åå­—å’Œå‚æ•°åˆ—表被称为方法的½{‘ÖåQˆsignature)åQŒå®žçŽîC¸€ä¸ªæŽ¥å£ä»¥ä¸ºç€è¦ç”¨å®Œå…¨ç›¸åŒçš„ç­¾å实现æ¯ä¸ªæ–¹æ³•ã€‚å› æ­¤å®žçŽ°æŽ¥å£æ–¹æ³•æ—¶åQŒä¸€å®šè¦ä¿è¯˜q”回¾cÕdž‹çš„å…¼å®ÒŽ€§ã€?/font>å…许实现¾cÈš„实现æ–ÒŽ³•˜q”回¾cÕdž‹å®šä¹‰ä¸ºåŽŸ˜q”回¾cÕdž‹çš„å­¾cÕdž‹ã€‚这个跟¾l§æ‰¿ä¸­å­¾c»è¦†ç›–父¾cÀL–¹æ³•å¾ˆç›æ€¼¼ã€?br />
8ã€ä¾‹å­ï¼š
FirstInterface.java

SecondInterface.java

ImplementClass.java

Main.java

˜q行¾l“æžœåQ?br />20
21
22
I love you!
I love you!
9ã€åŒ¿å内部类(anonymous inner class):
注æ„一个特别的例å­
AnonymousInnerClass.java
而java.util.Comparatorçš„å®šä¹‰äØ“
Comparator.java
我敢开始看觉得奇怪,好åƒåœ¨åŒ¿å内部类中没有实现方法boolean equals(Object obj);åŽæ¥ä»”细一惻I¼Œå…¶å®žæ‰€æœ‰çš„¾c»éƒ½æ˜¯Object的孾c»ï¼Œè€ŒObject正好有该æ–ÒŽ³•的实玎ͼŒæ‰€ä»¥ï¼Œå³ä‹Éæ²¡æœ‰å®žçŽ°è¯¥æ–¹æ³•ä¹Ÿæ˜¯åˆæ³•çš„ã€?br />

Jafe 2007-05-26 00:16 å‘表评论
]]>
Java ¿UÖM½æ“作http://www.aygfsteel.com/JafeLee/archive/2007/05/22/119177.htmlJafeJafeTue, 22 May 2007 09:17:00 GMThttp://www.aygfsteel.com/JafeLee/archive/2007/05/22/119177.htmlhttp://www.aygfsteel.com/JafeLee/comments/119177.htmlhttp://www.aygfsteel.com/JafeLee/archive/2007/05/22/119177.html#Feedback0http://www.aygfsteel.com/JafeLee/comments/commentRss/119177.htmlhttp://www.aygfsteel.com/JafeLee/services/trackbacks/119177.htmlåQ?åQ?lt;< : (left-shift), 最低ä½è¡?
åQ?åQ?gt;> : åQˆsigned right-shift), å³ç§»˜q‡ç¨‹ä½¿ç”¨½W¦å·ä½æ‰©å±•(sign extension)åQŒå³å¦‚æžœ½W¦å·ä¸ÞZØ“1则高ä½è¡¥1åQŒÂ?æ˜?则补0åQŒä¹Ÿž®±æ˜¯é€»è¾‘å³ç§»
åQ?åQ?gt;>> : (unsigned right-shit),å³ç§»˜q‡ç¨‹ä½¿ç”¨é›¶æ‰©å±•(zero extension),åÏxœ€é«˜ä½ä¸€å¾‹è¡¥0åQŒä¹Ÿž®±æ˜¯½Ž—术å³ç§»
åQ?åQ? ¿UÖM½æ“作的数æ®ç±»åž‹å¯ä»¥æ˜¯byte, char, short, int, long型,但是对byte, char, short˜q›è¡Œæ“ä½œæ—¶ä¼šå…ˆæŠŠå®ƒä»¬å˜æˆä¸€ä¸ªint型,最åŽå¾—åˆîC¸€ä¸ªint型的¾l“æžœåQŒå¯¹longåž‹æ“作时得到一个long型结果,ä¸å¯ä»¥å¯¹boolean型进 行æ“作ã€?br />åQ?åQ‰ç§»ä½æ“作符å¯ä»¥å’Œï¼åˆåƈèµäh¥åQŒå³ <<= ã€?>>= å’?>>>=。例å¦?a >>= 2; 表示ž®†aå³ç§»ä¸¤ä½åŽçš„值釿–°èµ‹¾l™a。当时在使用˜q™ä¸‰ä¸ªæ“作符å¯?byte, char, short型数æ®è¿›è¡Œæ“ä½œæ—¶è¦æ³¨æ„,例如有一下代ç ç‰‡ŒDµï¼š
public class ShiftTest
{
    
public static void main(String [] args)
    {
        
byte a;
        
byte b;
        
byte c;
        a 
= 127;
        b 
= 127;
        c 
= 127;
        a 
<<= 2;
        System.out.println(a);
        System.out.println(b 
<<= 2);
        System.out.println(c 
<< 2);
    }
}
    
˜q行¾l“果是:
            -4
            -4
             508
˜q? 说明了在æ“作a <<= 2 执行˜q‡ç¨‹æ˜¯è¿™æ ïLš„åQšå…ˆž®?byte型的æ•?127å˜æˆint型,左移2ä½å¾—åˆ? 508åQŒç„¶åŽæŠŠ508赋给byteåž‹å˜é‡aæ—¶åªæ˜¯ç®€å•地"折断"(truncate)得到æ•?4。编译时¾~–译器ä¸ä¼šæ½CÞZ½ å¯èƒ½æŸå¤±¾_‘Öº¦åQˆå®žé™…上在本例中¼‹? 实是æŸå¤±¾_‘Öº¦äº†ï¼‰åQŒä½†æ˜¯å¦‚果你把a <<= 2æ”ÒŽˆ a = a << 2;¾~–译器就会æ½Cºå¯èƒ½æŸå¤Þq²¾åº¦äº†ã€?img src ="http://www.aygfsteel.com/JafeLee/aggbug/119177.html" width = "1" height = "1" />

Jafe 2007-05-22 17:17 å‘表评论
]]>
Java ç‚ÒŽ»´ (1)http://www.aygfsteel.com/JafeLee/archive/2007/05/21/118918.htmlJafeJafeMon, 21 May 2007 08:30:00 GMThttp://www.aygfsteel.com/JafeLee/archive/2007/05/21/118918.htmlhttp://www.aygfsteel.com/JafeLee/comments/118918.htmlhttp://www.aygfsteel.com/JafeLee/archive/2007/05/21/118918.html#Feedback0http://www.aygfsteel.com/JafeLee/comments/commentRss/118918.htmlhttp://www.aygfsteel.com/JafeLee/services/trackbacks/118918.html 1ã€?/font>Java˜qç®—½W¦ä¼˜å…ˆçñ”åQ?br />
Operator Precedence

Operators

Associativity

[] . () (method call)

Left to right

! ~ ++ -- + (unary) �/tt> (unary) () (cast) new

Right to left

* / %

Left to right

+ -

Left to right

<< >> >>>

Left to right

< <= > >= instanceof

Left to right

== !=

Left to right

&

Left to right

^

Left to right

|

Left to right

&&

Left to right

||

Left to right

?:

Right to left

= += -= *= /= %= &= |= ^= <<= >>= >>>=

Right to left


注æ„åQ?br />
  • && || ! çš„æ“作数åªèƒ½ç”¨äºŽboolean æˆ?Boolean
  • &  | çš„æ“作数既å¯ä»¥ç”¨äºŽboolean(Boolean)或者整å½?ä¸ä»…仅是int型)åQŒä½†ä¸¤ä¸ªæ“作数的¾cÕdž‹å¿…须一è‡?/li>
  • ~ä¸èƒ½ç”¨äºŽboolean(Boolean)型,但å¯ä»¥ç”¨äºŽæ•´å½¢ï¼Œå¤§æ¦‚æ˜¯äØ“äº†å’Œ ! 区别开æ¥å§
  • & | 没有短èµ\计算çš?br />
2�/font>
Java Integer Types

Type

Storage Requirement

Range (Inclusive)

int

4 bytes

�,147,483,648 to 2,147,483,647 (just over 2 billion)

short

2 bytes

�2,768 to 32,767

long

8 bytes

�,223,372,036,854,775,808 to 9,223,372,036,854,775,807

byte

1 byte

�28 to 127

      char                        2 bytes                             0 to 65535

3�/font>

Floating-Point Types

Type

Storage Requirement

Range

float

4 bytes

approximately ûu3.40282347E+38F (6â€? significant decimal digits)

double

8 bytes

approximately ûu1.79769313486231570E+308 (15 significant decimal digits)


4ã€final 实例域(final instance field)åQšå¯ä»¥å°†å®žä¾‹åŸŸå®šä¹‰äØ“finalåQŒæž„建对象时必须åˆå§‹åŒ–这样得域,也就是说åQŒå¿…™åÈ¡®ä¿åœ¨æ¯ä¸€ä¸ªæž„造器执行之åŽåQŒè¿™ä¸ªåŸŸçš„倯D¢«è®„¡½®ã€‚ä½†æ˜¯ï¼Œé™æ€å¸¸é‡å¿…™åÕdœ¨å£°æ˜Žçš„åŒæ—¶ä¹Ÿè¢«åˆå§‹åŒ–ã€?br />
5ã€for each 循环åQ?br />for (variable : collection) statment
例如åQšfor (int element : a)
          System.out.println(element);
该代ç ç‰‡ŒD‰|‰“å°æ•°¾l„açš„æ¯ä¸€ä¸ªå…ƒç´ ï¼Œä¸€ä¸ªå…ƒç´ å ä¸€è¡?br />
6ã€åˆæ³•çš„Java标识½W¦ï¼šå¯ä»¥ä»¥ä¸‹åˆ’线ã€å­—æ¯æˆ–¾ŸŽå…ƒ½W¦å·$å¼€å¤ß_¼ŒåŽé¢å¯ä»¥è·Ÿä¸‹åˆ’çº¿ã€æ•°å­—ã€å­—æ¯ã€ç¾Žå…ƒç¬¦å—÷€?.42以åŽçš„java标识½W¦ä¹Ÿå¯ä»¥åŒ…嫿±‰å­—åQŒåŒ…括开头ã€?br />

]]>
Java abstract ¾c?/title><link>http://www.aygfsteel.com/JafeLee/archive/2007/05/20/118706.html</link><dc:creator>Jafe</dc:creator><author>Jafe</author><pubDate>Sun, 20 May 2007 10:27:00 GMT</pubDate><guid>http://www.aygfsteel.com/JafeLee/archive/2007/05/20/118706.html</guid><wfw:comment>http://www.aygfsteel.com/JafeLee/comments/118706.html</wfw:comment><comments>http://www.aygfsteel.com/JafeLee/archive/2007/05/20/118706.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/JafeLee/comments/commentRss/118706.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/JafeLee/services/trackbacks/118706.html</trackback:ping><description><![CDATA[    <font size="3">虽然接触Javaå·²ç»å¿«ä¸€òq´äº†åQŒä¹Ÿ¾pÈ»Ÿçš„å­¦˜q‡Java语法åQŒä¸˜q‡å¾ˆå¤šæ¦‚念到现在都æžä¸æ¸…楚,现在军_®šé‡æ–°æŠŠè¿™äº›æ¨¡¾pŠçš„æ¦‚å¿µé‡æ–°æ¸©ä¹ ä¸€é,今天ž®Þqްæ€È»“一下抽象类åQˆabstract class)ã€?br /><br /> 1ã€ä‹É用abstract¾cÈš„动机åQšå¯ä»¥å‚è€?<span id="wmqeeuq" class="v1">Cay S. Horstmann</span>, <span id="wmqeeuq" class="v1">Gary Cornel 写的书ã€?strong>Core Javaâ„?2 Volume I - Fundamentals, Seventh Edition</strong> 》(™åÞZ¾¿¾|—嗦一下,该书是å¶è§è¿‡æœ€å¥½çš„Java入门书) “Classes, Superclasses, and Subclasses â€ä¸€èŠ‚ï¼Œå®šä¹‰ä¸€ä¸ªabstract classçš„æ ¼å¼æ˜¯åQšä¿®é¥°ç¬¦åQˆpublic, private, etc)+abstract+¾cÕd <font color="#ff0000">或è€?/font> abstract + 修饰½W?+ ¾cÕdã€?/span><br /><span id="wmqeeuq" class="v1"></span><br /><span id="wmqeeuq" class="v1">2ã€å¦‚果一个类臛_°‘存在一个抽象方æ³?abstract method)åQŒåˆ™å®ƒè‡ªíw«å¿…™åÕd£°æ˜Žæˆä¸€ä¸ªæŠ½è±¡ç±»ã€‚但一个类å¯ä»¥è¢«å£°æ˜Žæˆä¸€ä¸ªæŠ½è±¡ç±»å³ä‹É它没有ä“Q何抽象方法。声明一个abstrac</span>t methodçš„æ ¼å¼æ˜¯åQ?/font><font size="3"><span id="wmqeeuq" class="v1">修饰½W¦ï¼ˆpublic, private, etc)+abstract+˜q”回¾cÕdž‹ + æ–ÒŽ³•å?<font color="#ff0000">或è€?/font> abstract + 修饰½W?+ ˜q”回¾cÕdž‹ + æ–ÒŽ³•åã€?/span></font><br /><font size="3"><span id="wmqeeuq" class="v1"></span><br /><span id="wmqeeuq" class="v1">3ã€ä¸€ä¸ªæŠ½è±¡ç±»å¯ä»¥æœ‰æ•°æ®åŸŸå’ŒéžæŠ½è±¡æ–ÒŽ³•åQˆconcrete data and concrete methods)ã€?/span><br /><span id="wmqeeuq" class="v1"></span><br /><span id="wmqeeuq" class="v1">4ã€å½“一个孾cÈ‘ô承æŸä¸ªæŠ½è±¡ç±»æ—Óž¼Œå®ƒå¯ä»¥æœ‰ä¸¤ä¸ªé€‰æ‹©åQ?br />    (1)    部分实现或完全ä¸å®žçŽ°çˆ¶ç±»çš„æ‰€æœ‰æŠ½è±¡æ–¹æ³•ï¼Œä½†æ­¤æ—¶å­¾cÕd¿…™åÕd£°æ˜Žäؓ抽象¾c…R€?br />    (2)    实现父类所有的抽象æ–ÒŽ³•åQŒæ­¤æ—¶ä¹‹¾cÖM¸æ¯”å£°æ˜ŽäØ“æŠ½è±¡¾c…R€?br /><br />5ã€æŠ½è±¡ç±»ä¸èƒ½è¢«å®žä¾‹åŒ–åQˆbe instantiated)åQŒä½†å¯ä»¥å®žä¾‹åŒ–éžæŠ½è±¡å­ç±»åQˆconcrete subclass)ã€?br />   å¯ä»¥å£°æ˜ŽæŠ½è±¡¾cÕd˜é‡ï¼Œä½†è¯¥å˜é‡å¿…须指å‘ä¸€ä¸ªéžæŠ½è±¡å­ç±»</span><span id="wmqeeuq" class="v1">.看下é¢ä¸€ä¸ªä¾‹å­ï¼š<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">   </span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">.  Person [] people </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Person[</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">];    <br />   </span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">. people[</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Employee(<img src="http://www.aygfsteel.com/images/dot.gif" />);    <br />   </span><span style="color: rgb(0, 0, 0);">3</span><span style="color: rgb(0, 0, 0);">. people[</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Student(<img src="http://www.aygfsteel.com/images/dot.gif" />);  <br />   </span><span style="color: rgb(0, 0, 0);">4</span><span style="color: rgb(0, 0, 0);">. </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> (Person p : people)  <br />   </span><span style="color: rgb(0, 0, 0);">5</span><span style="color: rgb(0, 0, 0);">.    System.out.println(p.getName() </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> p.getDescription());  <br /></span></div></span></font><span id="wmqeeuq" class="v1"><font size="3"><font size="3">注æ„代ç ä¸­çš„一个调ç”?p.getDescription().å¯èƒ½æœ‰äh会担心这里调用了一个没定义的方法。但是, ç”׃ºŽ<font size="3">ä¸èƒ½æž„造抽象类Person的对象,所以p永远ä¸ä¼šè°ƒåЍPerson对象åQŒè€Œæ˜¯åªä¼šè°ƒç”¨è¯¸å¦‚Employee或Student˜q?/font></font><font size="3">æ ïLš„具体å­ç±»æ–ÒŽ³•ã€?/font></font><font color="#ff0000" size="3">注æ„åQŒå¦‚果没有定义Person中抽象方法getDescription()但是通过p调用getDescription()则会产生¾~–译错误åQŒç¼–译器åªå…许调用在¾cÖM¸­å£°æ˜Žçš„æ–¹æ³•ã€?/font></span><font size="3"><br /></font><span id="wmqeeuq" class="v1"><font size="3"><br />6ã€æ‘˜è‡ªã€ŠCore Java 2》的一个例å­ï¼š</font><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><img id="Code_Closed_Image_075958" onclick="this.style.display='none'; Code_Closed_Text_075958.style.display='none'; Code_Open_Image_075958.style.display='inline'; Code_Open_Text_075958.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11" /><img id="Code_Open_Image_075958" style="display: none;" onclick="this.style.display='none'; Code_Open_Text_075958.style.display='none'; Code_Closed_Image_075958.style.display='inline'; Code_Closed_Text_075958.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11" /><span id="Code_Closed_Text_075958" style="border: 1px solid rgb(128, 128, 128); background-color: rgb(255, 255, 255);">PersonTest.java</span><span id="Code_Open_Text_075958" style="display: none;"><br /><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />   </span><span style="color: rgb(128, 128, 128);">@version</span><span style="color: rgb(0, 128, 0);"> 1.01 2004-02-21<br />   </span><span style="color: rgb(128, 128, 128);">@author</span><span style="color: rgb(0, 128, 0);"> Cay Horstmann<br /></span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br /><br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.text.</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.util.</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">;<br /><br /></span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);"> PersonTest<br />{  <br />   </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> main(String[] args)<br />   {  <br />      Person[] people </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Person[</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">];<br /><br />      </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> fill the people array with Student and Employee objects</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">      people[</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Employee(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Harry Hacker</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">50000</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">1989</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">10</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">);<br />      people[</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Student(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Maria Morris</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">computer science</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br /><br />      </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> print out names and descriptions of all Person objects</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">      </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> (Person p : people)<br />         System.out.println(p.getName() </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> p.getDescription());<br />   }<br />}<br /><br /></span><span style="color: rgb(0, 0, 255);">abstract</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);"> Person<br />{  <br />   </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> Person(String n)<br />   {  <br />      name </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> n;<br />   }<br /><br />   </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">abstract</span><span style="color: rgb(0, 0, 0);"> String getDescription();<br /><br />   </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> String getName()<br />   {  <br />      </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> name;<br />   }<br /><br />   </span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);"> String name;<br />}<br /><br /></span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);"> Employee </span><span style="color: rgb(0, 0, 255);">extends</span><span style="color: rgb(0, 0, 0);"> Person<br />{  <br />   </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> Employee(String n, </span><span style="color: rgb(0, 0, 255);">double</span><span style="color: rgb(0, 0, 0);"> s,<br />      </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> year, </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> month, </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> day)<br />   {  <br />      </span><span style="color: rgb(0, 0, 255);">super</span><span style="color: rgb(0, 0, 0);">(n);<br />      salary </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> s;<br />      GregorianCalendar calendar </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> GregorianCalendar(year, month </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">, day);<br />      hireDay </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> calendar.getTime();<br />   }<br /><br />   </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">double</span><span style="color: rgb(0, 0, 0);"> getSalary()<br />   {  <br />      </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> salary;<br />   }<br /><br />   </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> Date getHireDay()<br />   {  <br />      </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> hireDay;<br />   }<br /><br />   </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> String getDescription()<br />   {  <br />      </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> String.format(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">an employee with a salary of $%.2f</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, salary);<br />   }<br /><br />   </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> raiseSalary(</span><span style="color: rgb(0, 0, 255);">double</span><span style="color: rgb(0, 0, 0);"> byPercent)<br />   {  <br />      </span><span style="color: rgb(0, 0, 255);">double</span><span style="color: rgb(0, 0, 0);"> raise </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> salary </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);"> byPercent </span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">;<br />      salary </span><span style="color: rgb(0, 0, 0);">+=</span><span style="color: rgb(0, 0, 0);"> raise;<br />   }<br /><br />   </span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">double</span><span style="color: rgb(0, 0, 0);"> salary;<br />   </span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);"> Date hireDay;<br />}<br /><br /><br /></span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);"> Student </span><span style="color: rgb(0, 0, 255);">extends</span><span style="color: rgb(0, 0, 0);"> Person<br />{  <br />   </span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />      </span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);"> n the student's name<br />      </span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);"> m the student's major<br />   </span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />   </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> Student(String n, String m)<br />   {  <br />      </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> pass n to superclass constructor</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">      </span><span style="color: rgb(0, 0, 255);">super</span><span style="color: rgb(0, 0, 0);">(n);<br />      major </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> m;<br />   }<br /><br />   </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> String getDescription()<br />   {  <br />      </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">a student majoring in </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> major;<br />   }<br /><br />   </span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);"> String major;<br />}<br /></span></span></div><br />å‚考资料:<br /><br /></span><p style="color: rgb(96, 24, 255);"><span id="wmqeeuq" class="v1"><span style="font-weight: bold; font-size: 18pt;">Core Java 2 Volume I - Fundamentals, Seventh Edition</span></span></p><p>by Cay S. Horstman, Gary Cornell<br /></p><span id="wmqeeuq" class="v1"><br /></span><span id="wmqeeuq" class="v1"></span><span id="wmqeeuq" class="v1"></span><br /><span id="wmqeeuq" class="v1"></span><img src ="http://www.aygfsteel.com/JafeLee/aggbug/118706.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/JafeLee/" target="_blank">Jafe</a> 2007-05-20 18:27 <a href="http://www.aygfsteel.com/JafeLee/archive/2007/05/20/118706.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">¿ËÀ­ÂêÒÀÊÐ</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>| <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>