IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java入门级项目:学生管理系统的前身有关知识的掌握(史上无敌超级详细) -> 正文阅读

[Java知识库]Java入门级项目:学生管理系统的前身有关知识的掌握(史上无敌超级详细)


前言

在知乎上看到Java的第一阶段练手小项目就是学生管理系统
涉及的知识有:运行环境,关键字,数据结构,运算符,方法,条件结构,循坏结构,方法重载,数组

一、对象

涉及知识:对象与类中构造器的创建和调用
1.创建对象
格式:类名 对象名 = new 类名();
范例:Student s = new Student();
2.使用对象
使用成员变量:
格式:对象名.变量名
范例:s.name
针对这个成员变量我可以输出使用和赋值使用
使用成员方法:
格式:对象名.方法名()
范例:s.show()
用法:在其它类中调用自定义类成员变量或者成员方法时使用
代码示例:
创建一个学生类

package itheima_01;

/*
学生类
 */

public class Student {
    //成员变量(类似于c的全局变量)
    String name;
    int age;
    //成员方法(类似于c的函数)
    public void show(){
        System.out.println(name+","+age);
    }
}

创建一个学生测试类(在此类中调用学生类中的变量与方法)

package itheima_01;
/*
1. 创建对象
 格式:类名 对象名 = new 类名();
 范例:Student s = new Student();
2.使用对象
 使用成员变量:
 格式:对象名.变量名
范例:s.name
针对这个成员变量我可以输出使用和赋值使用
使用成员方法:
格式:对象名.方法名()
范例:s.show()
 */

public class StudentText {
    public static void main(String[] args) {
        //创建对象
        Student s = new Student();

        //使用成员变量
        s.name = "小明";//赋值使用,字符串用双引号
        System.out.println(s.name);//输出使用
        
        //使用成员方法
        s.show();//调用Student类中的show方法,实现了打印输出
    }

}

二、private关键字

涉及知识:基于类的访问权限
private关键字是相较于public关键字而言的。

  1. 被public修饰的方法是公用的,其他类都可调用
  2. 被private修饰的方法是私有的,是最严格的,只有当前类(当前JAVA文件)可以调用,其他的·类都不能调用,甚至继承当前类的子类都不能调用.
  3. private作为一种权限修饰符可以修饰成员(成员变量和方法),被private修饰的成员只在本类中才能访问(在其他类中不能直接调用)
    作用:可以使用private实现封装
    将属性和方法用private封装后表示,被封装的属性与方法只能在本类中使用,类外部不可见。为了提高程序的独立性,减少耦合度。
    此时要想访问被封装的属性,必须提供提供相应的操作:
    提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰。
    提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰。

代码示例:
先创建一个学生类

package itheima_01;

/*
学生类
 */

public class Student {
    //成员变量(类似于c的全局变量)
    private String name;//设置了一个private
    private int age;
    //成员方法(类似于c的函数)
    public void show(){
        System.out.println(name+","+age);//此时两个成员变量因为在本类中所以可以使用
    }
}

再创建一个学生测试类,尝试访问带了private的成员变量
在这里插入图片描述可以看到这里提示出错了,在学生类中提供相应的get和set方法,就可以学生测试类中访问了
代码示例:
在这里插入图片描述
访问
代码示例:
在这里插入图片描述
现在就能访问了
除了用get和set方法可以在学生测试类中访问之外
还可以使用带参构造方法,直接创建带有属性的对象

