Java从入门到精通12==》五节知识总览、练习

本文介绍了Java中的自定义类、ArrayList集合及其方法,包括类的定义、集合创建及常用操作。接着讲解了关键字static、成员变量和方法的概念,深入探讨了方法的格式、属性和参数。文章还涉及封装、this关键字、构造方法以及方法的重载和重写。最后,通过一个学生数据管理系统的实现,展示了这些概念在实际编程中的应用。
摘要由CSDN通过智能技术生成

Java从入门到精通12

2023.7.30

07、自定义类、ArrayList集合与其方法

一、自定义类

1.什么是自定义类?

自己定义的类,只要符合Java规则,爱怎么定义就怎么定义

2.2、类的定义与使用

定义类的格式:
修饰符 class 类名
{构造器定义…
成员变量…
方法…
}

因为类属于引用类型,所以在main方法中使用类时需要new,格式如下。

类名 变量名 =new 类名;

二、ArrayList集合

1.什么是Arraylist?

动态数组,我们创建数组是不需要考虑他的长度了,他的底层我现在还不知道是什么样子的。

2.集合的创建

格式:

Arraylist<要存元素的数据类型(引用数据类型)> 变量名=new ArrayList<要存元素的数据类型>();

3.集合常用方法

add、size、get、set、clear、isEmpty、contians、remove等详情请见Day07

08、关键字static、成员变量、方法

一、关键字static

区分成员变量、方法内部类、初始化块是属于类本身还是属于实例

二、成员变量

1.什么是成员变量?

类中定义的变量,分为实例变量、静态变量

2.实例变量
3.静态变量.

三、方法

1.什么是方法

为达成某种目的所写的代码块,Java中方法不能独立存在,它必须属于一个类或者对象

2.静态方法
3.实例方法
4.返回值
5.定义方法的四种方式
  • 无参数,无返回值
  • 有参数,无返回值
  • 无参数,有返回值
  • 有参数,有返回值

09、方法详解:方法格式、方法的所属性、方法的参

一、方法格式

格式:
修饰符 方法返回值类型 方法名称(行参)
{方法体;
return[返回值];
}

  1. 修饰符
  2. 方法名
  3. 行参
  4. 方法体
  5. 返回值

二、方法的所属性

  • 方法不能独立定义,方法只能在类体里定义。
  • 从逻辑意义上来看,方法要么属于类的本身,要么属于该类的一个对象。
  • 永远不能独立执行发放,执行方法必须使用类或对象作为调用者。

三、方法的参

Java程序设计语言总是按值调用,也就是说方法得到的值是调用者提供的“复制品”,所以方法修改也是修改它的复制品。
但是当参数是引用数据类型时,因为引用数据类型存的是变量值,也就是说这时方法可以更改参数本体。

10、封装、zhis、构造方法(又名构造器)、可变参

一、封装

1、什么是封装

分装即指将一块代码隔离开但是仍留有与外界练习 的桥梁,起到保护自己也不闭关锁国的功能。

2、封装的优点
3、私有访问修饰符private

1、访问修饰符等级表
2、私有访问修饰符private
3、set、get命名方法

二、zhis

1.什么是this

Java的一个关键字

2.常见的三种this情况

1、普通的直接引用(这里的this值得是对象本省)
2、形参与成员名字重名,用 this 来区分
3、引用构造函数

三、构造方法

1.什么是构造方法

实例化对象的。

2.如何定义构造方法

格式:
修饰符 构造方法名(行参){|
构造方法体
}

3.构造方法分为两种

1、有参构造
2、无参构造

4.可变参

格式:
修饰符 方法返回值类型 方法名称(行参…可变参 )
{方法体;
return[返回值];
}

11、方法的重载、继承、this和super、方法的重写

一、方法的重载

二、继承

1.什么是继承

让类与类之间产生关系

2.格式

class 父类 {
}
class 子类 extends 父类 {
}

3.继承的规则

1、成员变量的继承
2、方法的继承
3、继承的优点
4、继承的特点

三、this和super

四、方法的重写

1.前提
2.格式
class  父类
{
   权限修饰符  返回值类型   方法名  (){
方法体1
	}
}
class 子类 extends 父类{
 权限修饰符  返回值类型   方法名  (){
方法体2
	}
}

方法体重写,其他参照前提

练 习 题

需求:
1.设计一个学生数据管理系统
2.学生数据要保证安全
3.将功能模块化
4.有退出功能
解题思路:
1.因为是多次循环操作,所以菜单放在死循环中,且欢迎只需要一次。
代码展示:

		System.out.println("欢迎进入数据管理系统!");
 for (; ; ) {
                System.out.println("1.增加数据");
                System.out.println("2.删除数据");
                System.out.println("3.修改数据");
                System.out.println("4.查看数据");
                System.out.println("5.退出系统");
                System.out.println("请输入1~5");
                }

2.实现选择功能(那就必须实现交互)和系统退出功能。

 Scanner sc = new Scanner(System.in);
  int a = sc.nextInt();
                switch (a){
                    case 1:
                        break;
                    case 2:
                        break;
                    case 3:
                        break;
                    case 4:
                        break;
                    case 5:
                        break;
                    default:
                        break;
            }

3.创建学生类,为了保护学生信息,所有的元素都是静态的,所以必须有方法才能够调用类中元素。
并创建一个有参构造器方便后面操作。

package 增删改查模块用类封装;

public class Student {
    private int id;
    private String name;
    private int age;

