实训经验分享day16

一、课前分享/*------------------------------------------------------*/

早:
数组
优点:访问速度快
缺点:内存消耗大,插入和增删麻烦,定长
链表结构

公平

中:
前期知识回顾

Cursor

晚:
睡眠监测项目:测心率的传感器,测声音的传感器

二、上课内容/*------------------------------------------------------*/

上午:
多态poly
多态就是一种事物的多种表形式。
条件:类的继承|接口的实现
最终体现:父类引用指向子类对象
对应类型引用调用 :
        能调用的成员包含,子类中定义的成员 + 父类中的继承的成员
        如果子类中存在重写方法,调用子类中重写后的方法对父类的方法进行屏蔽
    多态引用调用 :
        调用成员变量 : 编译运行找父类|看左边|看类型
        调用成员方法 : 编译看父类|左边|类型,运行找子类|右边|对象
        多态引用对子类新增成员不可见,但是如果子类中存在方法重写,会调用重写后的方法

    注意 : 如果使用多态但是不配合方法的重写,多态就没有意义

下午:
标准赋值 : 对应类型的数据赋值给对应类型的变量
        int i = 1;
        Person p = new Person();

    基本数据类型的类型转换 :
        自动类型提升 : 小-->大
            long l = i;
        强制类型转换 : 大-->小
            int i2 = (int)l;
    引用数据类型的转型 :
        向上转型 : 小-->大
            Person p = new Student();-->多态
        向下转型 : 大-->小
            Student s = (Student)p;

    java.lang.ClassCastException : 类型转换异常
    避免类型转换异常的出现 :instanceof 运算符
        语法 :
            引用 instanceof 类型  判断前面的引用是否是指向后面类型的对象|子类对象,如果是返回true,不是返回false

多态的作用:
减少重复的代码
1)提高了代码的维护性 (通过继承和实现来保证)
2)提高了代码的扩展性 (通过多态来保证) 
3)降低代码耦合度

抽象类abstract
当不确定方法体时可以定义为抽象方法,存在抽象方法的类就是抽象类。抽象类不能创建对象,只能通过子类实现所有抽象方法创建对象。

接口interface
接口是一种特殊的抽象类,在项目中起到解耦的作用,提高代码的复用性,一般为抽象功能的集合。接口不能实例化,一个类可以实现多接口,实现类分为两种,一种是抽象实现类,按需实现抽象方法,一种是具体实现类,实现全部抽象方法

三、代码练习/*------------------------------------------------------*/

package youjixian01a.com.treepomelo.basepractice;

import java.util.Scanner;

/***
 * 2135
 * 贰壹叁伍
 * 零零零贰壹叁伍
 * 零佰零拾零万贰仟壹佰叁拾伍元
 */

public class MoneyConvert {
    public static void main(String[] args) {
        //输入一个金额
        int money = 0;
        Scanner sc = new Scanner(System.in);
        while(true){
            System.out.println("请输入一个金额:");
            int m = sc.nextInt();
            if(m>=0){
                money = m;
                break;
            }
            else
                System.out.println("您输入的金额有误...");
        }
        //转换成大写
        String moneyStr = convert(money);
        System.out.println(moneyStr);
        //补
        String strEx="";
        int len = moneyStr.length();
        while(len<7){
            strEx+="零";
            len++;
        }
        moneyStr = (strEx+=moneyStr);
        System.out.println(moneyStr);
        //加单位
        String[] dw = new String[]{"佰","拾","萬","仟","佰","拾","元"};
        for (int i = 0; i < dw.length; i++) {
            dw[i]=(moneyStr.charAt(i)+dw[i]);
        }
        for (String s : dw) {
            System.out.print(s);
        }
        System.out.println();
        System.out.println(moneyStr);
    }
    public static String convert(int i){
        String str = "";
        String[] arr = new String[]{"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
        while(i>10){
            int ge = i % 10;
            str+=arr[ge];
            i/=10;
        }
        str += arr[i];
        return new StringBuffer(str).reverse().toString();
    }
}
package youjixian01a.com.treepomelo.basepractice;

import java.util.Objects;
/**
 * 对象数组5
 * 定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。
 * 学生的属性:学号,姓名,年龄。
 * 要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
 * 要求2:添加完毕之后,遍历所有学生信息。
 * 要求3:通过id删除学生信息
 * 如果存在,则删除,如果不存在,则提示删除失败。
 * 要求4:删除完毕之后,遍历所有学生信息。
 * 要求5:查询数组id为“heima002”的学生,如果存在,则将他的年龄+1岁*/
public class ObjectControl {
    public static void main(String[] args) {
        //定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。
        Student01 s1 = new Student01("xiaoming", 1, "hubei");
        Student01 s2 = new Student01("xiaohong", 2, "xian");
        Student01 s3 = new Student01("xiaowang", 3, "anhui");
        Student01[] stu = new Student01[]{s1,s2,s3};

        //要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
        Student01 s4 = new Student01("xiaohuang", 4, "yunnan");
        //唯一性判断
        if(contains(stu,s4.getId())){
            //数组中id存在,输入的数据有误
            System.out.println("学生已存在,请重新添加");
        }
        else{
            //数组中id不存在,判断数组是否已满,不满则直接添加,满了数组长度+1再添加
            int count = arrCount(stu);
            if(count != stu.length){
                stu[count] = s4;
            }
            else{
                //数组长度+1
                stu = creatNewArr(stu,stu.length+1);
                //添加元素
                stu[stu.length-1] = s4;
            }
        }

        //要求2:添加完毕之后,遍历所有学生信息。
        print(stu);

        System.out.println("========================================");
        //要求3:通过id删除学生信息
        //判断是否有对应的学生
        int id = 4;
        if(!contains(stu,id)){
            //没有,输入有误
            System.out.println("没有这个学生,请重新输入...");
        }
        else{
            //有,找出对应学生,将其指向null
            deleteStu(stu,id);
        }
        //要求4:删除完毕之后,遍历所有学生信息。
        print(stu);
        System.out.println("=====================================");
        //要求5:查询数组id为“3”的学生,如果存在,则将他的地址改为"美国"*/
        id=1;
        for (Student01 s : stu) {
            if(s!=null){
                if(s.getId()==id){
                    s.setAddress("美国");
                }
            }
            else{
                System.out.println("这个学生不存在,请重新输入...");
            }
        }
        print(stu);
    }

