黑马程序员_静态导入 自动拆装箱 for增强

import语句可以导入一个类或某个包中的所有类
import static语句导入一个类中的某个静态方法或所有静态方法

语法举例: 
import static java.lang.Math.sin;
import static java.lang.Math.*;

Ex.

 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. public class Demo12 {  
  2.     public static void main(String[] args) {  
  3.         System.out.println(Math.max(12, 15));  
  4.     }  
  5. }  
  6.   
  7. 使用静态导入的:  
  8. package reviewDemo76;  
  9. import static java.lang.Math.*;  
  10.   
  11. public class Demo12 {  
  12.     public static void main(String[] args) {  
  13.         System.out.println(max(12, 15));  
  14.     }  
  15. }  

 

 

<二>自动拆箱与装箱

——> -128~127之间的特殊性。为什么要这样设计,好处?
——>  享元模式(Flyweight Pattern):享元模式的特点是,复用我们内存中已存在的对象,降低系统创建对象实例。

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. public class Demo2 {  
  2.   
  3.     public static void main(String[] args) {  
  4.         List list = new ArrayList();  
  5.         int i = 10;//Integer   
  6.         list.add(new Integer(i));  
  7.           
  8.         //5.0的做法  
  9.         int j = 100;  
  10.         list.add(j);//实际上编译器把基本类型的j自动调用了new Integer(10),传递给集合  
  11.           
  12.         //遍历  
  13.         int k = (Integer)list.get(1);//自动拆箱  
  14.         System.out.println(k);  
  15.         //注意的问题  
  16. //      Integer ii = null;  
  17. //      int l = ii;  
  18. //      System.out.println(l);  
  19.         System.out.println("-------------------------");  
  20.           
  21.         Boolean b1 = true;  
  22.         Boolean b2 = true;  
  23.         System.out.println(b1==b2);  
  24.           
  25.         Integer i1 = 100;  
  26.         Integer i2 = 100;  
  27.         System.out.println(i1==i2);  
  28.           
  29.         Integer i3 = 129;  
  30.         Integer i4 = 129;  
  31.         System.out.println(i3==i4);  
  32.           
  33.         Float f1 = 0.1f;  
  34.         Float f2 = 0.1f;  
  35.         System.out.println(f1==f2);  
  36.     }  

 

我的总结:对于享元模式,将最常用的封装以便于我们可以复用!

 

<三>增强for循环

 

 

语法:
     for ( type 变量名:集合变量名 )  { … } 
注意事项:
     迭代变量必须在( )中定义!
 集合变量可以是数组或实现了Iterable接口的集合类
Ex.

 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
    1. //增强for循环  
    2. public class Demo3 {  
    3.     //数组  
    4.     @Test    //ctrl+1  
    5.     public void test1(){  
    6.         String s[] = {"a","b","c"};  
    7.         for(int i=0;i<s.length;i++){  
    8.             System.out.println(s[i]);  
    9.         }  
    10.           
    11.         for(String ss:s){  
    12.             System.out.println(ss);  
    13.         }  
    14.           
    15.     }  
    16.     @Test  
    17.     //List  
    18.     public void test2(){  
    19.         List l = new ArrayList();  
    20.         l.add("aa");  
    21.         l.add("bb");  
    22.         l.add("cc");  
    23.           
    24.         Iterator it = l.iterator();  
    25.         while(it.hasNext()){  
    26.             String s = (String)it.next();  
    27.             System.out.println(s);  
    28.         }  
    29.           
    30.           
    31.         for(Object obj:l){  
    32. //          String s = (String)obj;  
    33. //          System.out.println(s);  
    34.             System.out.println(obj);  
    35.         }  
    36.     }  
    37.     //传统方式遍历Map  
    38.     @Test  
    39.     public void test3(){  
    40.         Map map = new LinkedHashMap();  
    41.         map.put("a", "aaa");  
    42.         map.put("b", "bbb");  
    43.         map.put("c", "ccc");  
    44.           
    45.         Set keys = map.keySet();  
    46.         Iterator it = keys.iterator();  
    47.         while(it.hasNext()){  
    48.             String key = (String)it.next();  
    49.             String value = (String) map.get(key);  
    50.             System.out.println(key+"="+value);  
    51.         }  
    52.     }  
    53.       
    54.     @Test//增强for遍历map方式一  
    55.     public void test31(){  
    56.         Map map = new LinkedHashMap();  
    57.         map.put("a", "aaa");  
    58.         map.put("b", "bbb");  
    59.         map.put("c", "ccc");  
    60.           
    61.         Set keys = map.keySet();  
    62.         for(Object obj:keys){  
    63.             String key = (String)obj;  
    64.             String value = (String) map.get(key);  
    65.             System.out.println(key+"="+value);  
    66.         }  
    67.           
    68.     }  
    69.     //传统方式遍历Map  
    70.     @Test  
    71.     public void test4(){  
    72.         Map map = new LinkedHashMap();  
    73.         map.put("a", "aaa");  
    74.         map.put("b", "bbb");  
    75.         map.put("c", "ccc");  
    76.           
    77.         Set me = map.entrySet();  
    78.         Iterator it = me.iterator();  
    79.         while(it.hasNext()){  
    80.             Map.Entry m = (Map.Entry)it.next();  
    81.             String key = (String) m.getKey();  
    82.             String value = (String)m.getValue();  
    83.             System.out.println(key+"="+value);  
    84.         }  
    85.           
    86.     }  
    87.     @Test//增强for循环遍历map方式二  
    88.     public void test41(){  
    89.         Map map = new LinkedHashMap();  
    90.         map.put("a", "aaa");  
    91.         map.put("b", "bbb");  
    92.         map.put("c", "ccc");  
    93.           
    94.         for(Object obj:map.entrySet()){  
    95.             Map.Entry me = (Map.Entry )obj;  
    96.             String key = (String) me.getKey();  
    97.             String value = (String)me.getValue();  
    98.             System.out.println(key+"="+value);  
    99.         }  
    100.           
    101.     }  
    102.     @Test//增强for的一些细节  
    103.     public void test5(){  
    104.         int arr[] = {1,1,1};  
    105.         for(int i:arr){  
    106.             i = 10;  
    107.         }  
    108.         //循环时改元素的值必须使用传统方式  
    109. //      for(int i=0;i<arr.length;i++){  
    110. //          arr[i] = 100;  
    111. //      }  
    112.         System.out.println(arr[0]);  
    113.     }  
    114.     @Test  
    115.     public void test6(){  
    116.         List list = new ArrayList();  
    117.         list.add("p");  
    118.         for(Object obj:list){  
    119.             obj = "ppp";  
    120.         }  
    121.         System.out.println(list.get(0));  
    122.     }  
posted @ 2015-04-14 17:57  计无施  阅读(114)  评论(0编辑  收藏  举报