简单技术分享 
1. 独立自主编写学生管理系统并附有运行调试过程 
1.1 Student类的编写 
package com.itheima; 
 
public class Student { 
         
//成员变量 
private String id;                                //学号 
        private String name;                        //姓名 
        private String age;                                //年龄 
        private String address;                //地址 
         
        //有参无参构造方法 
        public Student() { 
 
        } 
        public Student(String id, String name, String age, String address) { 
                this.id = id; 
                this.name = name; 
                this.age = age; 
                this.address = address; 
        } 
         
        //调用setter,getter方法传入参数及提供对外获取数据接口 
        public String getId() { 
                return id; 
        } 
        public void setId(String id) { 
                this.id = id; 
        } 
         
        public String getName() { 
                return name; 
        } 
        public void setName(String name) { 
                this.name = name; 
        } 
         
        public String getAge() { 
                return age; 
        } 
        public void setAge(String age) { 
                this.age = age; 
        } 
         
        public String getAddress() { 
                return address; 
        } 
        public void setAddress(String address) { 
                this.address = address; 
        } 
} 
 
1.2 主程序的编写 
package com.itheima; 
 
import java.util.ArrayList;                                        // ArrayList调用对象导包 
import java.util.Scanner;                                        // Scanner调用对象导包 
 
public class Manager { 
 
