选择排序:数组中的每个元素和其他元素进行比较换位置   arr[i]>arr[j]

冒泡排序:相邻元素换位置            arr[j]>arr[j+1]

变量直接声明在类体里面,  方法外面,代码块的外面  全局变量(成员变量)

变量除了全局变量就是局部变量

成员变量和局部变量的区别:

成员变量定义在类中方法外代码块的外面  局部变量定义在方法中或者代码块里面

局部变量使用前必须要赋值

成员变量进堆内存  局部变量进栈内存

this关键字:区分成员变量和局部变量同名情况  成员变量用this. 来调用

在构造方法之间调用     this();

二分查找前要记得排序。

继承的好处:提高了代码的复用性,提高了代码的维护性,让类与类之间产生了关系,是多态的前提

继承的弊端:类的耦合性增加了(开发的原则是高内聚,低耦合)

继承要注意的地方:子类只能继承父类所有的非私有的成员,子类不能继承父类的构造方法,但可以通过super关键子去访问父类的构造方法

子类方法覆盖父类方法,必须保证权限大于等于父类权限

Java中有多继承么?

类没有多继承     接口之间有多继承

接口和抽象类的区别:

相同点:都不能实例化  都必须被子类重写抽象方法

不同点:

1.抽象类可以有构造方法,接口中不能有构造方法。

2.抽象类中可以有普通成员变量,接口中没有普通成员变量

3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的

4. 抽象类中可以包含静态方法,接口中不能包含静态方法

5. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型

6. 一个类可以实现多个接口,但只能继承一个抽象类。

抽象方法只能放到抽象类中public abstract class Demo {public abstract void show();
}
接口常用的变量和方法public interface  Demo {public static final int i=1;public abstract void show();
}

多态中,成员特点

成员变量:(编译运行全看父类)

编译时,参考父类中有没有这个变量,如果有,编译成功,没有编译失败

运行时,运行的是父类中的变量值

成员方法:(编译看父类,运行看子类)

编译时,参考父类中有没有这个方法,如果有,编译成功,没有编译失败

运行时,运行的是子类的重写方法

静态成员变量和方法:

编译和运行都看父类

Instanceof:比较引用数据类型

比较一个引用类型的变量是不是这个类型的对象

面向对象的三大特征:封装、继承、多态

封装:封装给对象提供了隐藏内部特性和行为的能力,对象提供了一些能被其他对象访问的方法来改变它内部的数据

继承:继承发生在子父类之间,子类继承父类所有的可继承的属性和方法

多态:多态的前提是继承,可以理解为同一种物质的多种形态

多态就是父类引用指向子类对象

多态弊端:不能调用子类特有的方法

构造方法在new的时候自动执行,只执行一次

子类调用父类的构造方法

super()调用的是父类的空参数构造        super(参数)调用的是父类的有参数的构造方法

final修饰类、方法、属性

final修饰类这个类不能被继承    修饰方法不能被重写  修饰变量为常量,只能赋值一次

如何实现对象的共享数据,在数据的前面加上static修饰

