Arrays类和System类以及math类与random类的一些常用方法

                        Arrays类

Arrays:针对数组操作的工具类

常用方法: 

1>public static String toString(int[]a):可以将int类型的数组转换成字符串 ([元素1,元素2,元素3...])

2>public static void sort(int[] a)对指定的 int 型数组按数字升序进行排序

3>public static int binarySearch(int[]a,int key):二分搜索法: 在int类型的数组中查找key元素的索引

代码说明:

package cn.itcast_02;

 

importjava.util.Arrays;

 

publicclassarraysDemo{

  

   publicstaticvoidmain(String[]args){

     

      //定义一个数组:静态初始化

      int[]arr={24,69,80,57,13};

     

      //public static String toString(int[] a):可以将int类型的数组转换成字符串 ([元素1,元素2,元素3...])

      //直接用Arrays去调用

      Stringstr=Arrays.toString(arr);

      System.out.println("str:"+str);

     

      System.out.println("-----------------------");

//    public static void sort(int[] a)对指定的 int 型数组按数字升序进行排序

      Arrays.sort(arr);

      Stringstr2=Arrays.toString(arr);

      System.out.println("str2:"+str2);

      System.out.println("-----------------------");

     

      //public static int binarySearch(int[] a,intkey):二分搜索法:

      //在int类型的数组中查找key元素的索引

      //需求:查找57元素对应的索引

      Arrays.sort(arr);

      intindex=Arrays.binarySearch(arr,57);

      System.out.println("index:"+index);

      intindex2=Arrays.binarySearch(arr,577);

      System.out.println("index2:"+index2); 

   }

}

 

运行结果:

str:[24,69, 80, 57, 13]

-----------------------

str2:[13,24, 57, 69, 80]

-----------------------

index:2

index2:-6

注意:

以后在实际开发中,只要有引用类型,在对引用类型数据进行操作的时候,对引用类型的对象进行非空判断,

防止空指针异常(NullPointerException)

 //toString(int[] a)的源码分析

public staticString toString(int[] a) {

      //对数组进行非空判断

        if (a == null)

            return "null";

        intiMax = a.length - 1;

        //如果该数组长度为0,返回括号

        if (iMax == -1)

            return "[]";

        StringBuilder b = newStringBuilder();  //创建了一个字符串缓冲区

        b.append('[');       //先追加了左中括号:[

        for (inti = 0; ; i++) {

            b.append(a[i]);     //给缓冲区中追加数组中的元素

            //如果是最后一个数据,返回并且并追加了右中括号:]并且将数据元素转换字符串

            if (i == iMax)

                returnb.append(']').toString();

                //如果不是最后一个索引,那么中间追加逗号

            b.append(", ");                  

        }

    }

 public static intbinarySearch(int[] a,int key)的源码分析:

 public static intbinarySearch(int[] a, int key)

        return binarySearch0(a, 0, a.length,key);

    }

   

    /**

      a--->arr:指定的int类型的数组

      fromIndex:指定索引开始:0

      toIndex:arr.length5

      key:577

    */

      int[] arr= {13,24,57,69,80} ;

     private static intbinarySearch0(int[] a, int fromIndex, inttoIndex,

                                     int key) {

        intlow = fromIndex;     //最小索引

        inthigh = toIndex - 1;//  最大索引  4

 

        while (low <= high) { //如果最小索引小于=最大索引 

            intmid = (low + high) >>> 1; //>>> :无符号右移动(位运算符) 

                            

            intmidVal = a[mid];      // 查找中间索引对应的元素:

 

            if (midVal < key)      //判断:中间索引对应的元素 < key

                low = mid + 1;    

            else if (midVal > key)

                high = mid - 1;

            else

                return mid; // key found

        }

        return -(low + 1);  // key not found.    // return -(low+1) = -6

    }

    /*

          位^:位异或

          位&:位与

          位|:位或

           <<:左移动

           有符合的数据表示法(原码,反码,补码)

         计算机底层运算数据的时候:通过补码进行运算的

  */

                                            System类


System 类包含一些有用的类字段和方法。它不能被实例化。

常用的方法:

       public static void gc()运行垃圾回收器。

       public static void exit(int status)终止当前正在运行的 Java 虚拟机。参数用作状态码;  一般情况,需要终止,一般用0

       public static long currentTimeMillis()返回以毫秒为单位的当前时间

//单独使用,没有意义

//一般情况,来测试一段代码的执行效率  (后面:jdbc: PreparedStatement  Statement 也可以用currentTimeMillis来测试速率 )

             

              long start =System.currentTimeMillis() ;

             

              for(int x =0 ; x < 1000; x ++){

                     System.out.println("hello"+x);

              }

             

              long end =System.currentTimeMillis() ;

             

              System.out.println("共耗时:"+(end-start)+"毫秒");

             

              System.out.println("---------------------------");

             

public static void arraycopy(Object src,intsrcPos, Object dest,int destPos, int length):从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束

       src:原数组

       dest:目标数组

       srcPos :从原数组的哪个位置开始

       destPos:目标数组的开始位置

       length:长度

代码举例

package cn.itcast_02;

importjava.util.Arrays;

 

publicclassarrayCopy{

  

   publicstaticvoidmain(String[]args){

  

      int[]arr1={11,22,33,44,55,66};

      int[]arr2={5,6,7,8,9,10};

     

      System.out.println(Arrays.toString(arr1));

      System.out.println(Arrays.toString(arr2));

      System.out.println("---------------------------");

     

      System.arraycopy(arr1,1,arr2,2,2);

     

      System.out.println(Arrays.toString(arr1));

      System.out.println(Arrays.toString(arr2));

     

   }

}

 
运行结果:
[11, 22, 33, 44, 55, 66]
[5, 6, 7, 8, 9, 10]
---------------------------
[11, 22, 33, 44, 55, 66]
[5, 6, 22, 33, 9, 10]

                    Math

Math 类包含用于执行基本数学运算的方法,

 *常用的方法:

 *         public static int abs(int a):绝对值

 *         public static double ceil(double a):向上取整

 *         public static double floor(double a):向下取整

 *         public static int max(int a,int b):求最大值

 *         public static int min(int a,int b):求最小值

 *         public static double pow(doublea,double b):a的b次幂

 *         public static double random()返回带正号的 double 值,该值大于等于 0.0 且小于 1.0

 *         public static int round(float a):四射五入

 *         public static double sqrt(double a):一个数的正平方根

//面试题:有两个变量,让他们的值进行互换
		int a = 10 ;
		int b = 20 ;
		
		//实际开发中:中间变量的方式进行互换
		
		//位^的特点:一个数据被另一个数据位^两次,其值是它本身
		
		
		//=号左边: a ,b,a
		//=右边: a^b
		a = a ^ b ; 
		b = a ^ b ;//b = a^b ^ b
		a = a ^ b ; 

 

                    Random

Random:是一个可以获取随机数的类

 *publicRandom():无参构造方法

 *publicRandom(long seed) :指定long类型的数据进行构造随机数类对象

 *public intnextInt():获取随机数,它的范围是在int类型范围之内

 *public intnextInt(int n):获取随机数,它的范围是在[0,n)之间

你可能感兴趣的:(Javase)