黑马程序员-----java基础之常用类

黑马程序员-----java基础之常用类

                                                        ------- android培训java培训、期待与您交流! ----------

最好的投资就是投资自己,知识越多,创造成就和财富的机率越高!

Collections工具类

Collections:这个类在java.util.包下,它是Collection集合的一个工具类,它里面的方法都是static,也就是说可以类名直接打点调用.

Collections中的常用方法介绍

         1.sort方法

                   1.1

                            声明 public static void sort(List list)

                            作用根据集合中元素的自然顺序排序.

                 1.2

                            声明 public static void sort(List list,Comparator c)

                            作用对集合中的元素按照指定比较器c,进行排序.

         2.max,min

                   2.1max

                            声明 public static T max(List<T> list);

                            作用根据集合中元素的自然顺序,得到最大值

                           

                            声明 public static T max(List<T> list,Comparator c)

                            作用:根据指定的比较器c,得到集合中最大值

                   2.2min

                            声明 public static T min(List<T> list);

                            作用根据集合中元素的自然顺序,得到最小值

                           

                            声明 public static T min(List<T> list,Comparator c)

                            作用:根据指定的比较器c,得到集合中最小值

        

         3.shuffle

                      声明 public static void shuffle(List l)

                      作用 对集合中的元素进行乱序.

 

         4.swap

                      声明 public static void swap(List l,int i,int j)

                      作用 对集合中i,j位置上的元素进行交换.

 

         5.reverse

                      声明  public static voidreverse(List list)

                      作用  对集合中元素反转

        

         6.binarySearch

                            二分法查找前提必须有顺序.

                            6.1

                                               要求元素要进行先排序

                                     声明 public static int binarySearch(List<T> list,T Key)

                                     作用在list集合中查找key,如果查找到返回这个元素的索引。

                                                如果不存在,返回的是(-(插入点)-1)

                                                插入点代表key这个元素如果存在于集合中的索引。

 

                            6.2

                                     声明 public static int binarySearch(List<T> list,T key,Comparatorc)

作用 在list集合中查找key,集合的元素的排列顺序根据比较器c来指定,如果查找到返回这个元素的索引。

                                                如果不存在,返回的是(-(插入点)-1)

                                                插入点代表key这个元素如果存在于集合中的索引。

 

将Collection下的集合由线程不安全的变成线程安全的。

 

         1.将List集合变成线程安全

                   Listl=Collections.synchronizedList(List对象);

                   这个l就是线程安全的List对象

         2.将Set集合变成线程安全的

                   Sets=Collections.synchronizedSet(Set对象);

                   s就线程安全的

         3.将Map集合变成线程安全

                   Mapm=Collections.synchronizedMap(Map对象);

                   m就是线程安全的

Arrays工具类

 

Arrays: java.util包下,它里面的方法也是static的.
常用方法:

1.binarySearch

                   对数组进行二分法查找.

         2.copyOf

                   复制数组

         3.fill

                   对数组中的元素的值进行填充

         4.sort

                   对数组进行排序

         5.toString方法

                   声明:public static String toString(数组 arr){}

                   作用:将数组中的元素输出

                              格式 [元素1,元素2,...]

         6.asList

                   List集合与数组相互转换

                            数组----->集合  asList

                            为什么要将数组转换成List集合?

                                     List集合中提供的功能更多,我们使用起来更方便。

                            注意事项:

                   1.当将数组使用asList转换成一个List集合后,不能使用改变集合长度的方法。

                   2.当数组中的元素是基本类型时,是将这个数组做为元素存储到集合中。

                   数组中元素如果是Object,那么是将数组中的每一个元素存储到集合中。

                      集合----->数组  Collection中定义的toArray

                                     Collection中的toArray方法

                                     声明 public T[] toArray(T[] t);

                                     作用:将集合中的元素装入到数组t中,并将这个数组返回。

                  对于参数数组的长度,如果小于,那么返回的数组长度就是集合中元素的个数。