​
public class Person {String name;static String className;}public class Demo {public static void main(String[] args) {Person p1=new Person();Person p2=new Person();p1.name="哈哈";p2.name="呵呵";System.out.println(p1.name+"..."+p2.name);//对象调用类的静态成员变量p1.className="基础班";System.out.println(p2.className);//也可以直接类名调用System.out.println(Person .className);}}​

static关键字特点:

随着类的加载而加载   优先于对象存在  被所有对象所共享  可以直接被类名调用

匿名对象:没有名字的对象

应用场景:只调用一次的时候,匿名对象可以作为实际参数传递,可以作为方法的返回值

问题:

10.选择排序   {12,23,34,-23,56,25}
 11.冒泡排序  {12,23,34,-23,56,25}
 12.折半查找  {12,23,25,34,56}  折半查找前 必须要排好序

13.===========超市管理系统==========   实现增删改查
          1.货物清单  2.添加新货物 3.删除货物 4.修改货物 5.退出系统
                  (商品编号  商品名称  商品单价)
     根据案例介绍,我们进行分析,首先需要一个功能菜单,然后输入功能序号后,调用序号对应的功能方法,实现想要的操作。分析步骤如下
    1.完成超市商品初始化。创建商品,将商品添加到集合
    2.显示来到超市能做的操作,也就是显示主菜单
    3.根据接收到的功能选项,执行对应的功能
    3.1.库存货物查询
    3.2.添加新货物    
    3.3.删除货物
    3.4.修改货物
    3.5.退出系统,结束main方法的运行
    4.循环,回到 2.显示主菜单

14.随机学生 利用集合

15.如何在创建子类的情况下 打印出父类的变量   子父类重名的情况下使用

16.原先手机有打电话,发短信 显示来电号码                 新手机在原有的基础上加了大头贴和来电姓名

17.this关键字在构造方法之间调用     调用自己类的构造方法

18.描述学生和工人这两个类,将他们的共性name和age抽取出来放到父类中,并提供相应的get和set方法,

同时需要在创建学生和工人对象就必须明确姓名和年龄.

19.某IT公司有多名员工,按照员工负责的工作不同,进行了划分,JavaEE工程师,网络维护工程师
工作内容:
JavaEE工程师:员工号为xxx的xxx员工,正在开发网站
网络维护工程师:员工号为xxx的xxx员工,正在检查网络是否畅通

(新增  强化Answer13的问题)

学生管理系统之学号不存在问题(对应上面的商品编号是否存在)

学生管理系统之学号重复问题(对应上面的商品编号是否重复)

public class Student {//学号private String sid;//姓名private String name;//年龄private String age;
}/*学生管理系统*/
public class StudentManager {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.nextLine();//用switch语句完成操作的选择switch (line) {case "1":addStudent(array);break;case "2":deleteStudent(array);break;case "3":
//                    System.out.println("修改学生");updateStudent(array);break;case "4":findAllStudent(array);break;case "5":System.out.println("谢谢使用");System.exit(0); //JVM退出}}}//定义一个方法,用于添加学生信息/*public static void addStudent(ArrayList<Student> array) {//键盘录入学生对象所需要的数据,显示提示信息,提示要输入何种信息Scanner sc = new Scanner(System.in);System.out.println("请输入学生学号:");String sid = sc.nextLine();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();s.setSid(sid);s.setName(name);s.setAge(age);s.setAddress(address);//将学生对象添加到集合中array.add(s);//给出添加成功提示System.out.println("添加学生成功");}*/public static void addStudent(ArrayList<Student> array) {//键盘录入学生对象所需要的数据,显示提示信息,提示要输入何种信息Scanner sc = new Scanner(System.in);//为了让sid在while循环外面被访问到,我们就把它定义在了循环外String sid;//为了让程序能够回到这里,我们使用循环实现while (true) {System.out.println("请输入学生学号:");sid = sc.nextLine();boolean flag = isUsed(array, sid);if (flag) {System.out.println("你输入的学号已经被使用,请重新输入");} else {break;}}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();s.setSid(sid);s.setName(name);s.setAge(age);s.setAddress(address);//将学生对象添加到集合中array.add(s);//给出添加成功提示System.out.println("添加学生成功");}//定义一个方法,判断学号是否被使用public static boolean isUsed(ArrayList<Student> array, String sid) {//如果与集合中的某一个学生学号相同,返回true;如果都不相同,返回falseboolean flag = false;for(int i=0; i<array.size(); i++) {Student s = array.get(i);if(s.getSid().equals(sid)) {flag = true;break;}}return flag;}//定义一个方法,用于查看学生信息/*public static void findAllStudent(ArrayList<Student> array) {//显示表头信息//\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.getSid() + "\t" + s.getName() + "\t" + s.getAge() + "岁\t\t" + s.getAddress());}}*/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.getSid() + "\t" + s.getName() + "\t" + s.getAge() + "岁\t\t" + s.getAddress());}}//定义一个方法,用于删除学生信息/*public static void deleteStudent(ArrayList<Student> array) {//键盘录入要删除的学生学号,显示提示信息Scanner sc = new Scanner(System.in);System.out.println("请输入你要删除的学生的学号:");String sid = sc.nextLine();//遍历集合将对应学生对象从集合中删除for(int i=0; i<array.size(); i++) {Student s = array.get(i);if(s.getSid().equals(sid)) {array.remove(i);break;}}//给出删除成功提示System.out.println("删除学生成功");}*/public static void deleteStudent(ArrayList<Student> array) {//键盘录入要删除的学生学号,显示提示信息Scanner sc = new Scanner(System.in);System.out.println("请输入你要删除的学生的学号:");String sid = sc.nextLine();//在删除/修改学生操作前,对学号是否存在进行判断//如果不存在,显示提示信息//如果存在,执行删除/修改操作int index = -1;for (int i = 0; i < array.size(); i++) {Student s = array.get(i);if (s.getSid().equals(sid)) {
//                int index = i;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.nextLine();System.out.println("请输入学生新年龄:");String age = sc.nextLine();System.out.println("请输入学生新居住地:");String address = sc.nextLine();//创建学生对象Student s = new Student();s.setSid(sid);s.setName(name);s.setAge(age);s.setAddress(address);//遍历集合修改对应的学生信息for (int i = 0; i < array.size(); i++) {Student student = array.get(i);if (student.getSid().equals(sid)) {array.set(i, s);break;}}//给出修改成功提示System.out.println("修改学生成功");}
}
public class Answer10 {  public static void main(String[] args) {int [] arr={12,23,34,-23,56,25};selectSort(arr);show(arr);}public static void selectSort(int[] arr){for (int i = 0; i < arr.length-1; i++) {for (int j = i+1; j < arr.length; j++) {if(arr[i]>arr[j]){int temp=arr[i];arr[i]=arr[j];arr[j]=temp;}}}}public static void show(int [] arr){System.out.print("[");for(int i=0;i<arr.length;i++){if(i!=arr.length-1){System.out.print(arr[i]+",");}else{System.out.print(arr[i]+"]");}}}}
public class Answer11 {public static void main(String[] args) {int [] arr={12,23,34,-23,56,25};bubbleSort(arr);show(arr);}public static void bubbleSort(int[] arr){for (int i = 0; i < arr.length-1; i++) {//每次内循环的比较,从0索引开始,每次都在递减for (int j = 0; j < arr.length-1-i; j++) {   //冒泡减1是为了防止j+1越界异常if(arr[j]>arr[j+1]){int temp=arr[j+1];arr[j+1]=arr[j];arr[j]=temp;}}}}public static void show(int [] arr){System.out.print("[");for(int i=0;i<arr.length;i++){if(i!=arr.length-1){System.out.print(arr[i]+",");}else{System.out.print(arr[i]+"]");}}}}
/** 折半公式(min+max)/2* 指针思想* 折半后的指针索引和被查找元素比较* 元素>中间索引上的元素* 小指针=中间+1* 元素<中间索引上的元素* 大指针=中间-1* */
public class Answer12 {public static void main(String[] args) {int[] arr={12,23,25,34,56};int index=binarySearch(arr,25);System.out.println(index);}public static int binarySearch(int [] arr,int key){//定义三个指针变量int min=0;int max=arr.length-1;int mid=0;while(min<=max){//公式,计算中间索引mid=(min+max)/2;//让被找元素,和中间元素进行比较if(key>arr[mid]){min=mid+1;}else if(key<arr[mid]){max=mid-1;}else{//找到元素,返回元素索引return mid;}}return -1;}}
import java.util.ArrayList;
import java.util.Scanner;public class Answer13 {  public static void main(String[] args) {ArrayList<FruitItem> array=new ArrayList<>();init(array);while(true){mainMenu();int num=chooseFunction();switch (num) {case 1:showFruitItem(array);break;case 2:addFruit(array);break;case 3:deleteFruit(array);break;case 4:updateFruit(array);break;case 5:System.out.println("你已退出本管理系統");return ;default:System.out.println("请输入正确的序号");break;}}}public static void updateFruit(ArrayList<FruitItem> array){System.out.println("您现在操作的是商品修改功能");Scanner sc=new Scanner(System.in);System.out.println("请输入你要修改的商品编号");int ID=sc.nextInt();for(int i=0;i<array.size();i++){FruitItem item=array.get(i);if(item.ID==ID){System.out.println("请输入新的商品编号");item.ID=sc.nextInt();System.out.println("请输入新的商品名称");item.brand=sc.next();System.out.println("请输入新的商品单价");item.price=sc.nextDouble();System.out.println("恭喜你修改商品成功");return;}}System.out.println("你输入的商品编号不存在");}public static void deleteFruit(ArrayList<FruitItem> array){System.out.println("您现在操作的是商品删除功能");Scanner sc=new Scanner(System.in);System.out.println("请输入你要删除的商品编号");int ID=sc.nextInt();for(int i=0;i<array.size();i++){FruitItem item=array.get(i);if(item.ID==ID){array.remove(i);System.out.println("恭喜你删除商品成功");return ;}}System.out.println("你输入的商品编号不存在");}public static void addFruit(ArrayList<FruitItem> array){System.out.println("您现在操作的是商品添加功能");Scanner sc=new Scanner(System.in);FruitItem item=new FruitItem();System.out.println("请输入你要添加的商品编号");item.ID=sc.nextInt();System.out.println("请输入你要添加的商品名称");item.brand=sc.next();System.out.println("请输入你要添加的商品单价");item.price=sc.nextDouble();array.add(item);System.out.println("恭喜你添加商品成功");}public static void showFruitItem(ArrayList<FruitItem> array){System.out.println();System.out.println("=============商品库存清单=============");System.out.println("商品编号         商品名称             商品单价");for(int i=0;i<array.size();i++){FruitItem fi=array.get(i);System.out.println(fi.ID+"            "+fi.brand+"                "+fi.price);}}public static int chooseFunction(){return new Scanner(System.in).nextInt();}public static void mainMenu(){System.out.println();System.out.println("==============欢迎光临Itcast水果超市==============");System.out.println("1.货物清单   2.添加新货物   3.删除货物    4.修改货物     5.退出系统");System.out.println("请您输入要操作的需要");}public static void init(ArrayList<FruitItem> array){FruitItem f1=new FruitItem();f1.ID=1001;f1.brand="西瓜";f1.price=12.5;FruitItem f2=new FruitItem();f2.ID=1002;f2.brand="苹果";f2.price=16.0;FruitItem f3=new FruitItem();f3.ID=1003;f3.brand="人生果";f3.price=50.0;array.add(f1);array.add(f2);array.add(f3);}
}class FruitItem{int ID;String brand;double price;
}
public class NewStudent {private String name;private int ag;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAg() {return ag;}public void setAg(int ag) {this.ag = ag;}}import java.util.ArrayList;
import java.util.Random;public class Answer14 {
public static void main(String[] args) {ArrayList<NewStudent> array=new ArrayList<>();addStudent(array);showStudent(array);randomStudent(array);
}public static void randomStudent(ArrayList<NewStudent> array){Random ran=new Random();int index=ran.nextInt(array.size());NewStudent ns=array.get(index);System.out.println(ns.getName()+"..."+ns.getAg());
}public static void showStudent(ArrayList<NewStudent> array){for(int i=0;i<array.size();i++){NewStudent s=array.get(i);System.out.println(s.getName()+"...."+s.getAg());}
}public static void addStudent(ArrayList<NewStudent> array){NewStudent ns1=new NewStudent();ns1.setName("张三1");ns1.setAg(151);NewStudent ns2=new NewStudent();ns2.setName("张三2");ns2.setAg(152);NewStudent ns3=new NewStudent();ns3.setName("张三3");ns3.setAg(153);NewStudent ns4=new NewStudent();ns4.setName("张三4");ns4.setAg(154);NewStudent ns5=new NewStudent();ns5.setName("张三5");ns5.setAg(155);array.add(ns1);array.add(ns2);array.add(ns3);array.add(ns4);array.add(ns5);}
}
public class Answer15 {public static void main(String[] args) {Zi zi=new Zi();zi.show();}}class Fu{int i=1;
}class Zi extends Fu{int i=2;public void show(){int i=3;System.out.println(i);System.out.println(this.i);System.out.println(super.i);}
}
public class Answer16 {public static void main(String[] args) {AndroidPhone ad=new AndroidPhone();ad.call();ad.sendMessage();ad.show();}}class Phone{public void call(){System.out.println("打电话了");}public void sendMessage(){System.out.println("发消息了");}public void show(){System.out.println("显示来电号码了");}
}class AndroidPhone extends Phone{public void show(){super.show();    //调用了父类的方法  -----     System.out.println("大头贴");System.out.println("来电姓名");}
}
public class  Person {private String name;private int age;public Person(){//调用了有参数的构造方法  参数 张三 18传给了变量name 和 agethis("张三",18);}public Person(String name,int age){this.name=name;this.age=age;}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;}}public class Answer17 {public static void main(String[] args) {Person p=new Person();System.out.println(p.getName()+"..."+p.getAge());}}
public class  Person {private String name;private int age;public Person(String name,int age){super();this.name=name;this.age=age;}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;}}public class Student extends Person{public Student(String name, int age) {super(name, age);}}public class Worker extends Person{public Worker(String name, int age) {super(name, age);}}public class Answer18 {public static void main(String[] args) {Student s=new Student("张三",18);Worker w=new Worker("李四",20);System.out.println(s.getName()+"..."+s.getAge());System.out.println(w.getName()+"..."+w.getAge());}}
public abstract class Employee {private String name;private int age;public Employee(String name, int age) {super();this.name = name;this.age = age;}public abstract void work();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;}}public class JavaEE extends Employee{public JavaEE(String name, int age) {super(name, age);}public void work() {System.out.println("员工号为"+super.getName()+"..."+"年龄为"+super.getAge()+",正在开发网站");}}public class Maintainer extends Employee{public Maintainer(String name, int age) {super(name, age);}public void work() {System.out.println("员工号为"+super.getName()+"..."+"年龄为"+super.getAge()+",正在检查网络是否畅通");}
}public class Answer19 {public static void main(String[] args) {JavaEE javaEE=new JavaEE("张三",18);Maintainer maintainer=new Maintainer("李四", 20);javaEE.work();maintainer.work();}}

javase_day3相关推荐

最新文章

  1. unity3d发布linux版本_微软发布 Linux 版本 Microsoft Defender ATP,并计划将其引入 Android 等移动端...
  2. Ubuntu 显示隐藏文件
  3. 【采用】互联网反欺诈体系建设
  4. 【MFC】自绘对话框动画效果的状态栏
  5. 关于负载均衡的一切:总结与思考
  6. 闭包 python_根据面试题谈谈 Python 闭包
  7. halcon自带的案例学习
  8. 手机版豆丁书房下载的文档在哪儿
  9. viper12a电源电路图_基于VIPER12A芯片设计的开关电源
  10. 理想窄高斯脉冲matlab,关于实际采样与理想采样的问题
  11. innobackupex备份与恢复
  12. Android之设置WebView的UserAgent
  13. 绿盟漏扫系统漏洞及修复方案
  14. 我对价值投资的思考(二)
  15. win10关闭了微软服务器,win10自带安全软件怎么关闭|win10关闭自带杀毒软件的两种方法...
  16. C语言函数大全-- r 开头的函数
  17. 忻州师范学院计算机系男女比例,忻州师范学院排名2021 山西排名第13全国排名第570...
  18. 想搞人工智能,却又不会用Linux?GPU主机+远程调试来帮你!
  19. 01、NRF52832介绍功耗、射频参数、芯片处理能力、内存和支持协议详解
  20. 神笔马良——基于 OpenGL 的涂鸦框架

热门文章

  1. Freeform 加速汽车设计与制造
  2. 高教版《管理学》(第四版)重点知识整理
  3. 《重构:改善既有代码的设计》读书笔记
  4. Vue--provide, inject--使用/教程/实例
  5. macOS 13 Mammoth 概念已出,重新定义 Mac 体验
  6. web系统多语言切换(中文,英文,日文)
  7. 全国计算机二级考试ACCESS入门教程
  8. 看服装数字化工厂是如何运作的
  9. dreamweaver cs4 下载
  10. ios跨线程通知_iOS 通知的多线程处理 与Runloop的关系