• 黑马程序员——java学习10(毕17)——工具类


    1、字符串排序

    考虑一个空格和多个空格的限定

    转化时记得对象间比较实用compareTo

     1 package learn;
     2 
     3 import java.util.Arrays;
     4 
     5 /*对一个字符串进行从小到大排序
     6  * 20 78 9 -7 88 36 29
     7  * 思路
     8  * 1、排序,多用int
     9  * 2、如何获取到这个字符串中的这些需要排序的数值?
    10  * 发现这个字符串中其实都是空格来对数值进行分隔的
    11  * 所以就想到用字符串对象的切割方法将大串变成多个小串
    12  * 3、数值最终变成小字符串,怎么变成一个int数
    13  * 字符串到基本类型可以使用包装类
    14  * 
    15  * */
    16 public class WrapperDemo {
    17     private static final String SPACE_SEPARATER = " ";
    18     public static void main(String[] args) {
    19 //        int num = 4;
    20 //        num=num+5;
    21 //        Integer i =4;//new Integeger(4)自动装箱 简化书写
    22 //        i=i+6;
    23         String numStr="20 78 9 -7 88 36 29";
    24         System.out.println(numStr);
    25         numStr=sortStringNumber(numStr);
    26         System.out.println(numStr);
    27     }
    28     //用方法将步骤与主函数分开
    29     public static String sortStringNumber(String numStr)
    30     {
    31         //1、将字符串变成字符串数组
    32 //        String [] str_arr = numStr.split(" ");
    33         String[] str_arr = stringToArray(numStr);
    34         
    35         //2、将字符串数组变成int数组
    36         int[] num_arr = toIntArray(str_arr);
    37         
    38         
    39         //3、对int数组排序
    40         mySortArray(num_arr);
    41         
    42         //4、将排序后的int数组变成字符串
    43         String temp = arrayToString(num_arr);
    44         
    45         return temp;
    46     }
    47     //1
    48     public static String[] stringToArray(String numStr) {
    49         //按照一个空格来吧一个字符串划分成一个个字符串,装入数组str_arr中
    50         String [] str_arr = numStr.split(SPACE_SEPARATER);
    51         return str_arr;
    52     }
    53     //2
    54     private static int[] toIntArray(String[] str_arr) {
    55         //字符串数组与整型数组差距就是数据内容,长度一致,所以先给出长度
    56         //如果直接int[] = String[]的话只是地址间的传递
    57         int[] arr = new int[str_arr.length];
    58         for(int i=0;i<arr.length; i++)
    59         {
    60             //核心:通过parseInt将字符串转换成整型
    61             arr[i] = Integer.parseInt(str_arr[i]);
    62         }
    63         return arr;
    64     }
    65     //3
    66     private static void mySortArray(int[] num_arr) {
    67         //排序sort
    68         Arrays.sort(num_arr);
    69     }
    70     //4
    71     private static String arrayToString(int[] num_arr) {
    72         //结果要的是字符串,所以再转成字符串
    73         //调用StringBuilder类的append方法,把一个个数组内容输入,再调用toString方法返回字符串
    74         StringBuilder sb = new StringBuilder();
    75         for(int x = 0; x<num_arr.length; x++)
    76         {
    77             if(x!=num_arr.length-1)
    78                 sb.append(num_arr[x]+SPACE_SEPARATER);
    79             else
    80                 sb.append(num_arr[x]);            
    81         }
    82         return sb.toString();
    83     }
    84 }

     运行结果

    2、集合框架的工具类

    2.1、sort,max,binarySearch

    static<T> void sort(List<T>list) 根据指定比较器产生的顺序对指定列表进行排序

    static<T> max(Collection<?extends T>coll,Comparator<?super T>comp)根据指定比较器缠身过的顺序获取最大元素

    static<T> int binarySearch(List<? extends comparator <? super T>>list, T key,)二分法查找指定对象

    可以通过改写比较器方法写出指定比较规则

      1 package learn;
      2 
      3 import java.util.ArrayList;
      4 import java.util.Collections;
      5 import java.util.Comparator;
      6 import java.util.List;
      7 
      8 /*
      9  * 集合框架的工具类
     10  * 对象比大小,不是compareTo就是compare
     11  * Collections: 
     12  * */
     13 
     14 public class CollectionDemo {
     15     public static void main(String[] args) {
     16 //        sortDemo();
     17 //        maxDemo();
     18         binarySearchDemo();
     19     }
     20     public static void binarySearchDemo(){
     21         List<String> list = new ArrayList<String>();
     22         list.add("abcd");
     23         list.add("aaa");
     24         list.add("zz");
     25         list.add("kkkkk");
     26         list.add("qq");
     27         Collections.sort(list);
     28         
     29         sop(list);
     30         
     31 //        int index = Collections.binarySearch(list,"aaaa");
     32         int index = halfSearch(list,"aaaa");
     33         sop("index:"+index);
     34     }
     35     
     36     public static int halfSearch(List<String> list,String key){
     37         int max,min,mid;
     38         max=list.size()-1;
     39         min=0;
     40         while(min<=max)
     41         {
     42             mid=(max+min)>>1;//    /2
     43         //获取中间角标对应元素
     44             String str = list.get(mid);
     45             //compareTo比较两个对象
     46             int num = str.compareTo(key);
     47             if(num>0)
     48                 max = mid -1;
     49             else if(num<0)
     50                 min = mid+1;
     51             else 
     52                 return mid;
     53         }
     54         //给出最佳插入位置
     55         return -min-1;
     56     }
     57     public static void maxDemo(){
     58         List<String> list = new ArrayList<String>();
     59         list.add("abcd");
     60         list.add("aaa");
     61         list.add("zz");
     62         list.add("kkkkk");
     63         list.add("qq");
     64         Collections.sort(list);
     65         sop(list);
     66         //max方法
     67         String max = Collections.max(list/*,new StrLenComparator()*/);
     68         sop("max:"+max);
     69     }
     70     public static void sortDemo()
     71     {
     72         List<String> list = new ArrayList<String>();
     73         list.add("abcd");
     74         list.add("aaa");
     75         list.add("zz");
     76         list.add("kkkkk");
     77         list.add("qq");
     78         sop(list);
     79         
     80 //        Collections.sort(list);
     81         //sort方法的,根据制定比较器,将list集合排序
     82         Collections.sort(list, new StrLenComparator());
     83         sop(list);
     84     }
     85     //输出方法简写
     86     public static void sop(Object obj)
     87     {
     88         System.out.println(obj);
     89     }
     90 }
     91 
     92 //比较器
     93 class StrLenComparator implements Comparator<String>
     94 {
     95     //重写compare方法,定义自己的规则
     96     public int compare(String s1,String s2)
     97     {
     98         if(s1.length()>s2.length())
     99             return 1;
    100         if(s1.length()<s2.length())
    101             return -1;
    102         //调用lang包里Comparable接口的compareTo方法,与compare类似,操作对象为对象
    103         return s1.compareTo(s2);
    104     }
    105 }

     运行结果

    2.2、fill, replaceAll, reverseOrder

    static<T> void fill(List<?super T> list ,T obj)  用指定元素替换指定列表中的所有元素

    static<T> boolean replaceAll(List<T>list, T oldVal, T newVal) 使用另一个值,替换列表中所有某一指定值

    static<T> Comparator<T>reverseOrder() 返回一个比较器,它强行逆转实现了comparable接口对象的自然顺序

    注意reverse可以在不用重写方法的情况下实现反比较器规则

     1 package learn;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Collections;
     5 import java.util.Comparator;
     6 import java.util.Iterator;
     7 import java.util.List;
     8 import java.util.TreeSet;
     9 
    10 //定义比较器类
    11 class StrComparator implements Comparator<String>
    12 {
    13     public int compare(String s1,String s2)
    14     {
    15         
    16 //        int num = s1.compareTo(s2);
    17 //        if(num>0)
    18 //            return -1;
    19 //        if(num<0)
    20 //            return 1;
    21 //        return num;    
    22         return s2.compareTo(s1);
    23     }
    24 }
    25 
    26 public class CollectionsDemo2 {
    27     public static void main(String[] args) {
    28         orderDemo();
    29     }
    30     public static void orderDemo()
    31     {
    32         //将比较器里的规则倒叙,再调用
    33         TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(new StrLenComparator()));
    34         ts.add("abcde");
    35         ts.add("aaa");
    36         ts.add("kkk");
    37         ts.add("ccc");
    38         //迭代器
    39         Iterator it = ts.iterator();
    40         while(it.hasNext())
    41         {
    42             System.out.println(it.next());
    43         }
    44     }
    45     
    46     //替换指定
    47     public static void replaceAllDemo()
    48     {        
    49         List<String> list = new ArrayList<String>();
    50         list.add("abcd");
    51         list.add("aaa");
    52         list.add("zz");
    53         list.add("kkkkk");
    54         list.add("qq");
    55         sop(list);
    56         //替换
    57         Collections.replaceAll(list, "aaa", "pp");
    58         sop(list);
    59         //反转,头和尾交换
    60         Collections.reverse(list);
    61         sop(list);    
    62     }
    63     /*
    64      * fill方法可以将list集合中的所有元素替换成制定元素
    65      * 将list集合中部分元素替换成指定元素
    66      * */
    67     //替换全部
    68     public static void fillDemo()
    69     {
    70         List<String> list = new ArrayList<String>();
    71         list.add("abcd");
    72         list.add("aaa");
    73         list.add("zz");
    74         list.add("kkkkk");
    75         list.add("qq");
    76         Collections.sort(list);
    77         sop(list);
    78         //将集合中的元素全部替换成pp
    79         Collections.fill(list, "pp");
    80         sop(list);
    81     }
    82     public static void sop(Object obj)
    83     {
    84         System.out.println(obj);
    85     }
    86 }

     运行结果

    2.3、数组变集合 asList

    java.util.Arrays

    static<T>List<T> asList(T...a)返回一个受指定数组支持的固定大小的数组

    注意基本数据类型的数组变集合时,数组作为集合中的一个元素存在。

     1 package learn;
     2 
     3 import java.util.Arrays;
     4 import java.util.List;
     5 
     6 /*
     7  * Arrays: 用于操作数组的工具类
     8  * 里面都是静态方法
     9  * 
    10  * asList: 将数组变成List集合
    11  * */
    12 public class ArraysDemo {
    13     public static void main(String[] args) {
    14 //        int []arr = {2,4,5};
    15 //        System.out.println(Arrays.toString(arr));
    16         
    17         //如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素
    18         String [] arr = {"abc", "cc", "kkk"};
    19         //把数组变成集合的好处
    20         /*
    21          * 可以使用集合的思想和方法来操作数组中的元素
    22          * 数组变成集合,不可以使用集合的增删方法
    23 24          * */
    25         List<String> list = Arrays.asList(arr);
    26         System.out.println("contains:"+list.contains("cc"));
    27 //        list.add("qq");//UnsupportedOperationException不支持操作异常
    28         System.out.println(list);
    29         //如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。
    30 //        int [] nums = {2,4,5};
    31 //        List/*<int []>*/ li = Arrays.asList(nums);
    32         
    33         Integer [] nums = {2,4,5};
    34         List<Integer> li = Arrays.asList(nums);
    35         System.out.println(li);//输出一个数组的哈希值
    36     }
    37 }

     运行结果

    2.4、集合变数组

    java.util.Collection

    <T>T[] toArray(T[] a) 返回包含此collection中所有元素的数组

    防止对集合进行增删操作

     1 package learn;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Arrays;
     5 
     6 /*
     7  * 集合变数组
     8  * Collection接口中的toArray方法
     9  * 
    10  * */
    11 public class CollectionsToArray {
    12     public static void main(String[] args) {
    13         ArrayList<String> al = new ArrayList<String>();
    14         al.add("abc1");
    15         al.add("abc2");
    16         al.add("abc3");
    17         /*
    18          * 1、指定类型的数组要定义多少
    19          * 当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组。长度为集合的size。
    20          * 当指定类型的数组长度大于了集合的size,那不会新创建了数组,而是使用传递进来的数组
    21          * 所以创建一个刚刚好的数组最优。
    22          * 
    23          * 2、为何要将集合变数组
    24          * 为了限定对元素的操作,不需要进行增删
    25          * 
    26          * */
    27         String[] arr =al.toArray(new String[al.size()]);
    28         System.out.println(Arrays.toString(arr));
    29     }
    30 }

     运行结果

    2.5、增强for循环

    局限:必须由被遍历的目标

    for(数据类型 变量名 :被遍历的集合(Collection)或者数组)
    {

    }

     1 package learn;
     2 /*
     3  * 高级for循环
     4  * 格式:
     5  * for(数据类型 变量名 :被遍历的集合(Collection)或者数组)
     6  * {
     7  * 
     8  * }
     9  * 对集合进行遍历
    10  * 只能获取集合元素,但是不能对集合进行操作 
    11  * 迭代器除了遍历,还可进行remove操作
    12  * 若使用ListIterator,还可以在遍历过程中进行增删改查
    13  * 
    14  * 传统for循环和高级区别
    15  * 高级for局限性:必须有被遍历的目标
    16  * 
    17  * */
    18 import java.util.ArrayList;
    19 import java.util.HashMap;
    20 import java.util.Map;
    21 import java.util.Set;
    22 
    23 public class ForEachDemo {
    24     public static void main(String[] args) {
    25         
    26         ArrayList<String> al = new ArrayList<String>();
    27         al.add("abc1");
    28         al.add("abc2");
    29         al.add("abc3");
    30         //若无泛型的定义String则为Object s
    31         for(String s :al)//只能对集合中元素取出,不能修改,迭代器都有remove,列表迭代器都可以增删改查
    32         {
    33             s="kk";
    34 //            System.out.println(s);
    35         }
    36         System.out.println(al);
    37 //        Iterator<String> it = al.iterator();
    38 //        while(it.hasNext())
    39 //        {
    40 //            System.out.println(it.next());
    41 //        }
    42         int []arr = {3,5,1};
    43         for(int  i :arr)
    44         {
    45             System.out.println("i::"+i);
    46         }
    47         HashMap<Integer,String> hm = new HashMap<Integer,String>();
    48         hm.put(1, "a");
    49         hm.put(2, "b");
    50         hm.put(3, "c");
    51         
    52         Set<Integer> keySet = hm.keySet();
    53         for(Integer i :keySet)
    54         {
    55             System.out.println(i+"....."+hm.get(i));
    56         }
    57 //        Set<Map.Entry<Integer,String>> entrySet = hm.entrySet();
    58 //        for(Map.Entry<Integer, String> me: entrySet)
    59         for(Map.Entry<Integer, String> me :hm.entrySet())
    60         {
    61             System.out.println(me.getKey()+"-------"+me.getValue());
    62         }
    63         
    64     }
    65 }

    运行结果

     字符串形式的原集合,整型的数组的输出,不加/加泛型后的增强for输出

    2.6、方法的可变参数

    可变参数放在参数列表的最后,以防参数不一致

     1 package learn;
     2 /*
     3  * JDK1.5新特性
     4  * 方法的可变参数
     5  * 使用时注意:可变参数一定要定义在参数列表的最后
     6  * */
     7 public class ParamMethodDemo {
     8     public static void main(String[] args) {
     9 //        show(3,4);
    10         //要定义3,4,5,6、、、、个参数的show方法时,重载方法要多个,数组法需要重新定义数组
    11 //        int []arr = {2,3};
    12 //        show(arr);
    13 //        int[] arr1 = {2,3,4};
    14 //        show(arr);
    15         //可变参数,其实就是数组参数的简写方式,不用每一次都手动的建立数组对象,只要将要操作的元素作为参数传递即可
    16         //隐式将这些参数封装成了数组。
    17         show("haha",2,3,4,5);
    18         
    19     }
    20     public static void show(String str,int...arr)
    21     {
    22         System.out.println(arr.length);
    23     }
    24 //    public static void show(int a,int b)
    25 //    {
    26 //        System.out.println(a+" "+b);
    27 //    }
    28 //    public static void show(int []arr)
    29 //    {
    30 //        System.out.println();
    31 //    }
    32     
    33     
    34 }

    运行结果 

    调用方法时传递的参数个数

    2.7、静态导入

    import static java.util.Arrays.*的导入,导入了类中的静态成员,可以节省Arrays.

    不过,如toString方法都是继承Object,而它的toString方法无参

    故,注意是否会引起冲突

     1 package learn;
     2 /*
     3  * 静态导入
     4  * 当类名重名时,需要指定具体包名。
     5  * 当放大重名时,指定具备所属的对象或者类
     6  * */
     7 import java.util.Arrays;
     8 //导入的是类中的静态成员
     9 import static java.util.Arrays.*;
    10 
    11 public class StaticImport {
    12     public static void main(String[] args) {
    13         int [] arr = {3,1,5};
    14         Arrays.sort(arr);
    15         int index = Arrays.binarySearch(arr, 1);
    16         System.out.println(Arrays.toString(arr));
    17         System.out.println("index:"+index);
    18     }
    19 }

    运行结果

     

    2.8、System类

    java.lang.System

    因为安装的java的版本,老版java将vista之后的版本一律判定为vista

    String value = System.getProperty("os.name");
             System.out.println("value:"+value);
    得到的是操作系统是vista,
    java7可以正确显示
     1 package learn;
     2 
     3 import java.util.Properties;
     4 
     5 /*
     6  * System中的方法和属性都是静态的
     7  * out: 标准输出,默认是控制台
     8  * in : 标准输入,默认键盘
     9  * 描述系统的一些信息
    10  * 获取系统属性信息Properties getProperties();
    11  * */
    12 public class SystemDemo {
    13     public static void main(String[] args) {
    14         Properties prop = System.getProperties();
    15         //因为Properties是Hashtable的子类,也就是Map集合的一个子类对象
    16         //那么通过map的方法取出该集合中的元素
    17         //该集合中存储的都是字符串,没有泛型定义
    18         
    19         //如何在系统中自定义一些特有信息
    20         System.setProperty("mykey", "myvalue");
    21         
    22         //获取指定属性信息
    23         String value = System.getProperty("os.name");
    24         System.out.println("value:"+value);
    25         
    26         //可不可以在虚拟机启动时动态加载信息
    27         //java命令查出,  -D<name>-<value> 再+class文件名即可
    28         
    29         //获取所有属性信息
    30 //        for(Object obj:prop.keySet())
    31 //        {
    32 //            String value = (String)prop.get(obj);
    33 //            System.out.println(obj+"..."+value);
    34 //        }
    35 //        
    36     }
    37 }

    运行结果:

    2.9、Runtime类

    java.lang.Runtime

    通过java来执行制定程序,关闭指定线程

    Process exec(String command)  在单独的进程中执行指定的字符串命令

    注意:文件路径涉及文件夹使用\分隔

        如果只写文件名,则会从环境变量里设置的默认路径中去查找

     1 package learn;
     2 /*
     3  * Runtime对象
     4  * 该类并没有提供构造函数
     5  * 说明不可以new对象,那么会直接想到该类中的方法都是静态的
     6  * 发现该类中还有非静态方法,
     7  * 说明该类肯定会提供一个方法,获取本类对象,且该方法静态,返回值类型是本类类型
     8  * 
     9  * 由此看出,该类使用了单例设计模式完成
    10  * 保证了对象的唯一性
    11  * 该方法是static Runtime getRuntime()
    12  * 
    13  * */
    14 public class RuntimeDemo {
    15     public static void main(String[] args) throws Exception
    16     {
    17         Runtime r = Runtime.getRuntime();
    18         //用记事本打开指定文件名的程序
    19         Process p = r.exec("notepad.exe");
    20 //        Process p = r.exec("notepad.exe SystemDemo.java");
    21 //        Process p = r.exec("D:\Program Files (x86)\Tencent\QQ\QQProtect\Bin\QQProtect.exe");
    22         //4s
    23 //        Thread.sleep(4000);
    24         //进程一启动就被杀了,只能杀自己写的启动过的,不能隔空杀进程管理器里的
    25 //        p.destroy();
    26         //文件夹之间使用\连接
    27         //如果只写文件名,则会去环境变量里找
    28 //        r.exec("D:\Program Files (x86)\Tencent\QQ\QQProtect\Bin\QQProtect.exe");
    29     }
    30 }

    运行结果

    2.10、Date

    java.util.date

    StringBuffer format(Date date,StringBuffer toAppendTo,FieldPosition pos)

    将给定的Date格式化为日期/时间字符串,并将结果添加到给定的StringBuffer

    星期本地化,无需加"星期"

     1 package learn;
     2 
     3 import java.text.SimpleDateFormat;
     4 import java.util.Date;
     5 
     6 
     7 
     8 public class DateDemo {
     9     public static void main(String[] args) {
    10         Date d= new Date();
    11         System.out.println(d);//结果看不懂
    12         //将模式封装在SimpleDateFormat对象中
    13         SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日Ehh:mm:ss");
    14         String time = sdf.format(d);
    15         System.out.println("time:"+time);
    16     }
    17 }

    运行结果

    2.11、Calendar

    java.util.calendar

    通过查表法,将数量较多的月份,星期几与表内元素下标对应,来简化输出

    java.text.SimpleDateFormat 通过yyyy等获取

     1 package learn;
     2 
     3 import java.util.Calendar;
     4 
     5 public class CalendarDemo {
     6     public static void main(String[] args) {
     7         Calendar c = Calendar.getInstance();
     8         String[] mons = {"一月","二月","三月","四月",
     9                         "五月","六月","七月","八月",
    10                         "九月","十月","十一月","十二月"};
    11         //前面多了一个因为数字是从0开始,去掉0角标
    12         String[] weeks = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
    13         int index = c.get(Calendar.MONTH);
    14         
    15         int index1 = c.get(Calendar.DAY_OF_WEEK);
    16         
    17         sop(c.get(Calendar.YEAR)+"年");
    18 //        sop(c.get(Calendar.MONTH+1)+"月");
    19         sop(mons[index]);
    20 //        sop(c.get(Calendar.DAY_OF_MONTH)+"日");
    21 //        sop("星期"+c.get(Calendar.DAY_OF_WEEK)+"日");
    22         sop(weeks[index1]);
    23 //        Date d = new Date();
    24 //        System.out.println(d);
    25 //        SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
    26 //        String year = sdf.format(d);
    27 //        System.out.println(year);
    28         
    29     }
    30     public static void sop(Object obj)
    31     {
    32         System.out.println(obj);
    33     }
    34     
    35 }

    2.12、结合2.11后的改写

    Calendar提供了add方法,给指定的数值加或减

    abstract void add(int field,int amount)为给定字段添加指定的时间量

    常用YEAR, MONTH,DAY_OF_MONTH, DAY_OF_WEEK等

     1 package learn;
     2 
     3 import java.util.Calendar;
     4 
     5 public class CalendarDemo2 {
     6     public static void main(String[] args) {
     7         Calendar c = Calendar.getInstance();
     8 //        c.set(2012,2,23);//输出3月,自+1
     9         //指定数字加
    10         c.add(Calendar.YEAR,4);
    11 //        c.add(Calendar.DAY_OF_MONTH, -18);
    12 
    13         printCalendar(c);
    14     }
    15     public static void printCalendar(Calendar c)
    16     {
    17         String[] mons = {"一月","二月","三月","四月",
    18                         "五月","六月","七月","八月",
    19                         "九月","十月","十一月","十二月"};
    20         //前面多了一个因为数字是从0开始,去掉0角标
    21         String[] weeks = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
    22         int index = c.get(Calendar.MONTH);
    23         
    24         int index1 = c.get(Calendar.DAY_OF_WEEK);
    25         
    26         sop(c.get(Calendar.YEAR)+"年");
    27 //        sop(c.get(Calendar.MONTH+1)+"月");
    28         sop(mons[index]);
    29 //        sop(c.get(Calendar.DAY_OF_MONTH)+"日");
    30 //        sop("星期"+c.get(Calendar.DAY_OF_WEEK)+"日");
    31         sop(weeks[index1]);
    32 
    33         
    34     }
    35     public static void sop(Object obj)
    36     {
    37         System.out.println(obj);
    38     }
    39     
    40 }

    2.13、Math

    java.lang.math

    static double ceil(double a) 返回大于指定数据的最小整数

    static double floor(double a) 返回小于指定数据的最大整数

    static int round(double a) 四舍五入

     1 package learn;
     2 
     3 import java.util.Random;
     4 
     5 public class MathDemo {
     6     public static void main(String[] args) {
     7         Random r = new Random();
     8         
     9         for(int x=0;x<10;x++)
    10         {
    11 //            int d = (int)(Math.random()*10+1);
    12             int d = r.nextInt(10)+1;
    13             sop(d);
    14         }
    15     }
    16     public static void show()
    17     {
    18         double d = Math.ceil(-16.24);//ceil返回大于指定数据的最小整数
    19         double d1 = Math.floor(12.34);//floor返回小于指定数据的最大整数
    20         long l = Math.round(12.34);//四舍五入
    21         sop("d="+d);
    22         sop("d1="+d1);
    23         sop("l="+l);
    24         double d2 = Math.pow(2, 3);//幂运算
    25         sop("d2="+d2);
    26     }
    27     public static void sop(Object obj)    
    28     {
    29         System.out.println(obj);
    30     }
    31 }
  • 相关阅读:
    try? try! try do catch try 使用详解
    Swift Write to file 到电脑桌面
    NSLayoutConstraint 使用详解 VFL使用介绍
    automaticallyAdjustsScrollViewInsets 详解
    Swift 给UITableView 写extension 时 报错 does not conform to protocol 'UITableViewDataSource'
    OC Swift中检查代码行数
    Swift中 @objc 使用介绍
    SWift中 '?' must be followed by a call, member lookup, or subscript 错误解决方案
    Swift 中 insetBy(dx: CGFloat, dy: CGFloat) -> CGRect 用法详解
    求1000之内所有“完数”(注:C程序设计(第四版) 谭浩强/著 P141-9)
  • 原文地址:https://www.cnblogs.com/sunxlfree1206/p/4705979.html
Copyright © 2020-2023  润新知