1.类class
1.类的定义:
类:类就是描述现实事物的,现实事物具备属性和功能(行为) 我们可以使用类的成员变量来描述
类:描述的的一类事物的共性内容
对象:根据类的描述 创建出来的 具体的实例
事物的属性 类的成员方法 来描述事物的功能 我们今天只描述属性 不描述功能
成员变量:定义在类中方法外的变量
局部变量:定义在方法中 或者 for循环等等中的变量叫做局部变量
2.类的定义格式
public class 类名{
数据类型 属性名;
数据类型 属性名;
}
3.类的使用
1.导包
不同包下 需要导包 同一个包下不需要导包
2.定义变量并赋值(创建对象)
数据类型 变量名 = new 数据类型();
3.访问属性
变量名.属性名
*注意:每个对象都有各自的属性值 所以实际上类中定义的成员变量的值是属于对象的
Test:
public class Test {
public static void main(String[] args) {
Person p = new Person();
p.name = "柳岩";
p.age = 38;
p.sex = '女';
p.height = 1.70;
p.isLoveJava = true;
System.out.println(p.name);
System.out.println(p.age);
System.out.println(p.sex);
System.out.println(p.height);
System.out.println(p.isLoveJava);
System.out.println("------------");
Person p2 = new Person();
p2.name = "唐嫣";
p2.age = 18;
p2.age = 28;
System.out.println(p2.name);
System.out.println(p2.age);
System.out.println(p2.sex);
System.out.println(p2.height);
System.out.println(p2.isLoveJava);
}
}
Person:
public class Person {
String name;
int age;
char sex;
double height;
boolean isLoveJava;
}
Test02:
package com.doit.demo;
/*
定义一个Person类型数组 存储3个元素 求 年龄最大的那个人的姓名
1.定义一个Person类型的数组
2.添加三个对象
3.循环获取最大年龄
4.遍历判断 谁的年龄是最大年龄
*/
public class Test03 {
public static void main(String[] args) {
Person[] arr = new Person[3];
//创建Person对象
Person p = new Person();
p.name = "柳岩";
p.age = 38;
//为数组的0索引元素赋值
arr[0] = p;
Person p2 = new Person();
p2.name = "唐嫣";
p2.age = 18;
arr[1] =p2;
Person p3 = new Person();
p3.name = "金莲";
p3.age = 138;
arr[2] =p3;
//获取最大年龄
/*
定义一个变量用来记录最大年龄
遍历数组 依次获取每个对象
使用记录的年龄 与每个人的年龄做比较
只要有人的年龄比记录的年龄大
则为记录的年龄重新赋值
*/
int maxAge =p.age;
//遍历数组 依次获取每个对象
for(int i = 0 ;i<arr.length;i++){
//依次获取每个对象
Person thisPerson = arr[i];
if(thisPerson.age >maxAge){
maxAge = thisPerson.age;
}
}
System.out.println(maxAge);
//获取到最大年龄的对象
/*
遍历数组 依次获取到每个对象
对象的年龄 和最大年龄做比较
如果相等 说明当前对象就是年龄最大的人
获取到姓名即可
*/
for(int i = 0;i<arr.length;i++){
Person thisPerson = arr[i];
if(thisPerson.age == maxAge){
//获取当前对象的姓名
System.out.println(thisPerson.name);
}
}
}
}
2.二维数组:
1.ArrayList集合的特点
ArrayList集合长度可变
ArrayList集合只能存储引用数据类型数据 如果要存基本类型 需要写基本类型对应的包装类型
ArrayList集合底层是数组 所以也是有索引的 索引从0开始
2.ArrayList集合的使用
1.导包
java.util.ArrayList
2.定义变量并赋值(创建对象)
数据类型 变量名 = new 数据类型();
ArrayList<存储数据的数据类型> list = new ArrayList<>();
3.调用方法
变量名.方法名();
3.ArrayList操作:
public void add(int index,E element):在此集合中的指定位置插入指定的元素。
public boolean remove(Object o):删除指定的元素,返回删除是否成功
public E remove(int index) :移除此集合中指定位置上的元素。返回被删除的元素。
public void clear() :清空集合中所有元素
public E set(int index,E element):修改指定索引处的元素,返回被修改
Demo01:
public class Demo01_ArrayList {
public static void main(String[] args) {
//定义一个ArrayList集合 存储 整数
ArrayList<Integer> list = new ArrayList<>();
//定义一个存储小数的集合
ArrayList<Double> list2 = new ArrayList<>();
//定义一个存储字符的集合
ArrayList<Character> list3 = new ArrayList<>();
//定义一个存储布尔的集合
ArrayList<Boolean> list4 = new ArrayList<>();
//定义一个存储Person的集合
ArrayList<Person> list5 = new ArrayList<>();
}
}
Demo02:
package com.doit.demo02;
/*
二维数组
*/
public class Demo01_Array {
public static void main(String[] args) {
int[][] arr = {{1,2},{3,4},{5,6,7}};
//获取数组中2索引的小数组中 1索引的元素 6
int num = arr[2][1];
System.out.println(num);
//先获取数组中0索引的元素 就是第一个小数组
int[] arr2 = arr[0];
//在获取小数组中 1索引的元素 就是 2
int num2 = arr2[1];
System.out.println(num2);
//先获取大盒子中小盒子
for(int i=0;i<arr.length;i++){
int[] thisArr = arr[i];
//遍历小盒子获取数据
for(int j= 0;j<thisArr.length;j++){
System.out.println(thisArr[j]);
}
}
for(int i =0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.println(arr[i][j]);
}
}
}
}
Demo03:
public class Demo03_ArrayList {
public static void main(String[] args) {
// ArrayList集合存储整数 并遍历
ArrayList<Integer> list = new ArrayList<>();
list.add(10);
int num = 20;
list.add(num);
list.add(30);
list.add(40);
for(int i = 0;i<list.size();i++){
int thisNum = list.get(i);
System.out.println(thisNum);
}
System.out.println("----------------------------");
//ArrayList集合存储自定义类型 并遍历
ArrayList<Student> studentList = new ArrayList<>();
//创建学生对象 为学生对象的属性赋值
Student s = new Student();
s.id = "001";
s.name = "柳岩";
//将学生对象添加到集合中
studentList.add(s);
Student s2 = new Student();
s2.id = "002";
s2.name = "唐嫣";
studentList.add(s2);
for(int i = 0;i<studentList.size();i++){
//根据索引获取元素
Student student = studentList.get(i);
System.out.println("学号:"+student.id);
System.out.println("姓名:"+student.name);
}
}
}
3.Demo(随机点名器):
public class Demo_RandomName {
public static void main(String[] args) {
// 2.定义一个集合用来存储学生类型
ArrayList<Student> list = new ArrayList<>();
//调用添加学生的方法
addStudent(list);
//调用遍历集合的方法
show(list);
//调用获取随机姓名的方法
String name = getRandomName(list);
System.out.println("今天你答题:"+name);
}
//定义一个获取随机姓名的方法
public static String getRandomName(ArrayList<Student> list ){
Random r = new Random();
int index = r.nextInt(list.size());
Student student = list.get(index);
return student.name;
}
//定义一个遍历集合的方法
public static void show(ArrayList<Student> list){
for(int i =0; i<list.size();i++){
Student thisStudent = list.get(i);
System.out.println(thisStudent.id+" "+thisStudent.name);
}
}
//定义一个向集合中添加学生对象的方法
public static void addStudent( ArrayList<Student> list){
//循环向集合中添加学生 添加3个
Scanner sc = new Scanner(System.in);
for (int i = 1; i <= 3; i++) {
Student s = new Student();
System.out.println("请输入第"+i+"个学生的学号:");
s.id = sc.next();
System.out.println("请输入第"+i+"个学生的姓名:");
s.name = sc.next();
//将对象添加到集合中
list.add(s);
}
}
}
4.Demo(学生管理系统):
package com.doit.demo05;
import java.util.ArrayList;
import java.util.Scanner;
/**
* @author dq_dsj
**/
public class StudentManager {
/*
1:用输出语句完成主界面的编写
2:用Scanner实现键盘录入数据
3:用switch语句完成操作的选择
4:用循环完成再次回到主界面
5.然后完成每个方法的编写
*/
public static void main(String[] args) {
//创建集合对象,用于保存学生数据信息
ArrayList<Student> array = new ArrayList<Student>();
//用循环完成再次回到主界面
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("请输入你的选择:");
//用Scanner实现键盘录入数据
Scanner sc = new Scanner(System.in);
String line = sc.next();
//用switch语句完成操作的选择
switch (line) {
case "1":
addStudent(array);
break;
case "2":
deleteStudent(array);
break;
case "3":
updateStudent(array);
break;
case "4":
findAllStudent(array);
break;
case "5":
System.out.println("886您那!!!");
System.exit(0); //JVM退出
}
}
}
//定义一个方法,用于添加学生信息
public static void addStudent(ArrayList<Student> array) {
//键盘录入学生对象所需要的数据,显示提示信息,提示要输入何种信息
Scanner sc = new Scanner(System.in);
String sid;
while (true) {
System.out.println("请输入学生学号:");
sid = sc.next();
boolean flag = isUsed(array, sid);
if (flag) {
System.out.println("你输入的学号已经被占用,请重新输入");
} else {
break;
}
}
System.out.println("请输入学生姓名:");
String name = sc.next();
System.out.println("请输入学生年龄:");
String age = sc.next();
System.out.println("请输入学生居住地:");
String address = sc.next();
//创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
Student s = new Student();
s.sid=sid;
s.name = name;
s.age = age;
s.address = address;
//将学生对象添加到集合中
array.add(s);
//给出添加成功提示
System.out.println("添加学生成功");
}
//定义一个方法,判断学号是否被使用
public static boolean isUsed(ArrayList<Student> array, String sid) {
//如果与集合中的某一个学生学号相同,返回true;如果都不相同,返回false
boolean flag = false;
for(int i=0; i<array.size(); i++) {
Student s = array.get(i);
if(s.sid.equals(sid)) {
flag = true;
break;
}
}
return flag;
}
//定义一个方法,用于查看学生信息
public static void findAllStudent(ArrayList<Student> array) {
//判断集合中是否有数据,如果没有显示提示信息
if (array.size() == 0) {
System.out.println("无信息,请先添加信息再查询");
//为了让程序不再往下执行,我们在这里写上return;
return;
}
//显示表头信息
//\t其实是一个tab键的位置
System.out.println("学号\t\t\t姓名\t\t年龄\t\t居住地");
//将集合中数据取出按照对应格式显示学生信息,年龄显示补充“岁”
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
System.out.println(s.sid + "\t\t\t" + s.name + "\t\t" + s.age + "岁\t\t" + s.address);
}
}
//定义一个方法,用于删除学生信息
public static void deleteStudent(ArrayList<Student> array) {
//键盘录入要删除的学生学号,显示提示信息
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要删除的学生的学号:");
String sid = sc.next();
//在删除/修改学生操作前,对学号是否存在进行判断
//如果不存在,显示提示信息
//如果存在,执行删除/修改操作
int index = -1;
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
//equals方法 比较两个字符串是否相同 相同返回true 不同返回false
if (sid.equals(s.sid)) {
index = i;
break;
}
}
if (index == -1) {
System.out.println("该信息不存在,请重新输入");
} else {
array.remove(index);
//给出删除成功提示
System.out.println("删除学生成功");
}
}
//定义一个方法,用于修改学生信息
public static void updateStudent(ArrayList<Student> array) {
//键盘录入要修改的学生学号,显示提示信息
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要修改的学生的学号:");
String sid = sc.nextLine();
//键盘录入要修改的学生信息
System.out.println("请输入学生新姓名:");
String name = sc.next();
System.out.println("请输入学生新年龄:");
String age = sc.next();
System.out.println("请输入学生新居住地:");
String address = sc.next();
//创建学生对象
Student s = new Student();
s.sid = sid;
s.name = name;
s.age = age;
s.address = address;
//遍历集合修改对应的学生信息
for (int i = 0; i < array.size(); i++) {
Student student = array.get(i);
if (student.sid.equals(sid)) {
array.set(i, s);
}
}
//给出修改成功提示
System.out.println("修改学生成功");
}
}