黑马程序员---2015.6.22java基础笔记---Collections---Arrays---方法的可变参数---常用类介绍

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1.集合框架的工具类

        Collections
        a.让集合逆序排序
            TreeSet ts = new TreeSet(Collections.reverseOrder());
        b.按照自己定义的方式进行逆序排序
            class StrLenComparator implements Comparator{};
            TreeSet ts = new TreeSet(Collections.reverseOrder(new StrLenComparator()));     
2.Arrays工具类

        //把数组变成List集合有什么好处?
        /*    可以使用集合的思想和方法来操作数组中的元素
        
            注意:将数组变成集合,不可以使用集合的增删方法
                        因为,数组的长度是固定的。
                        
                        contains,get,indexOf
                        如果增删,会发生操作异常。
        
        */
        String[] str = {"abc","cc","kkk"};
        List<String> list = Arrays.asList(arr);
        sop(list.contains("cc"));    
        
3.如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素。
    如果数组中的元素是基本类型,那么将该数组作为集合中的元素存在。
        int[] i = {2,3,4};
        List<int[]> list = Arrays.asList(i);//这样的话sop(list)输出i数组的地址
        
        Integer[] i = {2,3,4};
        List<Integer> list = Arrays.asList(i)//这样的话sop(list)输出 [2,3,4]
        
4.集合变数组
        Collection接口中的toArray方法
            ArrayList<String> al = new ArrayList<String>();
            al.add("adc1");al.add("adc2");al.add("adc3");
            
            /*    1.指定类型数组到底定义多长?
                    当指定的长度小于size()时,该方法内部会创建一个新数组,长度为size();
                    当大于size时。不会创建新数组,而是使用传递过来的数组
                
                    2.为什么要将集合变成数组
                        为了限定对元素的操作,不需要进行增删了。
             */
            String[] arr = al.toArray(new String[al.size()]);

5.ArrayList取元素有三种方式
        a.E get(int index)根据角标去元素
        b.迭代器
        c.高级for循环
        
            格式:
                for(数据类型 变量名:被遍历的集合(collection)或者数组)
                {
                
                }
                
                ArrayList<String> al = new ArrayList<String>();
                al.add("aa"); al.add("bb"); al.add("cc");
                //Collection必须是泛型的
                for(String s : al)
                {
                    System.out.println(s);//即遍历到了集合中的对象
                }
            对集合进行遍历,只能获取集合元素,但是不能对集合进行操作。
            迭代器除了遍历,还可以进行remove集合中元素的动作。
            如果是用ListIterator,还可以在遍历过程中,进行增删改查的动作。
6.传统for和高级for有什么区别??
        高级for循环不能对元素进行操作。
7.Map集合运用高级for循环的例子。
        HashMap<Integer,String> hm = new HashMap<Integer,String>();
        hm.put(1,"a"); hm.put(1,"a"); hm.put(1,"a");
        //方式一
            for(Integer i:hm.keySet())
            {
                System.out.println(hm.get(i));
            }
        //方式二
            for(Map.Entry<Integer,String> entry:hm.entrySet())
            {
                System.out.println(entry.getKey()+":"+entry.value());
            }
8.JDK1.5版本出现的新特性
    方法的可变参数
        在使用时注意:可变参数一定要定义在参数列表的最后。
            如:show(String str,int...arr);
        a.可变参数,不用每一次都手动的建立数组对象,
            只要将要操作的元素,作为参数传递即可。
            隐式将这些参数封装成数组    
            public static show(int...arr)
            {
                System.out.println();
            }    
            //调用show方法
            show(1,2,34,5);        
            
9.StaticImport 静态导入
    当类名重名时,需要指定具体的包名
    当方法重名时,需要指定具体所属的对象或者类
    import static java.lang.System.*;//导入System类中的所有静态成员            
    在class文件中就可以这样写:out.println("hello");
    
10.java API中常用的类    
        
/*
System:类中的方法和属性都是静态的
out:标准输出

描述系统的一些信息
获取系统属性信息: Properties getProperties();
*/
import java.util.*;
class SystemDemo
{
    public static void main(String[] args)
    {
            /*
                因为Properties是Hashtable的子类,也就是Map集合的一个子类对象
                那么可以通过map的方法取出该集合中的元素
                该集合中存储的都是字符串,没有泛型定义
            */
            //获取所有属性信息
        /* Properties p = System. getProperties();
         for(Object o:p.keySet())    
         {
                 String s = (String)o;
                 System.out.println(p.get(o));
         }
        */
        
         //如何在系统中自定义一些特有信息呢?
         System.setProperty("myKey","myValue");
        
         //获取指定属性信息
         String value = System.getProperty("os.name");
         System.out.println(value);
         /*可不可以在虚拟机启动时,动态加载一些信息。
              编译后在运行时写: java -Dqiaodong=随便内容 SystemDemo
         */
         String v = System.getProperty("qiaodong");
         System.out.println(v);
    }
}        



