zoukankan      html  css  js  c++  java
  • 《Effective Java 第三版》——第九章 通用编程

    《Effective Java 第三版》——第二章 创建和销毁对象

    《Effective Java 第三版》——第三章 所有对象都通用的方法

    《Effective Java 第三版》——第四章 类和接口 

    《Effective Java 第三版》——第五章 泛型

     《Effective Java 第三版》——第六章 枚举和注解

     《Effective Java 第三版》——第七章 Lambda 和 Stream 

     《Effective Java 第三版》——第八章 方法

    《Effective Java 第三版》——第九章 通用编程

     

    package effectivejava.chapter9.item58;
    import java.util.*;
    
    // Same bug as NestIteration.java (but different symptom)!! - Page 213
    public class DiceRolls {
        enum Face { ONE, TWO, THREE, FOUR, FIVE, SIX }
    
        public static void main(String[] args) {
            // Same bug, different symptom!
            Collection<Face> faces = EnumSet.allOf(Face.class);
    
            for (Iterator<Face> i = faces.iterator(); i.hasNext(); )
                for (Iterator<Face> j = faces.iterator(); j.hasNext(); )
                    System.out.println(i.next() + " " + j.next());
    
            System.out.println("***************************");
    
            for (Face f1 : faces)
                for (Face f2 : faces)
                    System.out.println(f1 + " " + f2);
        }
    }
    /Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/bin/java -Dfile.encoding=UTF-8 -classpath /Users/didi/git/effective-java-3e-source-code/bin effectivejava.chapter9.item58.DiceRolls
    ONE ONE
    TWO TWO
    THREE THREE
    FOUR FOUR
    FIVE FIVE
    SIX SIX
    ***************************
    ONE ONE
    ONE TWO
    ONE THREE
    ONE FOUR
    ONE FIVE
    ONE SIX
    TWO ONE
    TWO TWO
    TWO THREE
    TWO FOUR
    TWO FIVE
    TWO SIX
    THREE ONE
    THREE TWO
    THREE THREE
    THREE FOUR
    THREE FIVE
    THREE SIX
    FOUR ONE
    FOUR TWO
    FOUR THREE
    FOUR FOUR
    FOUR FIVE
    FOUR SIX
    FIVE ONE
    FIVE TWO
    FIVE THREE
    FIVE FOUR
    FIVE FIVE
    FIVE SIX
    SIX ONE
    SIX TWO
    SIX THREE
    SIX FOUR
    SIX FIVE
    SIX SIX
    
    Process finished with exit code 0
    package effectivejava.chapter9.item58;
    
    import java.util.*;
    
    public class Card {
        private final Suit suit;
        private final Rank rank;
    
        // Can you spot the bug?
        enum Suit { CLUB, DIAMOND, HEART, SPADE }
        enum Rank { ACE, DEUCE, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT,
            NINE, TEN, JACK, QUEEN, KING }
    
        static Collection<Suit> suits = Arrays.asList(Suit.values());
        static Collection<Rank> ranks = Arrays.asList(Rank.values());
    
        Card(Suit suit, Rank rank ) {
            this.suit = suit;
            this.rank = rank;
        }
    
        public static void main(String[] args) {
            List<Card> deck = new ArrayList<>();
            
            for (Iterator<Suit> i = suits.iterator(); i.hasNext(); )
                for (Iterator<Rank> j = ranks.iterator(); j.hasNext(); )
                    deck.add(new Card(i.next(), j.next()));
    
    //        // Preferred idiom for nested iteration on collections and arrays
    //        for (Suit suit : suits)
    //            for (Rank rank : ranks)
    //                deck.add(new Card(suit, rank));
        }
    }
    /Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/bin/java -Dfile.encoding=UTF-8 -classpath /Users/didi/git/effective-java-3e-source-code/bin effectivejava.chapter9.item58.Card
    Exception in thread "main" java.util.NoSuchElementException
        at java.base/java.util.Arrays$ArrayItr.next(Arrays.java:4452)
        at effectivejava.chapter9.item58.Card.main(Card.java:27)
    
    Process finished with exit code 1

     不能遍历同时修改...

    package effectivejava.chapter9.item59;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.URL;
    
    // Printing the contents of a URL with transferTo, added in Java 9 (Page 269)
    public class Curl {
        public static void main(String[] args) throws IOException {
            try (InputStream in = new URL(args[0]).openStream()) {
                in.transferTo(System.out);
            }
        }
    }
    /Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/bin/java -Dfile.encoding=UTF-8 -classpath /Users/didi/git/effective-java-3e-source-code/bin effectivejava.chapter9.item59.Curl http://www.baidu.com
    <!DOCTYPE html>
    <!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=百度一下 class="bg s_btn"></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class=mnav>新闻</a> <a href=http://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>地图</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>视频</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>贴吧</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&amp;tpl=mn&amp;u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>登录</a> </noscript> <script>document.write('<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u='+ encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ '" name="tj_login" class="lb">登录</a>');</script> <a href=//www.baidu.com/more/ name=tj_briicon class=bri style="display: block;">更多产品</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>关于百度</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>&copy;2017&nbsp;Baidu&nbsp;<a href=http://www.baidu.com/duty/>使用百度前必读</a>&nbsp; <a href=http://jianyi.baidu.com/ class=cp-feedback>意见反馈</a>&nbsp;京ICP证030173号&nbsp; <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>
    
    Process finished with exit code 0
    package effectivejava.chapter9.item59;
    import java.util.*;
    
    // Random number generation is hard! - Page 215
    public class RandomBug {
        // Common but deeply flawed!
        static Random rnd = new Random();
    
        static int random(int n) {
            return Math.abs(rnd.nextInt()) % n;
        }
    
        public static void main(String[] args) {
            int n = 2 * (Integer.MAX_VALUE / 3);
            int low = 0;
            for (int i = 0; i < 1000000; i++)
                if (random(n) < n/2)
                    low++;
            System.out.println(low);
        }
    }
    /Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/bin/java -Dfile.encoding=UTF-8 -classpath /Users/didi/git/effective-java-3e-source-code/bin effectivejava.chapter9.item59.RandomBug
    666550
    
    Process finished with exit code 0

     

    ThreadLocal

    package effectivejava.chapter9.item61;
    
    // What does this program do? - Page 274
    public class Unbelievable {
        static Integer i;
    
        public static void main(String[] args) {
            if (i == 42)
                System.out.println("Unbelievable");
        }
    }
    /Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/bin/java -Dfile.encoding=UTF-8 -classpath /Users/didi/git/effective-java-3e-source-code/bin effectivejava.chapter9.item61.Unbelievable
    Exception in thread "main" java.lang.NullPointerException
        at effectivejava.chapter9.item61.Unbelievable.main(Unbelievable.java:8)
    
    Process finished with exit code 1

    Integer i 在做 == 时自动拆箱,报 NullPointerException 错误

    
    

     

     

     

     

     

     

  • 相关阅读:
    ASIHttpRequest框架使用说明-----post请求 以及监听网络
    tableView中当我们向右滑动不出现删除按钮(实现了代理方法)的原因
    自定义view 添加动画的时候一定要注意
    判断一个点是否在view上
    Razor视图引擎 语法学习(二)
    Razor视图引擎 语法学习(一)
    Razor语法大全
    文件
    win10下的使用
    gdb调试器的使用
  • 原文地址:https://www.cnblogs.com/cx2016/p/13273238.html
Copyright © 2011-2022 走看看