如果参数数组的长度大于集合中元素的个数,那么返回的就是参数数组的长度的数组。

         我们在开发中建议,参数数组长度与集合长度一致。

为什么要将集合变成数组?限定集合中元素的个数。

增强for

jdk1.5新特殊 增强for

增强for底层其实就是使用Iterator去实现的

格式:

                            for(元素类型变量名:集合或数组){

                           

                            }

如果集合没有使用泛型,那么定义元素类型时就是Object。

如果使用了泛型,就可以定义成指定的类型.

只要实现了public interface Iterable<T>这个接口的容器,都可以使用增强for对其进行操作。

使用增强for的弊端:它只适合进行遍历,而不能在遍历过程中进行其它操作。

增强for优点:简化代码,方便了书写.

举例:

//使用增强for遍历List

   public static void method1(){

      List<Integer> list=new ArrayList<>();

      list.add(1);

      list.add(2);

      list.add(3);

      //增强for

      for(int obj:list){ //list集合中所有的元素进行迭代,每一个迭代出来的元素赋值给obj

        System.out.println(obj);

      }

 

//使用增强for对数组遍历

   public static void method3(){

      int[] arr={1,2,3};

      for(int n:arr){

        System.out.println(n);

      }

   }

可变参数

可变参数

                   在定义时使用类型...,这时其时代表的是一个数组,

                   我们在调用时,可以传递一个数组对象,也可以传递多个元素。

注意事项

                   可变参数后面不要在定义参数,如果要定义写在前面。

优点:简化代码

举例:

package com.itheima.test;

 

public classTest {

   public static void main(String[] args) {

      // 调用方法,传递参数.

      int index = find(5,2, 3, 4, 5, 6, 7, 8, 9, 10);

      System.out.println(index);

 

   }

  

   /**

    * find

    * 获取key在数组中的下标.

    * 没有返回-1.

    * */

// key就相当于(5, 2, 3, 4, 5, 6, 7,8, 9, 10);中的5

// int...arr就是第一个5的后面部分这个就叫可变参数.

   public static int find(int key, int... arr) {

      for (int i = 0; i < arr.length; i++) {

        if (arr[i] == key) {

           return i;

        }

      }

      return -1;

   }

 

/*

// * 没有可变参数,我们和自由建成这样或者用数组.

   privatestatic int find(int i, int j, int k, int l, intm, int n, int o,int p, int q, int r) {

     

      return-1;

   }

*/

}

jdk1.5新特性  静态导入

import static 包名.类名.静态方法名;  例如 import static java.lang.Math.*;

如果在某一个类中导入了静态方法,那么在这个类中

         可以直接使用这个静态方法。而不需要去使用类名调用。

使用静态导入弊端:如果出现重复的方法名,这时区分不开。

                           并且代码不方便阅读。

Math  

在java.lang下

                   这个类提供的方法是关于数学运行的方法,并且大部分都是静态的方法。

                   abs求绝对值

                   ceil得到最大的中的最小值

                   floor得到最小中的最大值

                   max(参数1,参数2) 得到两个参数中的最大值

                   min(参数1,参数2) 得到两上参数中的最小值

                   pow(参数1,参数2) 得到的是参数1的参数2次幂。

                   random  得到随机数  在jdk1.5后提供了Random类,在早期都使用的是Math类下的random方法

                            这个方法返回的是0-1之间的数,不包含1

                   round四舍五入

                  sqrt 开平方

举例:

package com.itheima.demo;

 

import staticjava.lang.Math.*;

 

//Math类的方法介绍

public classDemo2 {

 

   public static void main(String[] args) {

      // 绝对值

       System.out.println(abs(-10));//静态导入

       System.out.println(Math.abs(10));

 

      // ceil floor

      System.out.println(ceil(-1.5));//得到大于等于这个值的最小值

      System.out.println(floor(-1.3));//得到比这个值小于等于的最大值

     

      //max min

     

      System.out.println(Math.max(10,11));

      System.out.println(Math.min(10,11));

     

      //pow 求几次方  

      System.out.println(Math.pow(4, 3));

     

      //random

      System.out.println(Math.random());//0-1之间的一个数,不包含1

     

      //得到0-100之间的一个整数

      int n=(int)(Math.random()*100);

      System.out.println(n);

     

      //round  四舍五入

      System.out.println(round(3.5));

      System.out.println(round(3.1));

     

      //sqrt

     

      System.out.println(sqrt(9));

   }

}

 

Date

java.util包下

Date表示的是毫秒值.

Date构造方法

1.Date() 无参  表示的是当前时间

                           

                            2.Date(longl)

                                     构造一个从基准时间经过l毫秒后所达到的时间点

         Date类下的成员方法

1.getTime

                                     声明  public long getTime();

                                     作用  得到Date对象表示的毫秒值

                                    

                            2.setTime

                                     声明  public void setTime(long l)

                                     作用  设置Date对象的毫秒值

 

//java.util.Date类介绍

public classDemo3 {

   public static void main(String[] args) {

      method2();

   }

   // Date();   getTime();

   public static void method1() {

      Date date = new Date();// 表示的是当前时间

 

      long l = date.getTime();

     

      System.out.println(l);//毫秒值

      System.out.println(date); // Fri Apr 1911:53:52 CST 2013

   }

   //Date(long l) setTime(long l)

   public static void method2(){

      Date date=new Date(1366343883312L-24*60*60*1000);

      date.setTime(10000);

      System.out.println(date);

   }

   public static void method3(){ 

      //一句话得到昨天这个时侯的时间System.out.println(newDate(newDate().getTime()-24*60*60*1000));

     

   }

}

Calendar

java.util包下

                   这个类叫日历,它是我们现在处理时间日期应用比较多的类.

                   Calendar类的操作比Date类更丰富。

                   Calendar方法介绍

                            1.getInstance

                                     声明 public static Calendar getInstance();

                                     这个方法可以得到一个Calendar实例,其实真正的对象是子类对象。

                            2.get/set(重要)

                                     用来操作Calendar字段的两个重要方法.

                                     get

                                               声明  public int get(int field)

                                               作用  获得指定field日历字段的值。

                                     set

                                               作用:对日历字段进行设置成指定的值

                                               声明 public void set(int field,int value)

                                               作用对指定的字段进行设置

                                               声明 public void set(int year,int month,int date)

                                               作用对年,月,日进行设置

                                               public void set(intyear,int month,int date,int hour,int minute)

                                               publicvoid set(int year,int month,int date,int hour,int minute,int second)

                            3.getTimeInMillis/setTimeInMillis

                                     作用与Date类中的getTime/setTime方法作用一样。

                                     声明 public long getTimeInMillis();

                                     getTimeInMillis作用是获得毫秒值

                                     声明 public void setTimeInMillis(long l);

                                     setTimeInMillis作用是设置毫秒值

                            4.add

                                     声明 public void add(int field,int value)

                                     作用:对指定的日历字段进行加value操作。

                            5.Date与Calendar相互转换

                                     Date----->Calendar

                                               Calendar类中的setTime方法

                                               声明 public void setTime(Date date)

                                               作用将date表示的时间设置给Calendar对象.

                                     Calendar---->Date

                                               Calendar类中的getTime方法

                                               声明 public Date getTime();

                                               作用将一个Calendar对象表示的时间转换成Date对象.

示例:

 

package com.itheima.demo3;

//Calendar对象真实类型是什么

import java.util.Calendar;

import java.util.Date;

public class Demo1 {

         publicstatic void main(String[] args) {

                   method4();

         }

         //获得Calendar的毫秒值

         publicstatic void method4(){

                   CalendarrightNow = Calendar.getInstance(); //当前时间

                   Datedate=new Date(); //当前时间

                   date.setTime(1);

                   rightNow.setTimeInMillis(1);

                  

                   System.out.println(date.getTime());

                   System.out.println(rightNow.getTimeInMillis());

                  

         }

        

         //求今年的10.1号是这一年的第几天

         publicstatic void method3(){

                   CalendarrightNow = Calendar.getInstance();

                   //rightNow.set(2013,9, 1);  //直接设置 年月  日

                   rightNow.set(Calendar.MONTH,9); //对月份进行修改

                   rightNow.set(Calendar.DATE,1);//对日期进行修改

                   intday=rightNow.get(Calendar.DAY_OF_YEAR);

                   System.out.println(day);

         }

         //求今天是这一年的第几天

         publicstatic void method2(){

                  

                   CalendarrightNow = Calendar.getInstance();

                   intday=rightNow.get(Calendar.DAY_OF_YEAR);

                   System.out.println(day);

         }

        

         //get 获得年,月日小时分钟秒

         publicstatic void method1() {

                   CalendarrightNow = Calendar.getInstance();

                   //年

                   intyear = rightNow.get(Calendar.YEAR);

                   //月

                   intmonth = rightNow.get(Calendar.MONTH); // 月份从0开始 0代表一月份

                   //日

                   intday = rightNow.get(Calendar.DATE);

                   //int day=rightNow.get(Calendar.DAY_OF_MONTH);

                   //小时

                   //inthour = rightNow.get(Calendar.HOUR);  //12小时制

                   inthour=rightNow.get(Calendar.HOUR_OF_DAY); //24小时制

                   //分钟

                   intminute = rightNow.get(Calendar.MINUTE);

                   //秒

                   intsecond = rightNow.get(Calendar.SECOND);

 

                   System.out.println(year+ "年" + (month + 1) +"月" + day + "日" + hour

                                     +"时" + minute +"分" + second +"秒");

 

         }

}

      DateFormat(父类) 与SimpleDateFormat(子类)

这两个类在java.text包下.

                   这两个类的作用是对时间日期(Date)进行格式化

DateFormat类中提供的方法

1.getDateInstance

                                     获得一个日期的格式化器

                                     声明

                                               publicstatic DateFormat getDateInstance();

                                               publicstatic DateFormat getdateInstance(int style); //可以指定样式

                            2.getDateTimeInstance

                                     获得一个日期时间格式化器

                                     声明

                                               publicstatic DateFormat getDateTimeInstance();

                                     publicstatic DateFormat getDateTimeInstance(int dateStyle,int timeStyle);

                            3.format

                                     声明 public String format(Date date)

                                     作用将日期对象格式化成指定的样式的字符串。

 

                   SimpleDateFormat

                            我们在定义SimpleDateFormat对象时可以给其指定模式,

                            这样我们在对时间进行格式化操作时,得到的字符串就是

                            指定的模式的字符串。

                            例如

                                     SimpleDateFormatsdf=new SimpleDateFormat("yyyy/MM/dd");

                                     Strings=sdf.format(new Date());  //2013/04/19

                            日期(Date)---format方法--->String

                            String-------parse方法------------>Date

                            在分析时必须给指定一个当前要分析的字符串的样式是什么样?

                            "2013-10-10"--->日期

                            "2013/10/10"---->日期

                            parse方法

                                     声明 public Date parse(String s) throws ParseException

                                     作用将一个字符串分析成日期

                                     注意:当前要分析的字符串,必须给其指定的模式

示例:

 

package com.itheima.demo3;

import java.text.DateFormat;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

public classDemo3 {

   public static void main(String[] args) {

      method3();

   }

   // 将一个字符串分析成日期

   public static void method3() {

      String s = "2008/08/08 20:08:08"; // 要将这个字符串分析成日期

      SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");// 指定义这个模式的目的是让sdf知道怎样分析s这个字符串。

      try {

        Date date = sdf.parse(s); // parse它抛出一个ParseException,这个异常是一个编译异常

        System.out.println(date);

        //System.out.println((newDate().getTime()-date.getTime())/(24*60*60*1000));//得到奥运会开始到现在经过了多少天.

      }catch(ParseExceptione) {

        System.out.println("不能解析的字符串");

      }

   }

   // SimpleDateFormat

   public static void method2() {

      SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

      String s = sdf.format(new Date());

      System.out.println(s);

   }

   // DateFormat介绍

   public static void method1() {

      // String s=DateFormat.getDateInstance().format(newDate());

      // DateFormat df =DateFormat.getDateInstance(DateFormat.FULL); //

      // 获得很个日期DateFormat实例,其实是子类对象

      DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL,

           DateFormat.FULL); // 获得日期时间格式器

      System.out.println(df); // java.text.SimpleDateFormat@ef7951d7

      String s = df.format(new Date());

      System.out.println(s);// 2013-4-19

   }

}

      System

                   java.lang包

                   System类不能实例化

                   System.out.println():