    public Student(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

4.既然有了学生类,那就得有一个容器存放学生。所以用到可变数组ArrayList。

 ArrayList<Student> students = new ArrayList<Student>();

5.创建一个类,存放功能模块

public class Tools {
}

6.模块化功能------添加学生

		Scanner sc=new Scanner(System.in);
    public static void tianJia(ArrayList<Student> students){
        System.out.print("请输入学生id:");
        int id= sc.nextInt();
        System.out.print("请输入学生姓名:");
        String name=sc.next();
        System.out.print("请输入学生年龄:");
        int age= sc.nextInt();
        Student student = new Student(id,name,age);
        students.add(student);
    }

7.模块化功能------删除学生

		Scanner sc=new Scanner(System.in);
 public static void shanChu(ArrayList<Student> students){
        System.out.println("请输入需要删除的学生id:");
        int sid= sc.nextInt();
        int num=0;
        for (int i=0;i<students.size();i++){
            if (sid==students.get(i).getId()){
                num=i;
            }
        }
        Student s= students.remove(num);
        System.out.println("您已删除学生信息成功!!!");
        System.out.println("被删除的学生id为:"+s.getId());
        System.out.println("被删除的学生姓名为:"+s.getName());
        System.out.println("被删除的学生年龄为:"+s.getAge());
    }

8.模块化功能------修改学生

Scanner sc=new Scanner(System.in);
  public static void xiuGai(ArrayList<Student> students){
        System.out.print("请输入需要修改的学生id:");
        int xid= sc.nextInt();
        int num=0;
        for (int i=0;i<students.size();i++){
            if (xid==students.get(i).getId()){
                num=i;
            }
        }
        System.out.print("请输入新的学生id:");
        int id= sc.nextInt();
        System.out.print("请输入新的学生姓名:");
        String name=sc.next();
        System.out.print("请输入新的学生年龄:");
        int age= sc.nextInt();
        Student student = new Student(id,name,age);
        students.set(num,student);
        System.out.println("您已修改学生信息成功!!!");
    }

9.模块化功能------查看学生

    public static void chaKan(ArrayList<Student> students){
        for (Student student : students) {
            System.out.println("学生的id为:"+student.getId());
            System.out.println("学生的姓名为:"+student.getName());
            System.out.println("学生的年龄为:"+student.getAge());
        }
    }

10.优化重复代码,并改善系统界面

成品代码

package 增删改查模块用类封装;

import java.util.ArrayList;
import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("欢迎进入数据管理系统!");
            ArrayList<Student> students = new ArrayList<Student>();
            //实现菜单
            for (; ; ) {
                System.out.println("1.增加数据");
                System.out.println("2.删除数据");
                System.out.println("3.修改数据");
                System.out.println("4.查看数据");
                System.out.println("5.退出系统");
                System.out.println("请输入1~5");
                //实现人机交互
                int a = sc.nextInt();
                switch (a){
                    case 1:
                        Tools.tianJia(students);
                        break;
                    case 2:
                        Tools.shanChu(students);
                        break;
                    case 3:
                        Tools.xiuGai(students);
                        break;
                    case 4:
                        Tools.chaKan(students);
                        break;
                    case 5:
                        System.exit(1);
                        break;
                    default:
                        System.out.println("无效选项,查证后重新输入!");
                        break;

            }
        }
    }
}

package 增删改查模块用类封装;

public class Student {
    private int id;
    private String name;
    private int age;

    public Student(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

package 增删改查模块用类封装;

import java.util.ArrayList;
import java.util.Scanner;

public class Tools {
        static Scanner sc=new Scanner(System.in);
    public static void tianJia(ArrayList<Student> students){
        System.out.print("请输入学生id:");
        int id= sc.nextInt();
        System.out.print("请输入学生姓名:");
        String name=sc.next();
        System.out.print("请输入学生年龄:");
        int age= sc.nextInt();
        Student student = new Student(id,name,age);
        students.add(student);
    }
    public static void shanChu(ArrayList<Student> students){
        System.out.println("请输入需要删除的学生id:");
        int sid= sc.nextInt();
        int num=0;
        for (int i=0;i<students.size();i++){
            if (sid==students.get(i).getId()){
                num=i;
            }
        }
        Student s= students.remove(num);
        System.out.println("您已删除学生信息成功!!!");
        System.out.println("被删除的学生id为:"+s.getId());
        System.out.println("被删除的学生姓名为:"+s.getName());
        System.out.println("被删除的学生年龄为:"+s.getAge());
    }
    public static void xiuGai(ArrayList<Student> students){
        System.out.print("请输入需要修改的学生id:");
        int xid= sc.nextInt();
        int num=0;
        for (int i=0;i<students.size();i++){
            if (xid==students.get(i).getId()){
                num=i;
            }
        }
        System.out.print("请输入新的学生id:");
        int id= sc.nextInt();
        System.out.print("请输入新的学生姓名:");
        String name=sc.next();
        System.out.print("请输入新的学生年龄:");
        int age= sc.nextInt();
        Student student = new Student(id,name,age);
        students.set(num,student);
        System.out.println("您已修改学生信息成功!!!");
    }
    public static void chaKan(ArrayList<Student> students){
        for (Student student : students) {
            System.out.println("学生的id为:"+student.getId());
            System.out.println("学生的姓名为:"+student.getName());
            System.out.println("学生的年龄为:"+student.getAge());
        }
    }
}

结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我头像真的只是只猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值