您的位置:首页 > 职场人生

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

2015-06-22 22:13 786 查看
------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.*;
impo
4000
rt 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()));
}
}


                  

        

                

       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Collections Arrays