首页 > 编程语言 >Java 基础篇day08

Java 基础篇day08

时间:2023-11-09 21:22:59浏览次数:42  
标签:day08 return Arrays 基础 getAge new println Java public

抽象

抽象方法用abstract
抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
类中该有的成员(成员变量,方法,构造器),抽象类都可以有
抽象类最主要的特点式抽象类不能创建对象,仅作为一种特殊的父亲,让子类继承并且实现
A a = new A() //抽象类不能创建对象
一个类继承抽象类,必须重写完抽象类的全部抽象方法,否则这个类也必须定义称为抽象类

成员内部类
外部类名.内部类名 对象名 = new 外部类().new 内部类();

点击查看代码
 Outter.Inner in = new Outter().new Inner();
        in.setName("张三");
        System.out.println(in.getName());
        in.show();
        System.out.println("------------------------");
        Body.Heart heart = new Body().new Heart();
        heart.show(); 



//外部类
class Outter{
private int age;
public void run(){}
public static String schoolName;
public static void inAddr(){}

//成员内部类:无static修饰,属于外部类的对象的  
public class Inner{
        private  String name;

        public Inner() {
        }

        public Inner(String name) {
            this.name = name;
        }
    public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public void show(){
            // 成员内部类中,是否可以直接访问外部类的实例成员? 可以
            System.out.println(age);
            run();
            // 成员内部类中,是否可以直接访问外部类的静态成员? 可以
            System.out.println(schoolName);
            inAddr();
        }
}

匿名内部类的写法
匿名内部类本质上是一个子类,同时也是一个子类对象
可以更方便的构建一个子类对象
Animal a = new Animal(){
@Override
public void cry() {
System.out.println("猫喵喵喵的叫~~~");
}
};
a.cry();

// 1、返回数组的内容给我们

    int[] arr = {11, 22, 33, 44, 55, 98, 103, 27};
    System.out.println(arr);
    String rs = Arrays.toString(arr);
    System.out.println(rs);

    // 2、拷贝一个数组回来
    // 参数一:原数组  参数二:起始索引  参数三:结束索引 (包前不包后)
    int[] arr2 = Arrays.copyOfRange(arr, 3, 7);
    System.out.println(Arrays.toString(arr2));

    // 3、扩容数组:返回扩容后的新数组
    int[] arr3 = Arrays.copyOf(arr, 20);
    System.out.println(Arrays.toString(arr3));

    // 4、修改数组中的每个数据的。
    double[] scores = {59.5, 90, 60, 89, 29, 0, 100};
    // 参数一:被修改的数组  参数二:用于修改的对象
    Arrays.setAll(scores, new IntToDoubleFunction() {
        @Override
        public double applyAsDouble(int value) {
            // value = 0 1 2 ...
            // 修改数据返回
            return scores[value] + 10;
        }
    });

// 目标:掌握Arrays类为对象数组进行排序的方案。
Student[] students = new Student[6];
students[0] = new Student("张无忌", '男', 28, 178.5);
students[1] = new Student("朱九真", '女', 25, 170.5);
students[2] = new Student("周芷若", '女', 23, 172.5);
students[3] = new Student("赵敏", '女', 27, 169.5);
students[4] = new Student("杨不悔", '女', 39, 165.8);
students[5] = new Student("玄冥二老", '男', 52, 165.3);

    // 重点:Java中如何对自定义类型的对象进行排序呢?? 方式有两种。
    // 第一种:可以让对象的类实现一个比较规则接口Comparable,
    // 从写compareTo方法,制定大小比较规则。
    // Arrays.sort(students);

    // 第二种:sort方法存在一个重载的方法,可以在第二个参数自
    // 带一个Comparator比较器对象,自己设置大小规则。
    Arrays.sort(students, new Comparator<Student>() {
        @Override
        public int compare(Student o1, Student o2) {
            // 制定大小规则:
            // 官方规定了:如果你认为左边对象大,返回正整数。
            // 官方规定了:如果你认为左边对象小,返回负整数。
            // 官方规定了:如果你认为两个对象一样大,返回0。
            // 按照年龄
            // if(o1.getAge() > o2.getAge()){
            // return 1;
            // }else if(o1.getAge() < o2.getAge()){
            // return -1;
            // }
            // return 0;
            // return o1.getAge() - o2.getAge(); // 升序
            // return o2.getAge() - o1.getAge(); // 降序

            // 按照身高排序。
            // if(o1.getHeight() > o2.getHeight()){
            // return 1;
            // }else if(o1.getHeight() < o2.getHeight()) {
            // return -1;
            // }
            // return 0;

            // return Double.compare(o1.getHeight(), o2.getHeight()); // 升序
            return Double.compare(o2.getHeight(), o1.getHeight()); // 降序
        }
    });

