第二章 Java的面向对象进阶(上)
一、API帮助文档介绍及使用
API:应用程序编程接口。即已经写好的类,可直接调用解决问题。
JDK11 API帮助文档下载地址:
https://blog.csdn.net/ZL_2014/article/details/115601611
首先在索引位置搜索需要查找的类(图1,以System和Random类为例),再查看System类是属于java.lang核心包中,表示不需要编写导包代码;查看Random类是属于java.util包中,表示使用Random类需要编写import java.util.Random导包代码。再查看类的介绍以及构造方法是否带参,最后再查看类的成员方法即如何使用。
二、字符串相关类介绍
⚪String类:表示字符串。 Java程序中的所有字符串文字(例如"abc" )都实现为此类的实例。
▲注意:
①Java程序中所有双引号字符串都是String类字符串,可以直接创建。即String s=“abc”;
②字符串是不变的; 它们的值在创建后无法更改。更改则需要使用新对象替换。
③String对象不可变,但可以共享。
例:
package com.xuexi.leice;
public class StringDemo {public static void main(String[] args) {String s1="abc";//String类没有set方法,"abc"为String类一对象System.out.println(s1);s1="def";//"def"为String类新对象,用新对象替换s1System.out.println(s1);String s2="def";System.out.println(s1==s2);//输出true}
}
字符串常量池(StringTable):双引号创建String对象时,将当前不存在的字符串常量创建至池中,将已存在的字符串常量与其复用。
String类常见构造方法 | 说明 |
---|---|
public String() | 创建一个空白字符串,不包含任何内容 |
public String(char[] chs) | 根据传入的字符数组创建字符串对象 |
public String(String original) | 根据传入的字符串创建字符串对象 |
例:
package com.xuexi.leice;
public class StringDemo2 {public static void main(String[] args) {String s1="abc";System.out.println(s1);//abcchar ch[]={'a','b','c'};String s2=new String(ch);System.out.println(s2);//abcString s3=new String("abc");System.out.println(s3);//abc}
}
典例1:下例输出false。主方法进入栈区后,声明s1变量字符串类型,由于当前字符串常量池中没有"abc"对象,则创建"abc"对象,s1记录"abc"地址,同理创建"ab"对象且声明s2变量记录"ab"地址。下面声明s3对象且创建"c"对象,s3为s2和"c"的拼接,在堆内存中创建StringBuilder的对象,在其中负责将s2和"c"完成拼接,且不能直接赋给s3(拼接后为StringBuilder型,s3为String型),自动调用StringBuilder型中toString()方法转换为String型对象空间中。
public class StringDemo {public static void main(String[] args) {String s1="abc";String s2="ab";String s3=s2+"c";//变量和常量的拼接System.out.println(s1==s3);//false}
}
典例2:下例输出true。主方法进入栈区后,声明s1变量字符串类型,创建"abc"对象;声明s2变量字符串类型,右端为三个常量的拼接,根据Java的常量优化机制(若等号右侧均为常量,则在编译时生成的.class字节码文件中自动运算出右侧结果并赋值给左侧), String s2=“a”+“b”+“c”;语句等价于 String s2=“abc”;再由字符串常量池确定地址相同。
public class StringDemo {public static void main(String[] args) {String s1="abc";String s2="a"+"b"+"c";//常量间的拼接System.out.println(s1==s2);//true}
}
典例3:下例输出false。主方法进入栈区后,声明s1变量字符串类型,由于当前字符串常量池中没有"abc"对象,则创建"abc"对象,s1记录"abc"地址。声明s2变量字符串类型,通过带参构造函数new对象,堆内存开辟新内存空间,参数"abc"为一对象,检查字符串常量池是否存在,当前对象"abc"在字符串常量池中已存在,无需再创建新对象,直接拷贝副本至新创建空间中。
public class StringDemo {public static void main(String[] args) {String s1="abc";String s2=new String("abc");System.out.println(s1==s2);//false}
}
▲字符串内容比较
package com.xuexi.leice.method;
public class StringMethodDemo1 {public static void main(String[] args) {String s1="abc";String s2=new String("abc");//s1==s2 false/*(public boolean) equals(Object anObject) 将此字符串与指定的对象进行比较*/System.out.println(s1.equals(s2));//true/*(public boolean) equalsIgnoreCase(String anotherString) 将此 String与另一个 String比较,忽略了大小写*/String s3="ABC";System.out.println(s1.equals(s3));//falseSystem.out.println(s1.equalsIgnoreCase(s3));//true}
}
例:模拟用户登录,已知正确的用户名和密码,共有三次机会,登陆成功后给出相应提示。
package com.xuexi.leice.method;
import java.util.Scanner;
public class StringMethodDemo2 {public static void main(String[] args) {String username="abc";//正确用户名abcString password="123";//正确密码123int cnt=0;//记录登录次数Scanner input=new Scanner(System.in);while (cnt<3){System.out.println("Please input the username:");String usn=input.nextLine();System.out.println("Please input the password:");String psd=input.nextLine();cnt++;if(usn.equals(username)&&psd.equals(password)){System.out.println("登录成功");break;}if(cnt==3)System.out.println("失败");}}
}
▲字符串转换字符数组
package com.xuexi.leice.method;
public class StringMethodDemo3 {public static void main(String[] args) {String s="abc def";/*(public char[]) toCharArray() 将此字符串转换为新的字符数组*/char[] chars = s.toCharArray();//s.toCharArray().var+回车快捷生成数组for (int i = 0; i < chars.length; i++) {//chars.fori快捷遍历System.out.print(chars[i]+" ");//a b c d e f}System.out.println();System.out.println("---");//分隔符/*(public char) charAt(int index) 返回指定索引处的 char值*/char c = s.charAt(2);//字符串第二个(0开始)字符cSystem.out.println(c);//字符串每个字符的遍历for (int i = 0; i < s.length(); i++) {System.out.print(s.charAt(i)+" ");//a b c d e f}}
}
例:键盘录入字符串,统计该字符串中大小写字符和数字字符出现的次数(其他字符忽略)。
package com.xuexi.leice.method;
import java.util.Scanner;
public class StringMethodDemo4 {public static void main(String[] args) {Scanner input=new Scanner(System.in);String s=input.nextLine();char[] chars = s.toCharArray();int cnt1=0,cnt2=0,cnt3=0;for (int i = 0; i < chars.length; i++) {if(chars[i]>='A'&&chars[i]<='Z'){cnt1++;}else if(chars[i]>='a'&&chars[i]<='z'){cnt2++;}else if(chars[i]>='0'&&chars[i]<='9'){cnt3++;}}System.out.println("大写字母:"+cnt1+"个"+" 小写字母:"+cnt2+"个"+" 数字字符:"+cnt3+"个");}
}
//aAb3&c2B*4CD1
//大写字母:4个 小写字母:3个 数字字符:4个
▲字符串的截取
package com.xuexi.leice.method;
public class StringMethodDemo5 {public static void main(String[] args) {/*(public String) substring(int beginIndex) 返回一个字符串,该字符串是此字符串的子字符串根据传入的索引开始截取,截取到字符串末尾。范围(0开始):[beginIndex,length)(public String) substring(int beginIndex, int endIndex) 返回一个字符串,该字符串是此字符串的子字符串根据传入的开始和结束索引,截取字符串。范围(0开始):[beginIndex,endIndex)*/String s="abc def ghi";String sst1 = s.substring(2);System.out.println(sst1);//c def ghiString sst2 = s.substring(3, 9);System.out.println(sst2);// def g}
}
例:手机号屏蔽,以字符串形式从键盘接收一手机号,将中间四位号码屏蔽。
package com.xuexi.leice.method;
import java.util.Scanner;
public class StringMethodDemo6 {public static void main(String[] args) {Scanner input=new Scanner(System.in);String tel=input.nextLine();//15678561456String head_tel=tel.substring(0,3);String tail_tel=tel.substring(7);System.out.println(head_tel+"****"+tail_tel);//156****1456}
}
▲字符串替换
package com.xuexi.leice.method;
public class StringMethodDemo7 {public static void main(String[] args) {/*public String replace(CharSequence target, CharSequence replacement) 接口replacement替换接口target*/String s="abc def ghi jkl";String rs = s.replace("bc ", "bc");System.out.println(rs);//abcdef ghi jklString rs2 = s.replace("zxy", "xyz");System.out.println(rs2);//abc def ghi jkl}
}
▲字符串切割
package com.xuexi.leice.method;public class StringMethod8 {public static void main(String[] args) {/*(public String[]) split(String regex) 根据传入的字符串作为规则切割当前字符串(public String[]) split(String regex, int limit) 将此字符串拆分为给定 regular expression的匹配项*/String s="192,168,1,1";String[] sp = s.split(",");for (int i = 0; i < sp.length; i++) {System.out.print(sp[i]+" ");//192 168 1 1}//注意:上例","更换为"."会出现问题,正则表达式中"."表示通配符String s1="192.168.1.1";String[] sp2 = s1.split("\\.");//使用转义字符"\\"for (int i = 0; i < sp2.length; i++) {System.out.print(sp2[i]+" ");//192 168 1 1}}
}
⚪StringBuilder类:提高字符串操作效率。可变字符序列,是字符缓冲区即可以存储任意数据类型,其类型组合成字符串。
引入:利用循环进行万级以上的字符串拼接,查看不同方法的效率
package com.xuexi.leice.StringBuilderMethod;
public class StringBuilderDemo1 {public static void main(String[] args) {method1();method2();}//System.currentTimeMillis()获取当前时间距离1970年1月1日0时0分0秒经历的毫秒值(1s=1000ms)private static void method1(){long start_time = System.currentTimeMillis();String s="";for (int i = 0; i < 1e5; i++) {s+="abc";}long end_time = System.currentTimeMillis();System.out.println(end_time-start_time);//14093}private static void method2(){long start_time = System.currentTimeMillis();StringBuilder sb=new StringBuilder();for (int i = 0; i < 1e5; i++) {sb.append("abc");}long end_time = System.currentTimeMillis();System.out.println(end_time-start_time);//3}
}
StringBuilder类常见构造方法 | 说明 |
---|---|
public StringBuilder() | 构造一个字符串构建器,其中不包含任何字符,初始容量为16个字符(容量不足自动扩容) |
public StringBuilder(int capacity) | 构造一个字符串构建器,其中没有字符,且具有 capacity参数指定的初始容量 |
public StringBuilder(String str) | 构造一个初始化为指定字符串内容的字符串构建器 |
StringBuilder常用成员方法 | 说明 |
---|---|
public StringBuilder append(任意类型) | 添加数据且返回数据本身 |
public StringBuilder reverse() | 反转容器内容 |
public int length() | 返回容器长度(字符个数) |
public String toString() | 将StringBuilder类型转换为String类型 |
package com.xuexi.leice.StringBuilderMethod;
public class StringBuilderDemo2 {public static void main(String[] args) {/*(public StringBuilder) append(任意类型) 添加数据且返回数据本身(public StringBuilder) reverse() 反转容器内容(public String) toString() 将StringBuilder类型转换为String类型*/StringBuilder sb=new StringBuilder();sb.append("abc");//Stringsb.append(123);//intsb.append(12.5);//doubleStringBuilder sb1=sb.append(false);//boolean/*等价sb.append("abc").append(123).append(12.5).append(false)即链式编程:调用函数的返回结果是对象可以继续向下调用方法*/System.out.println(sb);//abc12312.5falseSystem.out.println(sb1);//abc12312.5falseSystem.out.println(sb==sb1);//true 指向同一地址System.out.println(sb.reverse());//eslaf5.21321cbaSystem.out.println(sb);//原sb对象同时也反转 eslaf5.21321cbaSystem.out.println(sb.getClass());//class java.lang.StringBuilderSystem.out.println(sb.toString().getClass());//class java.lang.String}
}
例:回文字符串:键盘录入一字符串,判断是否是对称字符串。
package com.xuexi.leice.StringBuilderMethod;
import java.util.Scanner;
public class StringBuilderDemo3 {public static void main(String[] args) {Scanner input=new Scanner(System.in);StringBuilder sb=new StringBuilder();String s=input.nextLine();sb.append(s);StringBuilder rsb = sb.reverse();if(s.equals(rsb.toString()))System.out.println("回文字符串");elseSystem.out.println("非回文字符串");}
}
例:定义一函数,将int类型数组中的数据按照指定格式拼接为字符串并返回。
package com.xuexi.leice.StringBuilderMethod;
import java.util.Scanner;
public class StringBuilderDemo4 {public static void main(String[] args) {Scanner input=new Scanner(System.in);int n=input.nextInt();int a[]=new int[n];for (int i = 0; i < n; i++)a[i]=input.nextInt();System.out.println(arrayToString(a));}//{1,2,3}->[1,2,3]public static String arrayToString(int a[]){//使用StringBuilder拼接效率更高StringBuilder sb=new StringBuilder("[");for (int i = 0; i < a.length; i++){if(i<a.length-1)sb.append(a[i]).append(",");elsesb.append(a[i]);}sb.append("]");return sb.toString();}
}
引入问题:拼接字符串使用StringBuilder效率相较于String效率更高的原理
//String拼接字符串
public class Test {public static void main(String[] args) {String s1="a";String s2=s1+"b";String s3=s2+"c";}
}
//StringBuilder拼接字符串
public class Test {public static void main(String[] args) {StringBuilder sb=new StringBuilder();sb.append("a").append("b").append("c");}
}
三、集合基础:集合长度可变
ArrayList长度可变原理:当创建ArrayList集合容器时,底层存在一个长度为10的空数组。当数组满时需要再添加元素时,会扩容原数组1.5倍大小(长度15)的新数组。将原数组数据拷贝到新数组中,再继续添加数组。原数组不定时被垃圾回收站清理,以此类推。
基本数据类型 | 对应包装类 |
---|---|
byte | java.lang.Byte(下同java.lang省略) |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
package com.xuexi.jiehefund;
import java.util.ArrayList;//使用ArrayList需要导包
public class ArrayListDemo1 {public static void main(String[] args) {ArrayList al=new ArrayList();//空参构造创建集合alal.add("Mike");al.add("Lily");al.add("Jim");al.add(1234);System.out.println(al);//[Mike, Lily, Jim, 1234]/*ArrayList al=new ArrayList();使得al可以添加任何类型数据,使得数据不够严谨ArrayList<E> al=new ArrayList<E>();限制al添加指定数据类型E*/ArrayList<Integer> al1=new ArrayList<Integer>();//jdk7后,new ArrayList<E>()若指定可不需再指定ArrayList<Boolean> al2=new ArrayList<>();al1.add(123);al1.add(456);al2.add(true);al2.add(false);al2.add(true);System.out.println(al1);//[123, 456]System.out.println(al2);//[true, false, true]}
}
ArrayList常用成员方法 | 说明 |
---|---|
public int size() | 返回集合中元素个数 |
public boolean add(E e) | 指定元素e添加至末尾,返回是否添加成功 |
public void add(int index,E e) | 指定元素e添加至指定位置index |
public E get(int index) | 返回指定索引处元素 |
public E remove(int index) | 删除指定索引处的元素 |
public boolean remove(Object o) | 删除指定元素,返回是否删除成功 |
public E set(int index,E e) | 修改指定索引处的元素,返回被修改元素 |
package com.xuexi.jiehefund;
import java.util.ArrayList;
public class ArrayListDemo2 {public static void main(String[] args) {ArrayList<Integer> al=new ArrayList<>();boolean f_a_s = al.add(100);//System.out.println(f_a_s);//trueal.add(200);al.add(300);al.add(400);//[100,200,300,400]al.add(2,500);//在索引为2(0开始)处添加元素500 注意索引不能越界//System.out.println(al);//[100, 200, 500, 300, 400]Integer re = al.remove(2);//根据索引删除:删除索引为2(0开始)元素 返回对应E(Integer)类型的元素//System.out.println(al);//[100, 200, 300, 400]//System.out.println(re);//500boolean re2 = al.remove(Integer.valueOf(400));//根据元素删除:删除集合中400的元素 返回是否删除成功//al.remove(400);默认删除索引为400的元素,删除int类型的指定元素使用Integer.valueOf(元素)// 没有指定元素 删除失败 返回false//System.out.println(al);//[100, 200, 300]//System.out.println(re2);//trueInteger sev = al.set(1, 50);//修改索引为1的元素为50,返回原元素200//System.out.println(al);//[100, 50, 300]//System.out.println(sev);//200//System.out.println(al.get(2));//300 获取索引为2的元素//System.out.println(al.get(3));//Error 越界}
}
例:创建存储字符串的集合,存储字符串元素,遍历集合。
package com.xuexi.jiehefund;
import java.util.*;
public class ArrayListDemo3 {public static void main(String[] args) {ArrayList<String> al=new ArrayList<>();Scanner input=new Scanner(System.in);int n=input.nextInt();for (int i = 0; i < n; i++) {String s=input.next();al.add(s);}for (int i = 0; i < al.size(); i++) {System.out.print(al.get(i)+" ");}}
}
/*
5
Lily Jack Jim Mike Tom
Lily Jack Jim Mike Tom
*/
例:创建存储学生对象的集合,存储三个学生对象,遍历集合中的学生对象。
package com.xuexi.jiehefund;
//服务于ArrayListDemo4
public class Student {private String id;private String name;private int age;public Student() {}public Student(String id, String name, int age) {this.id = id;this.name = name;this.age = age;}/*** 获取* @return id*/public String getId() {return id;}/*** 设置* @param id*/public void setId(String id) {this.id = id;}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {this.age = age;}public String toString() {return "Student{id = " + id + ", name = " + name + ", age = " + age + "}";}
}
package com.xuexi.jiehefund;
import java.util.ArrayList;
public class ArrayListDemo4 {public static void main(String[] args) {Student stu1=new Student("001","Mike",20);Student stu2=new Student("002","Jack",21);Student stu3=new Student();stu3.setId("003");stu3.setName("Jim");stu3.setAge(22);ArrayList<Student> alS=new ArrayList<>();alS.add(stu1);alS.add(stu2);alS.add(stu3);System.out.println(stu1);for (int i = 0; i < alS.size(); i++) {Student student = alS.get(i);System.out.println(student);}}
}
/*
Student{id = 001, name = Mike, age = 20}
Student{id = 002, name = Jack, age = 21}
Student{id = 003, name = Jim, age = 22}
说明:若注释Student类的toString方法,输出结果为地址
com.xuexi.jiehefund.Student@1540e19d
com.xuexi.jiehefund.Student@677327b6
com.xuexi.jiehefund.Student@14ae5a5
*/
变式:创建存储学生对象的集合,存储若干学生对象,键盘录入学生信息,并遍历集合。
package com.xuexi.jiehefund;
//服务于ArrayListDemo4
public class Student {private String id;private String name;private int age;public Student() {}public Student(String id, String name, int age) {this.id = id;this.name = name;this.age = age;}/*** 获取* @return id*/public String getId() {return id;}/*** 设置* @param id*/public void setId(String id) {this.id = id;}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {this.age = age;}public String toString() {return "Student{id = " + id + ", name = " + name + ", age = " + age + "}";}
}
package com.xuexi.jiehefund;
import java.util.*;
public class ArrayListDemo4 {public static void main(String[] args) {Scanner input=new Scanner(System.in);int n=input.nextInt();ArrayList<Student> studentArrayList=new ArrayList<>();for (int i = 0; i < n; i++) {Student stu=new Student();String id=input.next();String name=input.next();int age=input.nextInt();stu.setId(id);stu.setName(name);stu.setAge(age);studentArrayList.add(stu);}for (int i = 0; i < studentArrayList.size(); i++) {System.out.println(studentArrayList.get(i));}}
}
四、案例:学生管理系统
package com.xuexi.jihefund;
//服务于StudentManageSystem
public class StudentInfo {private String id;private String name;private int age;private String city;public StudentInfo() {}public StudentInfo(String id, String name, int age, String city) {this.id = id;this.name = name;this.age = age;this.city = city;}/*** 获取* @return id*/public String getId() {return id;}/*** 设置* @param id*/public void setId(String id) {this.id = id;}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {this.age = age;}/*** 获取* @return city*/public String getCity() {return city;}/*** 设置* @param city*/public void setCity(String city) {this.city = city;}public String toString() {return "StudentInfo{id = " + id + ", name = " + name + ", age = " + age + ", city = " + city + "}";}
}
package com.xuexi.jihefund;
import java.util.*;
public class StudentManageSystem {public static void main(String[] args) {ArrayList<StudentInfo> alStu=new ArrayList<>();Scanner input=new Scanner(System.in);System.out.println("---StudentManageSystem---");while(true){showPage();int choice=input.nextInt();switch (choice){case 1:AddStudentInfo(alStu, input);break;case 2:DeleteStudentInfo(alStu, input);break;case 3:UpdateStudentInfo(alStu, input);break;case 4:showStudentInfo(alStu);break;default:System.exit(0);//终止正在运行的JVM虚拟机}}}public static boolean checkIfExist(String id,ArrayList<StudentInfo> alStu){for (int i = 0; i < alStu.size(); i++) {if(alStu.get(i).getId().equals(id))return true;}return false;}public static void AddStudentInfo(ArrayList<StudentInfo> alStu, Scanner input) {StudentInfo stu=new StudentInfo();input.useDelimiter("\n");System.out.print("Input ID:");String id=input.next();while(checkIfExist(id,alStu)){System.out.print("ID clash.Enter ID:");id=input.next();}System.out.print("Input name:");String name=input.next();System.out.print("Input age:");int age=input.nextInt();System.out.print("Input city:");String city=input.next();stu.setId(id);stu.setName(name);stu.setAge(age);stu.setCity(city);alStu.add(stu);}public static void showPage() {System.out.println("1 Add");System.out.println("2 Delete");System.out.println("3 Update");System.out.println("4 Select");System.out.println("else Exit");}public static void DeleteStudentInfo(ArrayList<StudentInfo> alStu,Scanner input){System.out.print("Input ID you want to delete:");String DeId=input.next();while(!checkIfExist(DeId,alStu)){System.out.print("ID do not exist.Enter ID:");DeId=input.next();}for (int i = 0; i < alStu.size(); i++) {if (DeId.equals(alStu.get(i).getId())) {alStu.remove(i);break;}}}public static void UpdateStudentInfo(ArrayList<StudentInfo> alStu,Scanner input){System.out.print("Input ID you want to update:");String DeId=input.next();while(!checkIfExist(DeId,alStu)){System.out.print("ID do not exist.Enter ID:");DeId=input.next();}for (int i = 0; i < alStu.size(); i++) {if(DeId.equals(alStu.get(i).getId())){System.out.print("Input ID:");String new_id=input.next();while (checkIfExist(new_id,alStu)){System.out.print("ID clash.Enter ID:");new_id=input.next();}alStu.get(i).setId(new_id);System.out.print("Input name:");String new_name=input.next();alStu.get(i).setName(new_name);System.out.print("Input age:");int new_age=input.nextInt();alStu.get(i).setAge(new_age);System.out.print("Input City:");String new_city=input.next();alStu.get(i).setCity(new_city);break;}}}public static void showStudentInfo(ArrayList<StudentInfo> alStu){if (alStu.size()==0)System.out.println("List is Empty!");for (int i = 0; i < alStu.size(); i++) {System.out.println(alStu.get(i).toString());}}
}
---StudentManageSystem---
1 Add
2 Delete
3 Update
4 Select
else Exit
1
Input ID:19230334
Input name:Jack
Input age:20
Input city:BeiJing
1 Add
2 Delete
3 Update
4 Select
else Exit
1
Input ID:19230337
Input name:Lucy
Input age:19
Input city:WuHan
1 Add
2 Delete
3 Update
4 Select
else Exit
1
Input ID:19230322
Input name:Wayne
Input age:22
Input city:ChongQing
1 Add
2 Delete
3 Update
4 Select
else Exit
1
Input ID:19230339
Input name:Jim
Input age:18
Input city:ShangHai
1 Add
2 Delete
3 Update
4 Select
else Exit
4
StudentInfo{id = 19230334, name = Jack, age = 20, city = BeiJing}
StudentInfo{id = 19230337, name = Lucy, age = 19, city = WuHan}
StudentInfo{id = 19230322, name = Wayne, age = 22, city = ChongQing}
StudentInfo{id = 19230339, name = Jim, age = 18, city = ShangHai}
1 Add
2 Delete
3 Update
4 Select
else Exit
2
Input ID you want to delete:19230340
ID do not exist.Enter ID:19230322
1 Add
2 Delete
3 Update
4 Select
else Exit
4
StudentInfo{id = 19230334, name = Jack, age = 20, city = BeiJing}
StudentInfo{id = 19230337, name = Lucy, age = 19, city = WuHan}
StudentInfo{id = 19230339, name = Jim, age = 18, city = ShangHai}
1 Add
2 Delete
3 Update
4 Select
else Exit
3
Input ID you want to update:19230340
ID do not exist.Enter ID:19230337
Input ID:19230339
ID clash.Enter ID:19230334
ID clash.Enter ID:19230338
Input name:Lily
Input age:21
Input City:GuangZhou
1 Add
2 Delete
3 Update
4 Select
else Exit
4
StudentInfo{id = 19230334, name = Jack, age = 20, city = BeiJing}
StudentInfo{id = 19230338, name = Lily, age = 21, city = GuangZhou}
StudentInfo{id = 19230339, name = Jim, age = 18, city = ShangHai}
1 Add
2 Delete
3 Update
4 Select
else Exit
0
第二章 Java的面向对象进阶(上)相关推荐
- 使用java实现面向对象编程第二章_java面向对象编程——第二章 java基础语法
第二章 java基础语法 1.java关键字 abstract boolean break byte case catch char class const continue default do d ...
- (Java零基础学习笔记)第二章 Java中的基本语法
前言: 大家好! 我是BA unravel .如果你想和我一起学习JAVA,欢迎大家一起来学习这个世界上最好的语言! 学习目标: 一周掌握 Java 入门知识 学习内容: 1. 搭建 Java 开发环 ...
- 描述java源程序构成_Java第二章Java程序设计
<Java第二章Java程序设计>由会员分享,可在线阅读,更多相关<Java第二章Java程序设计(140页珍藏版)>请在人人文库网上搜索. 1.第2章 Java基本语法,2. ...
- java 计数器越界,[总结]-第二章 Java内存区域与内存溢出异常
[总结]-第二章 Java内存区域与内存溢出异常 一.知识点 1.虚拟机运行时数据区 方法区:运行时常量池(JDK1.7被移出) 堆:存放对象实例或数组.新生代和老年代 虚拟机栈:线程私有.栈 本地方 ...
- java 3D 第二章 java 3D基本概念
java 3D 第二章 java 3D基本概念 java 3D基本概念 java 3D的包及其功能 java 3D 高分辨率大尺度坐标 Java 3D场景图(Scene Graph) VirtualU ...
- 进击 !!第二章 JAVA编程基础
第二章 JAVA编程基础 目标: 掌握java的基本语法,常量,变量,流程控制语句,方法以及数组 运用java运算符的使用 了解java代码的基本格式 2.1java 的基本语法 1. 代码的基本格式 ...
- 【JAVA SE】第二章 Java语法基础、数据类型、基本类型的字面值、基本类型的类型转换和运算规则
第二章 Java语法基础.数据类型.基本类型的字面值.基本类型的类型转换.运算规则和标识符命名风格 文章目录 第二章 Java语法基础.数据类型.基本类型的字面值.基本类型的类型转换.运算规则和标识符 ...
- 第二章 java常用开发工具以及程序的编写
2019独角兽企业重金招聘Python工程师标准>>> 第二章 java常用开发工具以及程序的编写 1. 程序的概念 2. java程序的开发的三个步骤 ...
- java语言定义一个具备栈功能的类_Java学习笔记 第二章 Java语言基础
第二章 JAVA语言基础 一.关键字 1.关键字的定义和特点 定义:被Java语言赋予了特殊含义的单词 特点:关键字中所有的字母都为小写 2.用于定义数据类型的关键字 c;ass interface ...
最新文章
- eclipse中egit插件使用
- 最牛逼的核心框架,没有之一!
- html的div的儿子,当父母的身高是动态时,孩子div为100% HTML / CSS
- 在Hue中创建一个Oozie工作流
- 烦人的Facebook分享授权
- NYOJ2括号配对问题
- 微生物 研究_微生物监测如何工作,为何如此重要
- 2015总结及2016计划
- mysql语句面试题_mysql的sql面试题(1)
- LeetCode 279. Perfect Squares
- 用TestComplete实现一个关键字驱动测试框架
- 360加速球效果实现
- excel各种填充的总结
- InfoPath 2007/2010 Helper Tool
- 问题记录之---nginx temp文件夹
- Simon Game实现过程记录
- 华为应用市场2021年度安全隐私报告发布:护航应用安全是场“持久战”
- Pandas 学习手册中文第二版:1~5
- poj3253切割木板(哈夫曼树) 贪心【优先队列】
- GDUT 2.25 D
热门文章
- 学习java要经常溜达的网站
- 机器学习:欧氏距离(Euclidean Distance)
- 量化投资算法交易设计
- 传智播客 刘意_2015年Java基础视频-深入浅出精华版 笔记(day01~day10)(2015年11月17日20:51:59)
- 《初级会计实务》考试学习分享之第一章 ——会计概述(下)【考试大纲】
- element ui Tag 动态添加标签
- 程序员每天需要多少代码量
- 【日常小问题1】U盘写入速度变慢的解决方法(适用于win10)
- 区块链技术助力甘肃建食安信息追溯平台 为食品安全“立规矩”
- 看板管理大型项目-4-5.项目看板