        1.2.1 主方法的编写 
//主方法 
        public static void main(String[] args) { 
                ArrayList<Student> str = new ArrayList<Student>(); 
                Scanner sc = new  Scanner(System.in); 
                while (true) { 
                        System.out.println("-----------欢迎进入学生管理系统-----------"); 
                        System.out.println("1 查看学生信息"); 
                        System.out.println("2 添加学生信息"); 
                        System.out.println("3 删除学生信息"); 
                        System.out.println("4 修改学生信息"); 
                        System.out.println("5 退出"); 
                         
                        System.out.println("请输入你的选择"); 
                        String selectNumber = sc.nextLine(); 
                         
                        switch (selectNumber) { 
                        case "1": 
                                findStudent(str); 
                                break; 
                        case "2": 
                                addStudent(str); 
                                break; 
                        case "3": 
                                deleteStudent(str); 
                                break; 
                        case "4": 
                                setStudent(str); 
                                break; 
                        case "5":         
                        default: 
                                System.out.println("退出系统成功"); 
                                System.exit(0); 
                        } 
                } 
        } 
 
主方法运行调试: 
  
图1 主方法运行结果 
注意事项: switch语句中,当输入其他数字的时候需要作出提示! 
 
1.2.2 查询信息方法的编写 
        //查询信息 
        public static void findStudent(ArrayList<Student> str) { 
                if (str.size() == 0) { 
                        System.out.println("对不起,学生管理系统暂无信息,请选择其他操作"); 
                }else { 
                        System.out.println("学号\t\t姓名\t年龄\t地址"); 
                        for (int i = 0; i < str.size(); i++) { 
                                Student s = str.get(i); 
                                System.out.println(s.getId() +"\t"+ s.getName() +"\t"+ s.getAge() +"\t"+ s.getAddress()); 
                        } 
                } 
        } 
 
查询信息运行调试: 
  
图2 查询信息方法运行结果 
注意事项:因为当前学生管理系统无任何信息,所以当输入1的时候需要作出提示: 
:“对不起,学生管理系统暂无信息,请选择其他操作”! 
 
1.2.3 添加信息方法的编写 
        //添加信息 
        public static void addStudent(ArrayList<Student> str) {         
                while (true) { 
                        Scanner sc = new  Scanner(System.in); 
                        System.out.println("请输入学生的学号:"); 
                        String id = sc.nextLine(); 
                         
                        boolean flag = false; 
                        for (int i = 0; i < str.size(); i++) { 
                                if (str.get(i).getId() == id) { 
                                        flag = true; 
                                        break; 
                                } 
                        } 
                        if (flag) { 
                                System.out.println("对不起,你输入的学号已存在,请重新输入:"); 
                        }else { 
                                System.out.println("请输入学生的姓名:"); 
                                String name = sc.nextLine(); 
                                System.out.println("请输入学生的年龄:"); 
                                String age = sc.nextLine(); 
                                System.out.println("请输入学生的地址:"); 
                                String address = sc.nextLine(); 
                                 
                                Student s = new Student(id, name, age, address); 
                                str.add(s); 
                                System.out.println("学生信息添加成功"); 
                                return; 
                        }         
                } 
        } 
 
查询信息运行调试: 
  
图3 添加信息方法运行结果 
注意事项:1. 当学生信息添加完成,需要输出提示: 学生信息添加成功! 
2. 当再次输入1 选择查看学生信息时需要输出所以已存在的学生信息. 
 
 
1.2.4 删除信息方法的编写 
        //删除信息 
        public static void deleteStudent(ArrayList<Student> str) { 
                Scanner sc = new  Scanner(System.in); 
                System.out.println("请输入要删除的学生学号:"); 
                String id = sc.nextLine(); 
                 
                if (str.size() == 0) { 
                        System.out.println("对不起,当前学生管理系统无任何信息"); 
                        return; 
                }else { 
                        int index = -1; 
                        for (int i = 0; i < str.size(); i++) { 
                                if (str.get(i).getId().equals(id) ) { 
                                        index = i; 
                                }         
                        } 
                        if (index == -1) { 
                                System.out.println("对不起,你要删除的学生学号不存在,请重新选择:"); 
                        }else { 
                                str.remove(index); 
                                System.out.println("删除学生信息成功"); 
                                return; 
                        } 
                } 
        } 
        删除信息运行调试1: 
  
图4 删除信息方法运行结果1 
注意事项:1. 当学生信息系统中无任何信息,选择3去删除学生信息时需要输出提示: 对不起,当前学生管理系统无任何信息! 并直接退出当前循环 
 
删除信息运行调试2: 
  
图5 删除信息方法运行结果2 
注意事项:1. 当学生信息系统中无对应的学号时,选择3去删除学生信息时需要输出提示: 对不起,你要删除的学生学号不存在,请重新选择!并继续当前循环 
2. 当学生信息系统中有对应学号时提示: 删除学生信息成功!并退出当前循环 
 
1.2.5 修改信息方法的编写 
//修改信息 
        public static void setStudent(ArrayList<Student> str) { 
                Scanner sc = new  Scanner(System.in); 
                System.out.println("请输入要修改的学生学号:"); 
                String id = sc.nextLine(); 
                 
                if (str.size() == 0) { 
                        System.out.println("对不起,当前学生管理系统无任何信息"); 
                        return; 
                }else { 
                        int index = -1; 
                        for (int i = 0; i < str.size(); i++) { 
                                if (str.get(i).getId().equals(id) ) { 
                                        index = i; 
                                }         
                        } 
                        if (index == -1) { 
                                System.out.println("对不起,你要修改的学生学号不存在,请重新选择:"); 
                        }else { 
                                System.out.println("请输入学生的姓名:"); 
                                String name = sc.nextLine(); 
                                System.out.println("请输入学生的年龄:"); 
                                String age = sc.nextLine(); 
                                System.out.println("请输入学生的地址:"); 
                                String address = sc.nextLine(); 
                                 
                                Student s = new Student(id, name, age, address); 
                                str.set(index, s); 
                                 
                                System.out.println("修改学生信息成功"); 
                        } 
                } 
        } 
} 
修改信息运行调试: 
  
图6 修改信息方法运行结果 
注意事项: 1. 当学生信息系统中无对应的学号时,选择4去修改学生信息时需要输出提示: 对不起,你要修改的学生学号不存在,请重新选择!并继续当前循环 
2. 当学生信息系统中有对应的学号时,选择4去删除学生信息时需要输出提示: 修改学生信息成功!并继续当前循环 
 