    System.out.println(Arrays.toString(students));
}

/**
* this拿到当前学生对象。
* o拿到被比较的学生对象。
*/
@Override
public int compareTo(Student o) {
// 制定大小规则:
// 官方规定了:如果你认为左边对象大,返回正整数。
// 官方规定了:如果你认为左边对象小,返回负整数。
// 官方规定了:如果你认为两个对象一样大,返回0。
// 按照年龄
// if(this.getAge() > o.getAge()){
// return 1;
// }else if(this.getAge() < o.getAge()){
// return -1;
// }
// return 0;
return this.getAge() - o.getAge(); // 升序
}

    System.out.println(Arrays.toString(scores));

    // 5、排序数组。
    Arrays.sort(scores); // 默认升序排序
    System.out.println(Arrays.toString(scores));
}

标签:day08,return,Arrays,基础,getAge,new,println,Java,public
From: https://www.cnblogs.com/yifan0820/p/17822866.html

相关文章

  • Java 解压缩.zip文件
    代码:publicclasstest{privatestaticfinalLoggerlogger=LoggerFactory.getLogger(test.class);//压缩文件解压缩publicstaticvoidmain(String[]args){StringzipPath="";StringtargetPath="";by......
  • 十、Java多线程
    一、多线程概述1、进程:正在运行的程序,是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间和系统资源。2、线程:是进程中的单个顺序控制流,是一条执行路径一个进程如果只有一条执行路径,则称为单线程程序。一个进程如果有多条执行路径,则称为多线程程序。3......
  • Java中的IO流(一)
    Java中的IO流(一)一、前言学习这部分内容的时候,跟着敲代码难免有些乱,这里先放一张图:二、实现对文件和文件夹的操作:案例一:packagefile.bytestream;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.IOException;publicclassFileDemo1{......
  • 2023-2024-1 20231414 《计算机基础与程序设计》第七周学习总结
    学期(2023-2024-1)学号(20231414)《计算机基础与程序设计》第七周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2023-2024-1计算机基础与程序设计第七周作业)这个作业的目标<写上具体方......
  • Java中的多态
    向上转型后的再向下转回去才行注意:向下转型时,有可能编译阶段不报错,但是程序运行时会报错,类型转换异常。......
  • Java中的抽象类
    注意:抽象类中也是有默认的无参构造函数的eg:抽象类中的构造方法父类publicabstractclass_168AbstractParent{privateintage=300;privatefinalintcode_200=200;public_168AbstractParent(){System.out.println("我是Parent的无参构造方法......
  • 2023-2024-1 20231419 《计算机基础与程序设计》第七周学习总结
    2023-2024-120231419《计算机基础与程序设计》第七周学习总结作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK07这个作业的目标自学《计算机科学概......
  • 每天5道Java面试题(第6天)
    1. 接口和抽象类有什么区别?默认方法实现:抽象类可以有默认的方法实现;接口不能有默认的方法实现。实现:抽象类的子类使用构造函数:抽象类可以有构造函数,接口不能有。main方法:抽象类可以有main方法,并且我们能运行它;接口不能有main方法。实现数量:类可以实现很多个接口;但是只能继承......
  • Java登陆第二天——SQL之DML
    SQL语句SQL概括起来可以分为以下四组。(都是SQL,因为功能的不同,为了更好学习划分了类别)DDL——数据定义语言。用于定义数据的结构。指的是增,删,改数据库DML——数据操作语言。用于检索或修改数据。指的是增,删,改数据DQL——数据查询语言。用于查询各种形式的数据。指的是查询......
  • 商城系统 “牵手” 淘宝 API 接口 php java sdk
    随着互联网的快速发展,网络购物已成为人们日常生活中不可或缺的一部分。淘宝作为中国最大的电商平台之一,其商城系统中详情页面的重要性日益凸显。本文将阐述淘宝详情在商城系统中的重要性,从用户角度、商家角度和商城运营角度进行分析,并探讨如何优化详情页面,提升用户转化率和购物体验......