0
点赞
收藏
分享

微信扫一扫

Java学习打卡第五天——[Arrays,包装类,内部类类,匿名内部类简介和使用]

jjt二向箔 2022-01-10 阅读 6

Javaee之【Arrays的使用】

Javaee之【包装类】

Javaee之【内部类】

Javaee之【匿名内部类】

Arrays的使用

这里主要介绍Arrays在排序方面的使用 对与数组排序可以直接调用sort方法实现 下面是两种排序方法的比较: 第一种采用循环实现排序:
public class ArrayDemo {
    public static void main(String[] args) {

        int[] arr = {21, 23, 22, 89,  56};

        String s = arraytoString(arr);
        System.out.println("排序前的数组是:"+s);


        //冒泡排序
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 ; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        System.out.println("排序后的数组是:"+arraytoString(arr));
    }

    public static String arraytoString(int[] arr) {
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1) {
                sb.append(arr[i]);
            } else {
                sb.append(arr[i]).append(",");
            }
        }
        sb.append("]");
        String s = sb.toString();
        return s;
    }
}

第二种:

import java.util.Arrays;

public class ArraysDemo {
    public static void main(String[] args) {
        int[] arr = {13,21,54,45,74,98};

        System.out.println("排序前的结果是:"+Arrays.toString(arr));

        Arrays.sort(arr);

        System.out.println("排序后的结果是:"+Arrays.toString(arr));
    }
}

包装类

装箱和拆箱操作

装箱就是:将int包装为Integer,反过来便是拆箱(拆箱操作是编译器自动完成的)
Integer—>int
int---->Integer
,另外下面也给出了Integer和String类型相互转化的方法

示例01:
String和Integer相互转化的方法:

public class Intgear {
    public static void main(String[] args) {

        //以前使用的创建Integer对象的方法
        //Integer为引用类型,int为基本类型

        Integer i = new Integer(23);

        //现在以前使用的创建Integer对象的方法
        Integer i1 = Integer.valueOf(20);
        Integer i2 = Integer.valueOf("100");
        System.out.println(i1);
        System.out.println(i2);

        /*Byte b1 = Byte.valueOf((byte) 2);
        System.out.println(b1);
        String s = String.valueOf("asd");
        System.out.println(s);*/
        System.out.println("--------");

        //Integer-----》String
        int number = 200;
        //方法1
        String s1 = "" + number;
        System.out.println(s1);

        //方法二
        //public static String valueOf(float f)
        //是static类型的所以使用String调用
        //------------------------------------------------------提倡使用static类型的可以直接转化
        String s2 = String.valueOf(number);
        System.out.println(s2);
        System.out.println("--------");
        //String-----》Integer
        //方法一
        String s3 = "100";
        Integer i3 = Integer.valueOf(s3);
        //public int intValue()
        //不是static类型的所以直接使用对象i3调用
        int i4 = i3.intValue();
        System.out.println(i4);

        //方法二
        //------------------------------------------------------提倡使用static类型的可以直接转化
        //public static int parseInt(String s)
        int i5 = Integer.parseInt(s3);
        System.out.println(i5);
    }


}

示例02:
Integer 和int

public class Integer {
    /*
    * 装箱和拆箱*/
    public static void main(String[] args) {

        //Integer属于引用类型,int属于操作类型
        //装箱操作
        java.lang.Integer i =  java.lang.Integer.valueOf(23);
        int i1 = i + 23;
        System.out.println(i);
        System.out.println(i1);
        //拆箱操作

        int i2 = i;//系统自己默认做了
        System.out.println(i);
    }
}

内部类

内部类顾名思义就是:在一个类里面又装了一个在,在使用的时候需要创建内部类的对象:
public class Outer {
    /*
    内部类可以访问外部类的所有内容,包括私有
    * 外部类访问内部类必须通过创建对象*/

    private int num = 10;

    public class Inter {
        public void show() {
            //内部类可以访问外部类的所有内容,包括私有
            System.out.println(num);
        }
    }

    //外部类访问内部类必须通过创建对象,而且创建对象也必须要--在方法---里面
    public void method() {
        Inter i1 = new Inter();
        i1.show();
    }

}

内部类在外部测试类使用的案例01
Out类:

public class Outer {

    private int num = 10;
    //成员内部类

    public class Inner{
        public void show(){
            System.out.println(num);
        }
    }


    //外部类调用内部类的方法
    //创建对象
    public void method(){
        Inner i = new Inner();
        i.show();
    }

}

测试类:

public class OuterDemo {
    public static void main(String[] args) {

        //了解即可,内部类的创建对象方法
        /*Outer.Inner oi = new Outer().Inner();
        oi.show();*/

        //实际上内部类对外不是不可见的,所以在外部只能通过她所创建的外部类来创建对象,使用外部类访问,然后再测试类里面在进行调用方法
        Outer o = new Outer();
        o.method();//o.method--->>show

    }
}

匿名内部类

==匿名内部类需要一个接口,----实现了该接口的匿名对象------== 简单理解: 在一个类内部的方法中通过new一个接口并且重写所在的方法来实现; 接口:
public interface Inter {
    void show();
}

外部类:

public class Outer {

    public void method(){
        /*
        * 匿名内部类的格式:
        * new 接口名称(){
        };
        * */

        //匿名内部类需要一个接口,----实现了该接口的匿名对象------
        new Inter(){
            @Override
            public void show() {
                System.out.println("匿名内部类");
            }
        }.show();

        Inter i = new Inter(){
            @Override
            public void show() {
                System.out.println("匿名内部类");
            }
        };

        i.show();

    }
}

测试类:

public class OuterDemo {
    public static void main(String[] args) {

        Outer o = new Outer();
        o.method();
    }
}
举报

相关推荐

0 条评论