面向对象(Java)

设计模式  设计原则
开闭原则: 抽象约束,封装变化
里氏替换原则: 子类可扩展父类但不能改变父类
依赖倒置原则: 面向接口编程
单一职责原则: 控制类粒度大小,使其利于重用
接口隔离原则: 为提高内聚性,降低类对接口依赖性,分解接口
迪米特法则: 限制类实体间通信宽度和深度
合成复用原则: 尽量使用聚合或组合关系

设计模式:单例模式,懒汉式、饿汉式,装饰器模式,观察者模式

类与对象:类是对象的抽象,对象是类的具体。

类:具有相同属性和方法的一组对象的集合。

对象:每个分类中,具体的个体,用来描述一组客观事物的实体,由一组方法和属性构成。

方法名的定义遵循驼峰原则。

方法调用:本类中:方法名();其他类中需要创建对象并调用。

形参:定义方法时,括号中创建的变量。

实参:在方法调用时,传入的实际参数。

           注意:基本数据类型作为参数传递时传入的时值!引用数据类型作为参数传递时传递的是地址!

构造方法:若类中没有自定义构造方法,系统默认创建一个无参构造方法,但若自定义了构造方法,系统将不再默认创建无参构造方法。

构造方法的重载:方法名相同,参数项不同,与修饰符无关。

this(...):调用构造方法时必须放在第一行(如有参无参构造方法之间的调用 ...表示参数)。

idea集成开发工具: alt+insert:添加get 、set及构造方法快捷键。

成员变量与局部变量:成员变量在类中定义,有初始值,局部变量在方法中定义,没有初始值。

封装:防止属性被随意访问,不合理的赋值,两大原则:把尽可能多的东西藏起来;对外提供便捷接口,把所有属性藏起来

作用域修饰符 同一个类中 同一个包子类或其他类 不同包子类 不同包其他类
private      
默认修饰符    
protected  
public

static静态变量域成员变量区别:静态变量属于类,也称类变量;成员变量属于对象,所以也称实例变量或对象变量;

成员变量存于堆内存,静态变量存于静态区;静态变量随类加载而加载,随类消失而消失;成员变量随对象创建而存在,随对象

消失而消失;静态变量可以通过类名或对象调用,成员变量只可通过对象名调用。类的创建先在栈内存创建加载对象的引用,在

共享区创建静态代码块,而后在堆里创建对象,创建成员变量成员方法。

java.lang:虚拟机自动引入
java.util:提供一些实用类

java.io:输入、输出

继承:A extends B

super:代表父类对象,子类调用时放在第一行,子类对象默认调用父类构造函数,如果子类写明调用父类构造函数时,默认调用

父类的无参构造函数。若父类不存在无参构造,需要手动调用父类带参构造。

重写Override(重写的注解):子类根据需求对父类方法进行重写,构造方法不能被重写。

   package com.ibeifeng.javase.zuoye07;

public class Teacher {
    private int tid;
    private String course;
    private String clas;
    private String name;

    public int getTid() {
        return tid;
    }

    public String getCourse() {
        return course;
    }

    public void setTid(int tid) {
        this.tid = tid;
    }

    public void setCourse(String course) {
        this.course = course;
    }

    @Override
    public boolean equals(Object obj) {
        Teacher teacher = (Teacher) obj;
        if (!(obj instanceof Teacher)) {
            System.out.println("请给定一个老师对象!!");
            return false;
        } else if (this.getTid() == teacher.getTid() && this.getCourse().equals(teacher.getCourse())) {
            return true;
        }else
            return false;
    }

    public static void main(String[] args) {
        Teacher teacher1=new Teacher();
        Teacher teacher2=new Teacher();
        teacher1.setCourse("本科");
        teacher1.setTid(101);
        teacher2.setCourse("本科");
        teacher2.setTid(101);
        System.out.println(teacher1.equals(teacher2));
    }
}
Object类:所有类直接或间接父类
toString: 返回当前对象信息,类地址@十六进制哈希值。(输出对象默认调用重写toString方法,以表现对象相关属性)
equals: 比较两个对象内存,相同则返回true。
hashCode: 返回对象hash值
getClass: 返回类信息,class 类地址。

多态:程序中定义的引用变量,发出的方法调用并不确定,只在程序运行期间,才确定其具体指向哪个类的实例对象。这样不用