//System 类

                   //out    System类中的一个静态属性

                   //println方法   out所属类的对象 ,out它是PrintStream类的对象.

常见的方法:

                            1.exit(inti)

                                     System.exit(0);停止jvm

                            2.gc()

                                     System.gc();它执行时 finzlized方法会被调用。

                            3.currentTimeMillis

                                     System.currentTimeMillis();

                                     这个方法得到的是从基准时间开始所经过的毫秒值。

                            4.getProperties

                                     Propertiesp=System.getProperties();

                                     这个方法得到的是当前系统的一些信息.

                            5.getProperty

                                     Stringvalue=System.getProperty(String key)

                                     作用:是获得当前系统的某一个指定key的值.

                            6.setProperty

                                     System.setProperty(Stringkey,Stirng value);

                                     在System中设置key与value

示例:

package com.itheima.demo4;

import java.util.Properties;

public classDemo1 {

   public static void main(String[] args) {

      method2();

   }

   // System

   public static void method1() {

      System.out.println();

      // System

      // out System类中的一个静态属性

      // println 方法 out所属类的对象

   }

   public static void method2() {

      //System.setProperty("mypath","c:\\a.txt");

      Properties prop = System.getProperties();

      String value=prop.getProperty("os.name");

      System.out.println(value);

      /*Set set = prop.keySet();

      for(Object key : set) {

        System.out.println(key+ "------" + prop.get(key));

      }*/

//System.out.println(System.getProperty("os.name"));

   }

}

      Runtime

                   Runtime它是一个单实例实现的。

                   它可以让一个进程执行。

 