2. 附上一些相关基础知识的总结 
2.1 java基础知识 
        1.java概述 
                SUN公司创始人詹姆斯.高斯林(James Gosling) 
                2009年甲骨文(Oracle)收购SUN 
        2.Java实现跨平台需要依赖Java的虚拟机 JVM 
                JVM是java虚拟机,不同平台(操作系统:Windows,Linux,Mac)有自己的虚拟机 
                JRE:JVM+类库 
                JDK:JRE+JAVA的开发工具:编译工具(javac.exe)  打包工具(jar.exe)等 
        3.常用dos命令 
                d: 回车        盘符切换 
                dir:列出当前目录下的文件以及文件夹 
                cd:进入指定目录 
                cd..:单步回退 
                cd\:回退到根目录 
                cls:清屏 
                exit:退出dos命令行 
                 
                编译源代码:javac 源文件名.java 
                运行class:java HelloWorld 
        4.配置环境变量 
                定义:保证javac和java命令在任意目录下能够访问 
                JAVA_HOME添加变量值:JDK安装目录 
                在path环境变量前面添加:%JAVA_HOME%\bin; 
        5.注释 
                定义:解释说明程序的文字 
                单行注释://注释文字 
                多行注释:/*  注释文字  */ 
                文档注释:/** 注释文字 */ 
                作用:解释说明程序,帮助我们调试错误 
        6.关键字 
                定义:被Java语言赋予特定含义的单词 
                特点:字母全部小写,代码编辑器对关键字有特殊的颜色标记 
                定义数据类型的关键字:class,interface,byte,short,char,int,long,float,double,boolean,void 等 
                定义数据类型值得关键字:true,false,null 等 
        7.常量 
                定义:程序执行过程中其值不可以发生改变的量 
                分类: 
                        字符串常量:用双引号括起来的内容(“HelloWorld”) 
                        整数常量:所有整数(12,-23) 
                        小数常量:所有小数(12.34) 
                        字符常量:单引号括起来的内容(‘a’,’A’,’0’) 
                        布尔常量:只有true和false 
                        空常量:null 
        8.变量 
                定义:程序执行的过程中在某个范围内其值可以发生改变的量,内存中的一小块区域 
                格式:数据类型 变量名 = 初始化值 
                注意:整数默认int类型,定义long类型时要在后面加L 
                         浮点数默认double类型,定义float类型时要在后面加F 
                         变量未赋值,不能直接使用 
                         变量只在所属范围有效,变量在哪对大括号内就属于哪对大括号 
        9.计算机存储单元 
                最小信息单元叫:位(bit) 
                最小的存储单元叫:字节 B 
        10.数据类型 
                基本数据类型 四类八种: 
                        整数类型:byte,short,int,long 
                        浮点类型:float,double 
                        字符型:char 
                        布尔型:boolean 
                引用数据类型: 
                        类:class 
                        接口:interface 
                        数组:[] 
                数据类型转换: 
                        隐式数据类型转换:先将取值范围小的数据类型提升为大的,再运算 
                强制类型数据转换: 
                        格式:b = (byte)(a + b) 
                        注意事项:若超出被赋值数据类型取值范围得到的结果会有不同 
        11.标识符 
                作用:给包,类,方法,变量等起名字 
                组成规则:由字符(字母数字),下划线_,美元符$组成(中文字符) 
                注意事项:不能以数字开头,不能是java中的关键字 
                命名规则:见名知意 
                        包:域名倒过来,要求所有的字母小写 
                        类或者接口:每个单词首字母大写 
                        方法或者变量:第二个字母开始首字母大写 
                        常量:所有字母大写,多个单词中间用下划线_区分 