修改源代码,就可以让引用变量指向不同的类实现上,让程序可以选择多个运行状态。

           核心是类型转换,向上转型、向下转型,提高程序扩展性

           使用场景:形参——参数既可以传入本类参数,又可以传入子类参数。作为父类方法的返回值——既可以返回本类对象,

  又可以返回子类对象。

继承:提高代码可重用性,因此提高程序的维护性。子类又被称为派生类,父类又被称为超类(Super Class)。

黑白电视机类:

package com.ibeifeng.javase.zuoye07;

public class Black_and_whitePrinter extends Printer {
    @Override
    public String printType() {
        return "打印黑白样式文章!";
    }

    public Black_and_whitePrinter() {
        this.setName("黑白打印机");
    }
}

彩色电视机类:

package com.ibeifeng.javase.zuoye07;

public class ColorPrinter extends Printer {
    @Override
    public String printType() {
        return "打印彩色的文章!";
    }

    public ColorPrinter() {
        //隐含super关键字,加载父类数据
        this.setName("彩色打印机");
    }
}

操作员:

package com.ibeifeng.javase.zuoye07;

public class Operator {
    public void print(Printer printer){
        System.out.println(printer.getName()+printer.printType());
    }

    public static void main(String[] args) {
        Operator operator=new Operator();
        operator.print(new ColorPrinter());
        operator.print(new Black_and_whitePrinter());
    }
}

打印:

package com.ibeifeng.javase.zuoye07;

public abstract class Printer {
    private String name;

    public String getName() {
        return name;
    }

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

    public abstract String printType();
}

instanceof:判断一个引用类型对象是否为该对象的实例。

抽象类:不能被实例化,(实例化必须有方法体)没有抽象构造方法,抽象类中可以有非抽象构造方法,

被子类构造方法调用

        抽象方法特点:没有方法体,必须在抽象类中;必须在子类中被实现,除非子类是抽象类。

向上转型:(自动转型)只能访问父类被子类继承的方法和属性。

        父类调用子类中重写方法,会执行子类中重写的方法体,父类可以被用作返回值或形参。

向下转型:父类引用转到子类对象(强制转换)。

package com.ibeifeng.javase.ketang06;

public class Tvs extends Goods {
   private String NAME="电视机";
    @Override
    double printPrice() {
        return 1000;
    }
   /*向上转型多用于方法参数及return返回参数,向下转型多用于对子类特有方法的使用
    *通过构造方法修改父类属性值,若子父类存在共性则不用进行判断,若为子类特性,则进行判断是哪个子类
    *若父类为高度抽象不需要写方法体时,可以用抽象类
    *     */
}
package com.ibeifeng.javase.ketang06;

public abstract class Goods {
    private String name;
    abstract double printPrice();

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
package com.ibeifeng.javase.ketang06;

public class Foods extends Goods {
    private String name="食品";
    @Override
    double printPrice() {
        return 100.0;
    }
}
package com.ibeifeng.javase.ketang06;

public class ShangJia {
    void print(Goods goods){
        double price=goods.printPrice();
        System.out.println(goods.getName()+"的价格是:"+price+"元");
    }

    public static void main(String[] args) {
       ShangJia shangJia=new ShangJia();
       shangJia.print(new Tvs());

    }
}

模拟选民投票demo1:

       选民类:

package com.ibeifeng.javase.mianxiangduixiang;

public class Voters {
    private static int count;
    private static int[] id = {};//注意:对象每次初始化,必须为静态变量,数组存值才不会改变!!!

    public int getCount() {
        return count;
    }

    public void votecount() {
        count++;
    }

    public  int[] getId() {
        return id;
    }

