包装类

包装类:

包装类是针对基本数据类型(四项八类),之前我们在使用泛型数组列表的时候,需要指定数组对象的类型,但是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]。

原文地址:https://www.cnblogs.com/evilliu/p/7804218.html