2.2 Eclipse软件的使用 
        1.Eclipse基本操作 
                创建Java项目: 
                创建包: 
                创建类: 
                编写代码: 
                编译: 
                运行 
        2.Eclipse常用辅助键和快捷键 
                内容辅助键        alt+/ 
                单行注释:选中内容,ctrl+/ 
                多行注释:选中内容,ctrl+shift+/, ctrl+shift+\ 
                格式化:ctrl+shift+f 
        3.运算符 
                定义:对常量和变量进行操作的符号称为运算符 
                常用运算符: 
                        算数运算符: 
                                + - * / % ++ -- 
                                注意事项:如果++或者--在变量的后面,先拿变量参与操作,后变量做++或者-- 
                        赋值运算符: 
                                基本基本的赋值运算符:= 
                                扩展的赋值运算符:+= -= *= /= %= 
                        关系运算符: 
                                == != > >= < <= 
                                关系运算符结果都是boolean型:true false 
                        逻辑运算符: 
                                && || ^ ! (& |) 
                                注意事项:一般用于连接boolean类型的表达式或者值 
                                                 &&具有短路效果:左边是false,右边不执行 
                                                 ||具有短路效果:左边是true,右边不执行 
                        三元运算符: 
                                格式:(关系表达式) ? 表达式1:表达式2 
                         
        4.表达式 
                定义:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式 
                不同类型的表达式:不同运算符连接的式子体现的是不同类型的表达式 
        5.基本运算总结 
                字符参与运算:其实是拿该字符对应的数值来操作 'a' 97; 'A' 65; '0' 48 
                字符串参与运算:其实是字符串拼接 
        6.键盘录入 
                导包(位置放到class定义的上面):import java.util.Scanner 
                创建对象:Scanner sc = new Scanner(System.in) 
                接收数据:int x = sc.nextInt() 
 