    public void setId(int id) {
        boolean flag = true;
        for (int i : getId()) {
            if (id == i && id > 0) {
                System.out.println("id号已存在!!");
                flag = false;//通过设置标签判断数组中是否存在重复id号
                break;
            }
        }
        if (flag) {
            int[] id0 = new int[getId().length + 1];
            for (int i =0;i<=getId().length-1;i++) {
                id0[i] = getId()[i];
            }
            id0[id0.length - 1] = id;
            this.id=new int[id0.length];//注意:getId()返回一个值,非赋值运算可以直接使用,但赋值运算必须用一个变量去接收它
            for(int i=0;i

程序入口:

package com.ibeifeng.javase.mianxiangduixiang;

import java.util.Arrays;

public class Vote {
    void runMoni(){
        for(int i=0;i<=110;i++){
            if (i>=100){
                break;
            }
            Voters voters=new Voters();
            int len=voters.getId().length;
            voters.setId(i);
            if(voters.getId().length!=len){//通过数组设置前后长度判断选民是否重复投票
                voters.votecount();
            }else {
                continue;//通过关键字continue设置是否跳过本次循环
            }
//            System.out.println(voters.getCount());
        }
    }
    public static void main(String[] args) {
        Vote vote=new Vote();
        vote.runMoni();
        Voters voters=new Voters();
        System.out.println("投票总数: "+voters.getCount());
        System.out.println(Arrays.toString(voters.getId()));
    }
}

电子宠物系统练习demo2:

程序入口:

package com.ibeifeng.javase.zuoye06;

import java.util.Scanner;

public class Epet {
    private int healthval = 60;
    private String type;
    private String name;
    private String sextype;
    private int qinmidu = 60;
    /*使用封装实现电子宠物系统的企鹅类正确输入健康值
     *保证健康值的有效性(0-100),否则取默认值60
     * 保证亲密度的有效性(0-100),否则取默认值60*/

    public int getHealthval() {
        return healthval;
    }

    public void setHealthval(int healthval) {

        if (healthval >= 1 && healthval <= 100) {
            this.healthval = healthval;
            setQinmidu(healthval);
        } else {
            System.out.print("健康值应该在0至100之间,默认值为:60.");
        }

    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        if (!type.equals("1") && !type.equals("2")) {
            System.out.println("请输入1/2选择宠物类型!!");
        } else {
            this.type = type;
            if (type.equals("1")) {
                System.out.print("请选择狗狗的品种:(1、泰迪犬 2、雪娜瑞犬):");
            } else {
                System.out.print("请选择企鹅的性别:(1、Q仔 2、Q妹):");
            }
        }
    }

    public String getName() {
        return name;
    }

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

    public String getSexType() {
        return sextype;
    }

    public void setSexType(String sextype) {
        if (!sextype.equals("1") && !sextype.equals("2")) {
            System.out.println("请输入1/2选择宠物性别或品种!!");
        } else if (sextype.equals("1") && type.equals("2")) {
            this.sextype = "Q仔";
        } else if (sextype.equals("2") && type.equals("2")) {
            this.sextype = "Q妹";
        } else if (sextype.equals("1") && type.equals("1")) {
            this.sextype = "泰迪犬";
        } else {
            this.sextype = "雪娜瑞犬";
        }
    }

    public int getQinmidu() {
        return qinmidu;
    }

    public void setQinmidu(int healthval) {
        this.qinmidu = healthval;
    }

    public void runpetshop() {
        String flag = "y";
        while (flag.equals("y")) {
            System.out.print("欢迎您来到宠物店!\n请输入要领养宠物的名字:");
            Scanner scan = new Scanner(System.in);
            String name = scan.next();
            setName(name);
            System.out.print("请选择要领养的宠物类型:(1、狗狗 2、企鹅):");
            String type = scan.next();
            setType(type);
            String sex = scan.next();
            setSexType(sex);
            if (this.type.equals("1")) {
                System.out.print("请输入狗狗的健康值(1-100之间):");
            } else {
                System.out.print("请输入企鹅的健康值(1-100之间):");
            }
            int healthvalue = scan.nextInt();
            setHealthval(healthvalue);
            if (this.type.equals("1")) {
                Dog g = new Dog();
                g.setName(this.name);
                g.setSexType(this.sextype);
                g.setHealthval(this.healthval);
                g.setQinmidu(this.qinmidu);
                System.out.println("\n宠物的自白:\n我的名字叫" + g.getName() + ",健康值是:"
                        + g.getHealthval() + ",和主人的亲密度是" + g.getQinmidu() + ",我是一只" + g.getType() + "。");
            } else {
                Penguin penguin = new Penguin();
                penguin.setName(this.name);
                penguin.setSexType(this.sextype);
                penguin.setHealthval(this.healthval);
                penguin.setQinmidu(this.qinmidu);
                System.out.println("\n宠物的自白:\n我的名字叫" + penguin.getName() + ",健康值是:"
                        + penguin.getHealthval() + ",和主人的亲密度是" + penguin.getQinmidu() + ",我是一只" + penguin.getSexType() + "。");
            }

            System.out.println("是否结束程序?y/n:");
            flag = scan.next();
            while (!flag.equals("y") && !flag.equals("n")) {
                System.out.println("请输入y/n:");
                flag = scan.next();
            }
        }
    }
    public static void main(String[] args) {
        Epet epet = new Epet();
        epet.runpetshop();
    }
}
/*参考输出:
欢迎您来到宠物店!
请输入要领养宠物的名字:欧欧
请选择要领养的宠物类型:(1、狗狗 2、企鹅):1
请选择狗狗的品种:(1、泰迪犬 2、雪娜瑞犬):2
请输入狗狗的健康值(1-100之间):100

宠物的自白:
我的名字叫欧欧,健康值是:100,和主人的亲密度是100,我是一只雪娜瑞犬。
是否结束程序?y/n:
y
欢迎您来到宠物店!
请输入要领养宠物的名字:豆豆
请选择要领养的宠物类型:(1、狗狗 2、企鹅):2
请选择企鹅的性别:(1、Q仔 2、Q妹):2
请输入企鹅的健康值(1-100之间):100

宠物的自白:
我的名字叫豆豆,健康值是:100,和主人的亲密度是100,我是一只Q妹。
是否结束程序?y/n:
n
*/

子类:狗类?

package com.ibeifeng.javase.zuoye06;

public class Dog extends Epet {
    private int healthval = 60;
    private String type;
    private String name;
    private String sex;
    private int qinmidu = 60;

    @Override
    public void setSexType(String sex) {
        this.sex = sex;
    }

    @Override
    public String getType() {
        return sex;
    }
}

子类:企鹅类?

package com.ibeifeng.javase.zuoye06;

public class Penguin extends Epet{
    private int healthval = 60;
    private String type;
    private String name;
    private String sex;
    private int qinmidu = 60;

    @Override
    public void setSexType(String sex) {
        this.sex = sex;
    }
    @Override
    public String getSexType() {
        return sex;
    }

}

接口:A implements B

接口中方法都是全局抽象方法,可以不需要abstract修饰,接口不能被实例化,类可以实现多个接口,接口中所有方法需要被重

写,接口中的变量默认都是全局静态常量public static final,接口中的方法,都是public修饰。

        优点:可以被多继承,多实现,设计和实现分离,更自然的使用多态,更容易搭建程序框架,更容易更换实现。

抽象类利于代码复用,接口利于代码维护。


异常处理:

ctrl+h:查看类的所有子类。

ctrl+alt+t:多行try-catch

面向对象(Java)_第1张图片

alt+enter:提示添加throw或try-catch异常

ctrl+o:重写父类方法

catch(形参类型:被捕获的异常类型),在异常代码中可以出现多个,异常范围大的放在最后,当出现多个catch捕获异常时,满足就近原则。

try-catch
try-catch-catch
try-finally
try-catch-finally

注意:若try中出现return,未出现异常,那么try-finally-return,出现异常则try-catch-finally(可以继续执行程序之后语句);若catch中出现return则try-catch-finally-return

在catch语句中执行break或return依然会执行finally(无论代码是否正常运行finally都会执行),但若执行System.exit(0)或System.exit(1)中断jvm虚拟机,则不执行finally代码块

System.err.println("加入用户自定义处理信息")

e.printStackTrace(); 打印异常堆栈信息
StringgerMessage(): 返回异常信息描述字符串,是printStackTrace()输出信息的一部分
Exception: 异常层次结构的父类
java.lang.ArithmeticException: 算术异常
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 数组越界异常
ClassNotFoundException: 不能加载所需类
illgalArgumentException: 方法接受到非法参数(前台接收数据传入后台)
Exception in thread "main" java.lang.ClassCastException: 对象强制类型转换异常
Exception in thread "main" java.lang.NullPointerException: 空指针异常 原因是由一个空值引用对象调用堆中变量造成
Exception in thread "main"java.lang.NumberFormatException: 数字格式化转换异常

java.lang.NoClassDefFoundError:  缺少jar包

object——>throwable——>Error:程序无法恢复的严重错误 ;Exception  ——>checked:程序必须处理的异常;RuntimeException:正常情况下会正常编译,但遇到特殊情况下会抛出异常

 

throw:方法体内,抛出异常对象(可以是原生异常,也可以是自定义异常),只能抛出一个异常,需要和throws一起使用。

throws:方法体外,声明方法内抛出的异常,可以抛出多个异常。

自定义异常:1.创建一个类继承Exception,throwable,runtimeException;2.重写Exception中构造方法;3.实例化异常对象;4.使用throw抛出异常

异常链:A----->B(抛出异常) A中抛出的异常对象包含了B中异常对象的信息并且两个不是同一个异常对象

自定义异常:

package com.ibeifeng.javase.yichang;

public class ZidingyiException extends Exception {//重写父类方法:ctrl+o ;查看类的所有子类:ctrl+h
    public ZidingyiException() {
        super();
    }

    public ZidingyiException(String message) {
        super(message);
    }

    public ZidingyiException(String message, Throwable cause) {
        super(message, cause);
    }

    public ZidingyiException(Throwable cause) {
        super(cause);
    }
}

throw、throws:

package com.ibeifeng.javase.yichang;

public class PersonAge {
    private int age;
    private String name;

    public int getAge() {
        return age;
    }

    public String getName() {
        return name;
    }

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

    //throws:方法体外,声明方法内抛出的异常,可以抛出多个异常
    public void setAge(int age) throws ZidingyiException {
        if (age < 100 && age > 0) {
            this.age=age;
        } else
//throw:方法体内,抛出异常对象(可以是原生异常,也可以是自定义异常),只能抛出一个异常,需要和throws一起使用。
            throw new ZidingyiException("年龄必须在1-100之间!");
    }
}

try-catch-finally

package com.ibeifeng.javase.yichang;
//查找类ctrl+n
public class AgeTest {
    public static void main(String[] args) {
        PersonAge personAge = new PersonAge();
        personAge.setName("千寻");
        try {//ctrl+alt+t:多行try-catch语句快捷键
            personAge.setAge(0);
            return;//注意:若出现异常,执行try-catch-finally并继续执行之后语句
        } catch (ZidingyiException e) {
            e.printStackTrace();

        } finally {
            System.out.println("主人公是:" + personAge.getName());
        }
        System.out.println("输出尾部!");
    }
}
/*
com.ibeifeng.javase.yichang.ZidingyiException: 年龄必须在1-100之间!
        at com.ibeifeng.javase.yichang.PersonAge.setAge(PersonAge.java:25)
        at com.ibeifeng.javase.yichang.AgeTest.main(AgeTest.java:8)
        主人公是:千寻
        输出尾部!*/

 

package com.ibeifeng.javase.mianxiangduixiang;

import java.util.Scanner;

public class Keyichang {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int i = 1;
        while (i >= 1 && i <= 3) {
            System.out.print("请输入1-3任意数字:");
            try {
                i = scanner.nextInt();
                switch (i) {
                    case 1:
                        System.out.println("C#编程");
                        break;
                    case 2:
                        System.out.println("Java");
                        break;
                    case 3:
                        System.out.println("Python");
                        break;
                    default:
                        System.out.println("注意仅能输入1-3任意数字!");
                }
            } catch (Exception e) {
                e.printStackTrace();
                System.exit(0);
            } finally {
                System.out.println("欢迎提出建议!");
            }
        }
    }
}
/*参考输出:
请输入1-3任意数字:1
        C#编程
        欢迎提出建议!
        请输入1-3任意数字:2
        Java
        欢迎提出建议!
        请输入1-3任意数字:3
        Python
        欢迎提出建议!
        请输入1-3任意数字:a
        java.util.InputMismatchException
        at java.util.Scanner.throwFor(Scanner.java:864)
        at java.util.Scanner.next(Scanner.java:1485)
        at java.util.Scanner.nextInt(Scanner.java:2117)
        at java.util.Scanner.nextInt(Scanner.java:2076)
        at com.ibeifeng.javase.ketanglianxi07.Keyichang.main(Keyichang.java:12)
        欢迎提出建议!*/

import java.util.*;

public class Cishu {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("请输入一段字符!");//任意输入一段字符,输出字符及其个数
        String next = s.next();
        System.out.println(next);
        HashMap hashMap = new HashMap();
        char[] chars = next.toCharArray();
        int num = 1;
        for (int i = 0; i < chars.length; i++) {
            if (hashMap.get(chars[i]) == null) {
                for (int j = i + 1; j < chars.length; j++) {
                    if (chars[i] == chars[j]) {
                        num++;
                    }
                }
                hashMap.put(chars[i], num);
                num = 1;
            }
        }
        Set set = hashMap.keySet();
        for (Object o : set) {
            System.out.println(o + "\t\t" + hashMap.get(o));
        }
    }
}
/*参考输出:
 *请输入一段字符!
yyyjjj****&&
yyyjjj****&&
&		2
y		3
j		3
*		4 */

 

package com.ibeifeng.javase.kaoshi;

import java.util.ArrayList;
import java.util.Collections;

public class Sort implements Comparable {
    private String school;
    private String area;
    private double score;
    private int xingji;

    public Sort(String school, String area, double score, int xingji) {
        this.school = school;
        this.area = area;
        this.score = score;
        this.xingji = xingji;
    }

    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }

    public String getArea() {
        return area;
    }

    public void setArea(String area) {
        this.area = area;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    public int getXingji() {
        return xingji;
    }

    public void setXingji(int xingji) {
        this.xingji = xingji;
    }

    public static void main(String[] args) {
        Sort sort1 = new Sort("北京大学", "北京", 100, 7);
        Sort sort2 = new Sort("清华大学", "北京", 98, 7);
        Sort sort3 = new Sort("复旦大学", "上海", 82, 7);
        Sort sort4 = new Sort("武汉大学", "湖北", 82, 6);
        Sort sort5 = new Sort("浙江大学", "浙江", 82, 5);
        Sort sort6 = new Sort("中国人民大学", "北京", 81.5, 5);
        Sort sort7 = new Sort("上海交通大学", "上海", 81, 5);
        Sort sort8 = new Sort("南京大学", "江苏", 80.9, 5);
        Sort sort9 = new Sort("国防科技大学", "湖南", 80, 5);
        Sort sort10 = new Sort("中山大学", "广东", 76, 4);
        ArrayList arrayList = new ArrayList();
        arrayList.add(sort1);
        arrayList.add(sort2);
        arrayList.add(sort3);
        arrayList.add(sort4);
        arrayList.add(sort5);
        arrayList.add(sort6);
        arrayList.add(sort7);
        arrayList.add(sort8);
        arrayList.add(sort9);
        arrayList.add(sort10);
        Collections.sort(arrayList);
        System.out.println(" " + "学校名称\t  所在地区\t 总分\t 星级排名");
        for (Sort s : arrayList) {
            if (s.getSchool().toCharArray().length > 4) {
                System.out.println(s.getSchool() + "\t\t" + s.getArea() + "\t\t" + s.getScore() + "\t\t" + s.getXingji());
            } else {
                System.out.println(" " + s.getSchool() + "\t\t" + s.getArea() + "\t\t" + s.getScore() + "\t\t" + s.getXingji());
            }
        }
    }
    @Override
    public int compareTo(Sort o) {
        Double score1 = this.getScore();
        Double score2 = o.getScore();
        Integer xingji1 = this.getXingji();
        Integer xingji2 = o.getXingji();
//        if (score1.compareTo(score2) != 0) {
//            return -score1.compareTo(score2);
//        } else
//            return -xingji1.compareTo(xingji2);
        /*三目运算:*/
        return score1.compareTo(score2) != 0 ? -score1.compareTo(score2) : -xingji1.compareTo(xingji2);
    }
}
/* 学校名称	  所在地区	 总分	 星级排名
 北京大学		北京		100.0		7
 清华大学		北京		98.0		7
 复旦大学		上海		82.0		7
 武汉大学		湖北		82.0		6
 浙江大学		浙江		82.0		5
中国人民大学		北京		81.5		5
上海交通大学		上海		81.0		5
 南京大学		江苏		80.9		5
国防科技大学		湖南		80.0		5
 中山大学		广东		76.0		4*/

 

不要忘记留下你学习的脚印 [点赞 + 收藏 + 评论]

一切看文章不点赞都是“耍流氓”,嘿嘿ヾ(◍°∇°◍)ノ゙!开个玩笑,动一动你的小手,点赞就完事了,你每个人出一份力量(点赞 + 评论)就会让更多的学习者加入进来!非常感谢! ̄ω ̄=

核心编程

技术交流请加微信~~:

面向对象(Java)_第2张图片 tchongyu

 

你可能感兴趣的:(面向对象,面向对象)