• 包装类


    包装类:

    包装类是针对基本数据类型(四项八类),之前我们在使用泛型数组列表的时候,需要指定数组对象的类型,但是int、float等基本类型无法使用,需要针对基本类型出现对应的包装类。

    Arraylist<Long>

    对应的包装类如下:

    需要注意的是整型int 对应Intege和字符类型Character。其余都是基本类型首字母大写。

    一:包装类除了之前我们说的泛型数组,还有一个就是字符串和基本数据类型之间的转换。

     1 package test04;
     2 
     3 public class Bas_T {
     4     public static void main(String...args){
     5         String str=String.valueOf(123);
     6         String str1=String.valueOf(1.222);
     7         System.out.print(Integer.parseInt(str));
     8         System.out.print(Double.parseDouble(str));
     9     }
    10 }

     在转换的过程中,各个包装类中都有方法(静态方法):parseXXX() 进行转换。

    其中valueOf为字符串的静态方法,将对应的数据类型转换成字符串。

    将基本数据类型转换成字符串有三种方法:

    1:使用字符串的静态方法valueof

    2:使用+""

    3:使用包装类中的静态方法或者对象方法,toString()来进行转换。

     1 package test04;
     2 
     3 public class Bas_T {
     4     public static void main(String...args){
     5         String str=String.valueOf(123);
     6         String str1=""+123;
     7         String str2=Integer.toString(123);
     8         String str3=new Integer(123).toString();
     9         System.out.print(str2+'
    '+str3);
    10 
    11     }
    12 }

     结果:

     二:包装类和基本数据类型之间转换。

    比如int数据类型:

     1 package test04;
     2 
     3 public class Bas_T {
     4     public static void main(String...args){
     5         Integer in=Integer.valueOf(1233);
     6         int  in_2=in.intValue();
     7         System.out.print(in.toString());
     8         System.out.print(in_2);
     9 
    10     }
    11 }

     三:自动装箱和拆箱

    在java中基本数据类型,我们可以用对象的变量引用进行运算,但是非基本数据类型即引用类型无法这么操作。这是因为java中帮我们实现自动的装箱和拆箱;

    以Int类型为例比如:

    1 package test04;
    2 
    3 public class Bas_T {
    4     public static void main(String...args){
    5         Integer i=2;
    6         System.out.print(i+2);
    7 
    8     }
    9 }

     我们在创建对象的时候,创建:Integer对象的时候,Integer  I=2 是自动装箱的过程,实际上java帮我们操作了,new  Integer(2)或者 Integer.valueOf(2)

    在我们进行运算的时候,i+2 的时候叫做自动拆箱。java帮我们操作了,i.intValue().

    注意:

    在bytes范围内,同一个对象不会重复创建,和python一样,部分整数也做了这个机制,所以在使用==和equals()的时候 都是返回true。

     四:

    System类,因为其构造器是被private所修饰,所以无法创建方法,他的方法都是static。

    1 package test05;
    2 
    3 public class Sys_Tes {
    4     public static void main(String ...args){
    5         System.out.print(System.currentTimeMillis());//GMT时间。
    6         System.exit(0);//表示退出jvm虚拟机。0表示正常退出。
    7         System.out.print(System.getProperties());
    8     }
    9 }

     输出:

    l  练习一:验证for循环打印数字1-9999所需要使用的时间(毫秒)

     注意:使用System.currentTimeMillis()获取的时间类型为long类型

     1 package test05;
     2 
     3 public class Sys_Tes {
     4     public static void main(String ...args){
     5         long start=System.currentTimeMillis();
     6         for (int i=0;i<119999;i++){
     7             Integer a=i;
     8         }
     9         long end=System.currentTimeMillis();
    10         long cost_time=end-start;
    11         System.out.printf("cost time millons %d",cost_time);
    12     }
    13 }

     

    练习二:将src数组中前3个元素,复制到dest数组的前3个位置上

    复制元素前:src数组元素[1,2,3,4,5],dest数组元素[6,7,8,9,10]

    复制元素后:src数组元素[1,2,3,4,5],dest数组元素[1,2,3,9,10]

    package test05;
    
    import java.lang.reflect.Array;
    
    public class Sys_Tes {
        public static void main(String ...args){
            int[] src={1,2,3,4,5};
            int[] dest={6,7,8,9,};//static void     arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
            System.arraycopy(src,0,dest,0,3);
            for(int i:dest){
                System.out.print(i);
            }
        }
    }


    static void     arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

                  源数组             从源数组索引位置    目标数组   从目标数据那个位置覆盖  拷贝源数组的长度。

     System.arraycopy()使用如上。

    l  练习三:循环生成100-999之间的的三位数并进行打印该数,当该数能被10整除时,结束运行的程序

     1 package test05;
     2 
     3 import org.omg.Messaging.SYNC_WITH_TRANSPORT;
     4 
     5 import java.lang.reflect.Array;
     6 
     7 public class Sys_Tes {
     8     public static void main(String ...args){
     9         for(int i=101;i<999;i++){
    10             if(String.valueOf(i).endsWith("0")){
    11                 System.exit(0);
    12             }else {
    13                 System.out.print(i+"
    ");
    14             }
    15         }
    16     }

     

     1 package test05;
     2 
     3 import org.omg.Messaging.SYNC_WITH_TRANSPORT;
     4 
     5 import java.lang.reflect.Array;
     6 import java.util.Random;
     7 
     8 public class Sys_Tes {
     9     public static void main(String ...args){
    10         Random  ran=new Random();
    11         while (true){
    12             int in=ran.nextInt(899)+100;
    13             if(in%10==0){
    14                 System.exit(0);
    15             }else {
    16                 System.out.printf(in+"
    ");
    17             }
    18         }
    19     }
    20 }

     使用Random来实现随机数。

    四:Math类。

    Math类属于工具类,和System类一样,他的方法也大多数是静态方法。包含常用的运算方法。public final class Math extends Object

     1 package test06;
     2 
     3 public class Math_Demo {
     4     public static void main(String ...args){
     5         System.out.print(Math.abs(-3));//取绝对值。
     6         System.out.print(Math.ceil(-3.8111));// 不进行四舍五入。取值大于等于参数-3.0
     7         System.out.print(Math.ceil(3.8111));// 不进行四舍五入。取值大于等于参数4.0
     8         System.out.print(Math.floor(-3.8111));// 不进行四舍五入。取值小于等于参数-4.0
     9         System.out.print(Math.floor(3.8111));// 不进行四舍五入。取值小于等于参数3.0
    10         System.out.print(Math.max(3.8111,4.1));// 取最大值,
    11         System.out.print(Math.min(3.8111,4.1));// 取最小值,
    12         System.out.print(Math.pow(2,4));// 取2的4次方法,
    13         System.out.print(Math.random());// 取0到1之间doule值,
    14         System.out.print(Math.round(3.22));// 四舍五入;
    15 
    16     }
    17 }

     五:Arrays方法:sort排序、toString()表示获取数组的字符串表形式。

     1 package Arr_Demo;
     2 
     3 import java.lang.reflect.Array;
     4 import java.util.Arrays;
     5 
     6 public class Arr_Test {
     7     public static void  main(String ...args){
     8         int[]  in={1,3,2,5,6,4};
     9         int[]  in1={1,2,3,4,5,6};
    10         int a=Arrays.binarySearch(in1,6);//只能是有序的数组才可以,未查到为-1
    11         System.out.print(a);
    12         Arrays.sort(in);//从小到大排练.
    13         System.out.print(Arrays.toString(in));//数组转换成对应的字符串表现形式.
    14     }
    15 }

     

    l  练习一:定义一个方法,接收一个数组,数组中存储10个学生考试分数,该方法要求返回考试分数最低的后三名考试分数。

     1 package Arr_Demo;
     2 
     3 import java.lang.reflect.Array;
     4 import java.util.Arrays;
     5 
     6 public class Arr_Test {
     7     public static void  main(String ...args){
     8         int[]  in={51,63,72,25,46,24};
     9         int count=0;
    10         Arrays.sort(in);//从小到大排练.
    11         for (int i:in){
    12             count+=1;
    13             if(count<4){
    14                 System.out.print(i+"
    ");
    15             }
    16 
    17         }
    18     }
    19 }

    其他方法:

     1 package Arr_Demo;
     2 
     3 import java.lang.reflect.Array;
     4 import java.util.Arrays;
     5 
     6 public class Arr_Test {
     7     public static void  main(String ...args){
     8         int[]  in={51,63,72,25,46,24};
     9         Arrays.sort(in);//从小到大排练.
    10         int[] res=new int[3];//int[] res={1,2,3};
    11         System.arraycopy(in,0,res,0,3);
    12         System.out.print(Arrays.toString(res));
    13     }
    14 }

     注意:

    在使用System.arraycopy的时候,目的数组不能为空 ,为空的话,没有索引,无法指定索引。可以填充数组元素或者在定义数组的时候,初始化定义长度int[] in=new int[3]。

  • 相关阅读:
    2021上半年下午第二题
    21年软件设计师上半年下午试题一
    软考下午第三题-用例图和类图
    类图
    用例图-包含、扩展、泛化
    软考下午题二------数据库设计
    软件设计师下午题-数据流图
    IP练习题
    2020软件工程作业02
    2020软件工程作业01
  • 原文地址:https://www.cnblogs.com/evilliu/p/7804218.html
Copyright © 2020-2023  润新知