2.3 基本循环语句 
        1.流程控制 
                顺序结构:是程序中最简单最基本的流程控制:从左到右,从上到下 
                选择结构:if,switch 
                循环结构:for,while,do{} while() 
        2.if语句 
                格式1:        if(关系表达式) { 
                                        语句体 
                                        } 
                格式2:        if(关系表达式) { 
                                        语句体1; 
                                }else { 
                                        语句体2; 
                                } 
                格式3:        if(关系表达式1) { 
                                        语句体1; 
                                }else  if (关系表达式2) { 
                                        语句体2; 
                                } 
                                … 
                                else { 
                                        语句体n+1; 
                                } 
        3.switch语句 
                格式:switch(表达式) { 
                                case 值1: 
                                语句体1; 
                                break; 
                                case 值2: 
                                语句体2; 
                                break; 
                                … 
                                default:         
                                语句体n+1; 
                                break; 
                         } 
                表达式的取值: 
                        byte,short,int,char 
                        JDK5以后可以是枚举 
                        JDK7以后可以是String 
        4.for循环语句 
                格式:for(A初始化语句;B判断条件语句;C控制条件语句) { 
                                D循环体语句; 
                         } 
                执行顺序:A-->B-->D-->C   B-->D-->C循环 
        5.while循环语句 
                基本格式: 
                                while(判断条件语句) { 
                                循环体语句; 
                                } 
                扩展格式: 
                            初始化语句; 
                            while(判断条件语句) { 
                                        循环体语句; 
                                        控制条件语句; 
                                } 
 
        6.do…while循环语句 
                基本格式: 
                            do { 
                                        循环体语句; 
                            }while((判断条件语句); 
 
                扩展格式: 
                            初始化语句; 
                            do { 
                                         循环体语句; 
                                         控制条件语句; 
                                } while((判断条件语句); 
        7.三种循环区别 
                do…while循环至少会执行一次循环体 
                for循环和while循环只有在条件成立的时候才会去执行循环体 
                for循环语句和while循环语句的小区别: 
                        使用区别:控制条件语句所控制的那个变量,在for循环结束后 
                        就不能再被访问到了,而while循环结束还可以继续使用 
                        原因:for循环结束,该变量就从内存中消失,能够提高内存的使用效率 
        8.控制循环语句 
                控制跳转语句break: 
                        使用场景:在选择结构switch语句中,在循环语句中 
                        作用:跳出单层循环 
                控制跳转语句continue: 
                        使用场景:在循环语句中 
                        作用:退出本次循环,继续下次循环 
 
 
2.4 数组相关知识 
        1.产生整数随机数 
                导包:import java.util.Random 
                创建对象:Random r = new Random() 
                获取随机数:int number = r.nextInt(10) 
                        范围:[0,9] 
        2.数组 
                定义:数组是存储同一种数据类型多个元素的容器 
                格式:数据类型[] 数组名 (推荐使用) 
                         数据类型 数组名[] 
                数组初始化: 
                        定义:是为数组中的数组元素分配内存空间,并为每个数组元素赋值 
                        数组必须先初始化,然后才能使用 
                数组初始化方式: 
                        动态初始化: 
                                格式:数据类型[] 数组名 = new 数据类型[数组长度] 
                        静态初始化: 
                                初始化时指定每个数组元素的初始值,由系统决定数组长度 
                                格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...} 
                                简化格式:数据类型[] 数组名 = {元素1,元素2,...} 
        3.JVM内存划分 
                栈:存储局部变量 
                堆:存储new出来的东西 
                方法区:存储.class解码文件,main方法和调用的方法 
                本地方法区:和系统相关 
                寄存器:给CPU使用 
        4.new出来对象的数据默认值 
                byte,short,int,long:0 
                float,double:0.0 
                char:'\u0000' 
                boolean:false 
                引用类型:null 
        5.数组使用的两个小问题 
                数组越界异常:ArrayIndexOutOfBoundsException: 
                        产生的原因:访问了不存在的索引元素 
                空指针异常:NullPointerException: 
                产生的原因:数组已经不指向堆内存的数据了,你还使用数组名去访问元素 
        6.二维数组 
                定义:二维数组其实就是一个元素为一维数组的数组 
                定义格式: 
                        数据类型[][] 数组名(推荐) 
                        数据类型 数组名[][] 
                        数据类型[] 数组名[]  
                初始化方式: 
                        数据类型[][] 变量名 = new 数据类型[m][n]; 
                        数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}}; 
                简化格式:数据类型[][] 变量名 = {{元素…},{元素…},{元素…}} 
 
2.5 方法的使用 
        1.方法(函数) 
                定义:方法就是完成特定功能的代码块 
                格式:        修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) { 
                                        函数体; 
                                        return 返回值; 
                                } 
                        返回值类型:用于限定返回值的数据类型 
                        方法名:一个名字,方便我们调用方法 
                        参数类型:用于接收调用方法时传入的数据的类型 
                        参数名:用于接收调用方法时传入的数据的变量 
                        return:结束方法,把返回值带给调用者 
                注意事项: 
                        两点需要明确: 
                                返回值类型:明确功能结果的数据类型 
                                参数列表:明确有几个参数,以及参数的类型 
        2.方法调用 
                有明确返回值的方法调用: 
                        单独调用,没有意义 
                        输出调用,有意义,但是不够好,因为我不一定非要把结果输出 
                        赋值调用,推荐方式 
                void:只能单独调用 
        3.方法重载 
                特点:与返回值类型无关,只看方法名和参数列表 
                         在调用时通过参数列表的不同来区分同名方法 
        4.方法中参数传递 
                形式参数:用于接收实际数据的变量 
                实际参数:实际参与运算的变量 
                方法参数为基本类型时: 
                        形式参数的改变不影响实际参数 
                方法参数为引用类型时: 
                        形式参数的改变直接影响实际参数 
总结 
虽然只短短的学习了十来天,但自己在作业方面还是坚持独立完成,如果上面的分享有错误,欢迎大家的指正,谢谢可爱的读者们!!! 
 |   
        
 
    
    
    
     
 
 |