Java从入门到精通12
文章目录
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[返回值];
}
- 修饰符
- 方法名
- 行参
- 方法体
- 返回值
二、方法的所属性
- 方法不能独立定义,方法只能在类体里定义。
- 从逻辑意义上来看,方法要么属于类的本身,要么属于该类的一个对象。
- 永远不能独立执行发放,执行方法必须使用类或对象作为调用者。
三、方法的参
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());
}
}
}
结束。