//带参构造方法
    public Student(String name,int age){
        this.name = name;
        this.age = age;

在这里插入图片描述
但是获取数据还是得用get方法
如果你不使用带参构造方法,系统会默认提供一个无参构造方法注释掉他也会允许你使用

在这里插入图片描述
一般的话,用了带参构造,系统将不提供无参构造方法,无论你是不是用,都建议手动写一个无参构造方法,两种方法你都可以使用

 //无参构造方法
    public Student(){

    }

三、this关键字

格式;this.变量名
1.this修饰的变量用于指代成员变量
方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量。
方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量
2.什么时候使用this呢?解决局部变量隐藏成员变量时
3.this:代表所在类的对象引用
注意:方法被哪个对象调用,this就代表哪个对象
言多必失上代码:接着上面把name对应的set和get方法写完

public void setName(String n){
        name = n;
    }
    public String getName(){
        return name;
    }

给参数取名字讲究顾名思义好名字很重要
那么如果不看上面的代码,就不太好理解这个 String n,
n是代表什么意思,其实它就是设置的名字再把它赋值给成员变量name嘛,n就代表设置的名字的形参,那何不把形参名字设置成name呢?我们试试!
在这里插入图片描述可以看到这个输出的name不是我们设定的值而是默认值,是为什么呢?
因为在方法内定义的变量是局部变量
方法外定义的变量是成员变量

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

所以这两个name都指的是局部变量,成员变量没被赋值,就是默认值,那么如何才能不让它隐藏(盖住)成员变量呢?
我们可以用this修饰代表成员变量的那个name

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

我们再试一次
在这里插入图片描述这次就行啦!


四、ArrayList(集合基础)

  1. 它不属于基础包lang下的类,所以要手动导入(IDEA可以自动导入)
  2. 它提供了一种储存空间可变的储存模型,储存的数据容量可以发生变化
  3. ArrayList:
    可调整的数组实现
    :是一种特殊的数据类型,泛型。
    用法:在出现E的地方我们使用引用数据类型替换即可
    举例:ArrayList,ArrayList
    在这里插入图片描述
    代码示例:(创建与添加)在这里插入图片描述
    删除指定元素,返回删除是否成功
    在这里插入图片描述
    没有这个元素就会返回false,不会报错
    删除指定索引处的元素,返回被删除的元素
    索引处不存在元素就会报错
    在这里插入图片描述
    后面相关功能不在演示

五、储存字符串并遍历

需求:创建一个字符串的集合,储存3个字符串元素,使用程序实现在控制台遍历该集合
思路:1:创建集合对象
2:往集合中添加字符串对象
3:遍历集合,首先要能够获取到集合中的每一个元素,这个通过get(int index)方法实现
4:遍历集合,其次要能够获取到集合的长度,这个通过size()方法实现
5:遍历集合的通用格式

for(int i=0;i<集合对象.size();i++){
	集合对象.get(i)就是指定索引处的元素

在这里插入图片描述
进一步需求:
创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合(学生类用的是前面的,有无参构造和有参构造以及相应的set和get方法)
在这里插入图片描述
再进一步需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合学生的姓名和年龄来自于键盘录入
思路:1:定义学生类,为了键盘录入数据方便,把学生类中的成员变量都定义为String类型
2:创建集合对象
3:键盘录入学生对象所需要的数据
4:创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
5:往集合中添加学生对象
6:遍历集合,采用通用遍历格式实现

package itheima_01;

import java.util.ArrayList;
import java.util.Scanner;
/*
    ArrayList构造方法:
    public ArratList();创建一个空的集合对象
    ArrayList添加方法:
    public boolean add(E e);将指定元素追加到此集合的末尾
    piblic void add(int index,E element);在此集合指定位置插入指定元素
 */

public class ArrayListText {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList<Student> array = new ArrayList<>();
        // 键盘录入学生对象需要的数据
        Scanner sc = new Scanner(System.in);//标准式输入
        System.out.println("请输入学生姓名:");
        String name = sc.nextLine();
        System.out.println("请输入学生年龄:");
        String age = sc.nextLine();
        //创建学生对象
        Student s = new Student();
        s.setName(name);//把键盘录入信息传给Student类里的name,这里并不冲突
        s.setAge(age);
        // 添加学生对象到集合中
        array.add(s);

    }
}

但问题是这只是一个学生的,录入三个就需要重复三次,
为了提高代码的复用性,我们用方法来改进程序
两个明确:
返回值类型:void
参数:ArreyListarray

package itheima_01;

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

public class ArrayListText {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList<Student> array = new ArrayList<>();
        //添加学生信息到集合中,直接调用方法
        addStudent(array);
        addStudent(array);
        addStudent(array);
        //遍历集合
        for(int i=0;i< array.size();i++) {
            Student s = array.get(i);//再依次把数组储存的数赋给Student
            System.out.println(s.getName()+","+s.getAge());//那么get方法里的值都是当前赋给的值了
        }

    }
    //构造一个方法实现重复储存信息到集合里
    public static void addStudent(ArrayList<Student>array) {
    	//把重复的操作封装成方法进行调用就能提高效率
        //键盘录入学生对象需要的数据
        Scanner in = new Scanner(System.in);//标准式输入
        System.out.println("请输入学生姓名:");
        String name = in.nextLine();
        System.out.println("请输入学生年龄:");
        String age = in.nextLine();
        //创建学生对象
        Student s = new Student();
        s.setName(name);//把键盘录入信息传给Student类里的name,这里并不冲突
        s.setAge(age);//这就是上面说的调用成员变量进行赋值
        // 添加学生对象到集合中
        array.add(s);
        }

    }

总结

1.除了ArrayList用法繁杂了一点其他还好
主要掌握学会使用方法进行封装,可以大大提高代码的复用性和效率。
2.重点理解构造对象和构造方法的使用。
3.掌握了这一些知识之后,写一个简单的学生管理系还是可以的如果上面太乱,就看一下文档吧,这个整洁一点
https://kdocs.cn/l/spjyFtBvDYG5?f=111
[文档] day09-ArrayList集合&学生管理系统.pdf

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-17 15:15:56  更:2021-08-17 15:16:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 8:53:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码