每日一学Java篇

今天继续学习Java面向对象的内容,以下素材均来自B站尚硅谷。

一、理解“万事万物皆对象”

        1.在Java语言范畴中,我们都能将功能、结构等封装到类中,通过类的实例化,来调用具体的功能结构。

                >Scanner,String等

                >文件:File

                >网路资源:URL

        2.涉及到Java语言与前端Html、后端的数据库交互时,前后端的结构在Java层面交互时,都体现为类、对象。

二、内存解析的说明

引用类型的变量,只可能存储两类值:null 或 地址值(含变量的类型)

三、匿名对象的使用

1.理解:我们创建的对象,没有显示的赋给一个变量名。即为匿名对象。

2.特征:匿名对象只能调用一次。

3.使用:如下

public class InstanceTest {
    public static void main(String[] args) {
        Phone p = new Phone();
        System.out.println(p);

        p.sendEmail();
        p.playGame();

        new Phone().price = 1999;
        new Phone().showPrice();

        PhoneMall mall = new PhoneMall();
        mall.show(new Phone());
    }
}

class PhoneMall{

    public void show(Phone phone){
        phone.sendEmail();
        phone.playGame();
    }
}

class Phone{
    double price;
    public void sendEmail(){
        System.out.println("发邮件");
    }
    public void playGame(){
        System.out.println("玩游戏");
    }
    public void showPrice(){
        System.out.println("手机价格");
    }
}

 自定义数组的工具类:

public class ArrayUtil {
    //求数组的最大值
    public int getMax(int[] arr){
        int maxValue = arr[0];
        for(int i = 1;i < arr.length;i++){
            if(maxValue < arr[i]){
                maxValue = arr[i];
            }
        }
        return maxValue;
    }

    //求数组的最小值
    public int getMin(int[] arr){
        int minValue = arr[0];
        for(int i = 1;i < arr.length;i++){
            if(minValue > arr[i]){
                minValue = arr[i];
            }
        }
        return minValue;
    }

    //求数组的总和
    public int getSum(int[] arr){
        int sum = 0;
        for(int i = 0;i < arr.length;i++){
            sum += arr[i];
        }
        return sum;
    }

    //求数组的平均值
    public int getAvg(int[] arr){
        return getSum(arr) / arr.length;
    }

    //反转数组
    public void reverse(int[] arr){
        for(int i = 0;i < arr.length / 2;i++){
            int temp = arr[i];
            arr[i] = arr[arr.length - i -1];
            arr[arr.length - i -1] = temp;
        }
    }

    //复制数组
    public int[] copy(int[] arr){
        int[] arr1 = new int[arr.length];
        for(int i = 0;i < arr1.length;i++){
            arr1[i] = arr[i];
        }
        return arr1;
    }

    //数组排序
    public void sort(int[] arr){
        for (int i = 0; i < arr.length -1; i++){
            for (int j = 0;j < arr.length -1 -i; j++){
                if (arr[j] > arr[j + 1]){
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

    //遍历数组
    public void print(int[] arr){
        for (int i = 0; i < arr.length; i++){
            System.out.print(arr[i] + "\t");
        }
    }

    //查找指定元素
    public int getIndex(int[] arr, int dest){
        //线性查找
        for (int i = 0;i < arr.length;i++){
            if (dest == arr[i]){
                return i;
            }
        }
        return -1;//返回一个负数,表示没有找到
    }
}
public class ArrayUtilTest {
    public static void main(String[] args){
        ArrayUtil util = new ArrayUtil();
        int[] arr = new int[]{32,24,32,5,3,54,654,-98,0,-53,5};
        int max = util.getMax(arr);
        System.out.println("最大值为:" + max);

        System.out.println("排序前:");
        util.print(arr);

        util.sort(arr);
        System.out.println();
        System.out.println("排序后");
        util.print(arr);

        System.out.println("查找");
        int index = util.getIndex(arr,5);
        if(index >= 0){
            System.out.println("找到了,索引地址为"+ index);
        }else{
            System.out.println("未找到");
        }
    }
}

 方法的重载(overload)loading...

1.定义:在同一类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可。

        "两同一不同":同一个类、相同方法名

                                参数列表不同:参数个数不同,参数类型不同

2.举例:

        Arrats类中重载的sort() / binarySearch()

3.判断是否是重载:

        跟方法的权限修饰符、返回值类型、形态变量名、方法体都没有关系!

4.在通过对象调用方法时,如何确定某一个指定的方法:

        方法名 - - - > 参数列表

public class OverLoadTest {

    //如下的4跟方法构成了重载
    public void getSum(int i,int j){
        System.out.println(i + j);
    }

    public void getSum(double d1,double d2){

    }

    public void getSum(String s,int i){

    }

    public void getSum(int i,String s){

    }
}

 练习判断:

 重载的练习:

1.编写程序,定义三个重载方法并调用。方法名为mOL。
        三个方法分别接收一个int参数、两个int参数、一个字符串参数。

        分别执行平方运算并输出结果,相乘并输出结果,输出字符串信息。 

        在主类的main ( )方法中分别用参数区别调用三个方法。

2.定义三个重载方法max( ),
        第一个方法求两个int值中的最大值,
        第二个方法求两个doub1e值中的最大值,

        第三个方法求三个double值中的最大值,

        并分别调用三个方法。

public class OverloadExer {
    //1.如下的方法构成重载
    public void mOL(int i){
        System.out.println(i * i);
    }
    public void mOL(int i,int j){
        System.out.println(i * j);
    }
    public void mOL(String s){
        System.out.println(s);
    }

    //2.如下的方法构成重载
    public int max(int i,int j){
        return (i > j)? i : j;
    }
    public double max(double d1,double d2){
        return (d1 > d2)? d1 : d2;
    }
    public double max(double d1,double d2,double d3){
        double max = (d1 > d2)? d1 : d2;
        return (max > d3)? max : d3;
    }
}

作业1为了方便就没有写到main()方法中。

总结:今天学习了如何理解“万事万物皆对象”、对象数组的内存解析、匿名对象的使用、理解方法的重载、方法重载的细节说明、重载的举例和判断练习、重载的练习:编码实践。

明日计划:继续学习Java面向对象的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值