1.getRuntime

                            它获得一个Runtime实例

 

                   2.exec

                            publicProcess exec(String s);

                            它可以执行一个进程

                            s就代表的是某个进程的路径与名称.

                            它返回的是一个Process对象

 

                            Process代表一个进程,它里面提供一个destroy方法。

                            这个方法可以将某个进程销毁。

示例:

package com.itheima.demo4;

import java.io.IOException;

public classDemo2 {

   public static void main(String[] args) {

      method2();

   }

   public static void method2(){

     

      try {

        Runtime.getRuntime().exec("shutdown -s");//准备关机.

      }catch(IOExceptione) {

  

        e.printStackTrace();

      }

   }

 

   // 使用java程序打开一个记事本 notepad.exe

   public static void method1() {

      try {

        Process p = Runtime.getRuntime().exec("D:\\飞秋\\飞秋c.exe");// 获得一个Runtime实例

        for (int i = 0; i < 5; i++) {

           Thread.sleep(1000);

           System.out.println(i);

        }

        p.destroy();

      }catch(IOExceptione) {

 

        e.printStackTrace();

      }catch(InterruptedExceptione) {

       

        e.printStackTrace();

      }

   }

}

      Properties

它其实也是一个Map,但是它的key与value类型全是String

1.String getProperty(String key)

                            根据key获得value

                   2.list

                            将 Properties对象中的内容写入到文件中。

                   3.load

                            将文件中的内容读到到Properties对象

 

                                                        ------- android培训java培训、期待与您交流! ----------

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值