    private static void deleteStu(Student01[] stu,int id) {
            for (int i = 0; i < stu.length; i++) {
                if(stu[i]!=null){
                    if(stu[i].getId()==id){
                        stu[i]=null;
                    }
                }
            }

    }

    private static void print(Student01[] stu) {
        for (int i = 0; i < stu.length; i++) {
            System.out.println(stu[i]);
        }
    }

    private static int arrCount(Student01[] stu) {
        int count=0;
        for (Student01 i : stu) {
            if(i!=null)
                count++;
        }
        return count;
    }

    private static Student01[] creatNewArr(Student01[] stu, int n) {
        Student01[] newStu = new Student01[n];
        for (int i = 0; i < stu.length; i++) {
            newStu[i]=stu[i];
        }
        return newStu;
    }

    public static boolean contains(Student01[] stu, int id){
        //
        for (Student01 s : stu) {
            if(s!=null){
                if(s.getId()==id)
                    return true;
            }
        }
        return false;
    }
}



class Student01{
    private String name;
    private int id;
    private String address;

    public Student01() {

    }

    public Student01(String name, int id, String address) {
        this.name = name;
        this.id = id;
        this.address = address;
    }

    public String getName() {
        return name;
    }

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

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "Student01{" +
                "name='" + name + '\'' +
                ", id=" + id +
                ", address='" + address + '\'' +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Student01)) return false;
        Student01 student01 = (Student01) o;
        return id == student01.id && name.equals(student01.name) && address.equals(student01.address);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, id, address);
    }
}
package youjixian01a;

import java.util.Scanner;

public class test31 {
    public static void main(String[] args) {
        //选择
        int choice = 0;
        while(true){
            System.out.println("请选择购买的饮料:1、咖啡   2、矿泉水   3、可乐");
            Scanner sc = new Scanner(System.in);
            choice = sc.nextInt();
            if(choice==1||choice==2||choice==3)break;
            else System.out.println("您的输入有误,请重新输入...");
        }
        Drink drink = new Drink();
        if(choice == 1){
            drink = new Coffee();
        }
        else if(choice ==3){
            drink = new Cola();
        }
        drink.set();
        drink.show();
    }
}
class Drink{
    private String name;
    private int capacity;

    public Drink() {
    }

    public Drink(String name, int capacity) {
        this.name = name;
        this.capacity = capacity;
    }

    public String getName() {
        return name;
    }

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

    public int getCapacity() {
        return capacity;
    }

    public void setCapacity(int capacity) {
        this.capacity = capacity;
    }

    //输入数据
    public void set(){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入容量:");
        setCapacity(sc.nextInt());
    }

    //展示信息
    public void show(){
        System.out.println("您购买的饮料信息如下:\n"+"名称:矿泉水"+"\n容量:"+getCapacity());
    }
}

class Coffee extends Drink{
    private String ingredient;

    public Coffee() {
    }

    public Coffee(String name, int capacity, String ingredient) {
        super(name, capacity);
        this.ingredient = ingredient;
    }

    public String getIngredient() {
        return ingredient;
    }

    public void setIngredient(String ingredient) {
        this.ingredient = ingredient;
    }

    @Override
    public void set(){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入容量:");
        setCapacity(sc.nextInt());
        System.out.println("请问是否需要配料:加奶、加糖");
        setIngredient(sc.next());
    }
    @Override
    public void show(){
        System.out.println("您购买的饮料信息如下:\n"+"名称:"+getName()+"\n配料:"+getIngredient()+"\n容量:"+getCapacity());
    }
}
class Cola extends Drink{
    private String brand;

    public Cola() {
    }

    public Cola(String name, int capacity, String brand) {
        super(name, capacity);
        this.brand = brand;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }
    @Override
    public void set(){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入容量:");
        setCapacity(sc.nextInt());
        System.out.println("请输入你想要的可乐,1、可口可乐,2、百事可乐:");
        setBrand(sc.next());
    }
    @Override
    public void show(){
        System.out.println("您购买的饮料信息如下:\n"+"名称:"+getName()+"\n品牌:"+getBrand()+"\n容量:"+getCapacity());
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值