/*
Runtime对象
该类没有提供构造方法,而且方法有静态有非静态
说明这类肯定提供了方法获取本类对象,而且该方法时静态的,并且返回值类型是本类类型。

想到了单例。
static Runtime getRuntime();
*/
class RuntimeDemo
{
    public static void main(String[] args) throws Exception
    {
        Runtime runtime = Runtime.getRuntime();
        //单独一个"\"表示转义字符
        Process p = runtime.exec("D:\\QQ\\QQProtect\\Bin\\QQProtect.exe");
                            //用记事本打开SystemDemo.java
                            runtime.exec("notepad.exe  SystemDemo.java");
        Thread.sleep(4000);
    //    p.destroy();
        
    }
}



/
*
    java表示时间
*/
import java.util.*;
import java.text.*;
class DateDemo
{
    public static void main(String[] args)
    {
        Date d = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日E kk:mm:ss");
        String date = sdf.format(d);
        System.out.println(date);
    }
}



11.    Calendar类

import java.util.*;
class CalendarDemo
{
    public static void main(String[] args)
    {
        Calendar c = Calendar.getInstance();
        //设置时间
        //c.set(2020,2,3);
        //改变时间的一个值
        c.add(Calendar.MONTH,2);
        String[] mons = {"一月","二月","三月","四月"
                    ,"五月","六月","七月","八月"
                    ,"九月","十月","十一月","十二月"};


        String[] weeks = {
                        "","星期日","星期一","星期二","星期三","星期四","星期五","星期六",
                            };        
        sop(c.get(Calendar.YEAR)+"年");
        int month = c.get(Calendar.MONTH);
        sop(mons[month]);
        sop(c.get(Calendar.DAY_OF_MONTH )+"日");
        int week = c.get(Calendar.DAY_OF_WEEK );
        sop(weeks[week]);
        sop(c.get(Calendar.HOUR_OF_DAY  ));
        sop(c.get(Calendar.MINUTE  ));
        sop(c.get(Calendar.SECOND));
    }
    
    public static void sop(Object o)
    {
        System.out.println(o);
    }
}    


12.Calendar 小练习

/*
两个练习:
1,获取任意年的二月有多少天。
    思路:根据指定年设置一个时间就是
    c.set(year,2,1)//某一年的3月1日。
    c.add(Calenar.DAY_OF_MONTH,-1);//3月1日,往前推一天,就是2月最后一天。

2,获取昨天的现在这个时刻。
    c.add(Calenar.DAY_OF_MONTH,-1);
*/
import java.util.*;
class  CalendarDemo2
{
    public static void main(String[] args)
    {
        Calendar c = Calendar.getInstance();
        //获取任意年2月有多少天
        //c.set(2012,2,1);//设置任意年的3月1日  0 代表一月,所有2代表3月
        //c.add(Calendar.DAY_OF_MONTH,-1);
        //获取昨天的此刻
        c.add(Calendar.DAY_OF_MONTH,-1);
        printTime(c);
        
        
    }
    
    public static void printTime(Calendar c)
    {
        String[] mons = {"一月","二月","三月","四月"
                    ,"五月","六月","七月","八月"
                    ,"九月","十月","十一月","十二月"};


        String[] weeks = {
                        "","星期日","星期一","星期二","星期三","星期四","星期五","星期六",
                            };        
        sop(c.get(Calendar.YEAR)+"年");
        int month = c.get(Calendar.MONTH);
        sop(mons[month]);
        sop(c.get(Calendar.DAY_OF_MONTH )+"日");
        int week = c.get(Calendar.DAY_OF_WEEK );
        sop(weeks[week]);
    }
    
    public static void sop(Object o)
    {
        System.out.println(o);
    }
}    


12Math类

import java.util.*;
class MathDemo
{
    public static void main(String[] args)
    {
        /*
        Random r = new Random();
        for(int x= 0;x<10;x++)
        {
            //获取随机数0-10不包括10,包括0
            int a = r.nextInt(10);    
            sop(a);
        }
        */
        Myabs() ;
    }
    
    public static void show()
    {
        double d = Math.ceil(12.34); //返回大于指定数据的最小整数
        sop(d);
        double d1 = Math.floor(12.34);//返回小于指定数据的最大整数
        sop(d);
        long l = Math.round(12.45);
        sop(l);
        double d2 = Math.pow(2,3);
        sop("2的3此幂是:"+d2);
    }
    
    public static void sop(Object o)
    {
        System.out.println(o);    
    }
    
        /*
    练习。给定一个小数。
    保留该小数的后两位。
    */
    public static void Myabs()
    {
        StringBuilder sb = new StringBuilder();
        double x = 12.22323498;
        double a = Math.abs(x) ;
        sop("a"+a);
        sb.append(a);
        double temp = x-a;
        while(temp!=0)
        {
            double b = Math.abs(temp*10);
            temp = temp*10-b;
            sop(temp);
            sb.append(b);
        }
        sop(sb.substring(sb.length()-2,sb.length()));
    }
}


                  
        
                
       
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值