APP逆向 day8 JAVA基础3

news2024/10/7 9:24:20

一.前言

昨天我们讲了点java基础2.0,发现是又臭又长,今天就是java基础的最后一章,也就是最难的,面向对象。上一末尾也是提到了面向对象,但是面向对象是最重要的,怎么可能只有这么短呢?所以今天和大家讲讲面向对象中重要的东西,顺便再讲讲封装继承多态以及包。

二.类与对象

1.类与对象解释
 (1)类:
  类是实体对象的概念模型,是笼统的、不具体的,比如人类,动物类,鸟类
  类是描述了一组有相同特性(属性)和相同行为(方法)的一组对象的集合
 (2)对象:
  对象又称为【实体】,是类具体化的表现,如人类中有:厨师,学生,老师
  每个人对象都具有:姓名、年龄和体重这些属性,但是每个对象的姓名年龄又不相同
  每个对象都具有:说话,走路的方法
    
    
 2.java是完全的面向对象,没有面向过程
    所有代码都在类中定义---》java程序有入口--》类下main方法

2.1 类定义的规范

Java中类的定义规范
// []内可以省略,|表示或单两个关键字不能同时出现
[public] [abstract|final] class 类名class_name [extends 继承的类名] [implements 实现的接口名] {
    // 定义成员属性
    属性类型1 属性名1;  // String name; 
    属性类型2 属性名2;  // int age; 
    // 定义静态属性(类属性)
      static 属性类型 属性名;
    
    // 定义成员方法(对象方法,对象来调用的方法)
    public int add(int a,int b){
        return a+b;
    }
      // 定义静态方法(类方法,类来调用)
   public static void speak(){
        System.out.println("说话");
    }
 
}
// 解释
public :表示 公有 的意思。如果使用 public 修饰,则可以被其他类和程序访问。每个 Java 程序的主类都必须是 public 类,作为公共工具供其他类和程序使用的类应定义为 public 类
  
abstract :类被 abstract 修饰,则该类为抽象类,抽象类不能被实例化,但抽象类中可以有抽象方法(使用 abstract 修饰的方法)和具体方法(没有使用 abstract 修饰的方法)。继承该抽象类的所有子类都必须实现该抽象类中的所有抽象方法(除非子类也是抽象类)
  
final :如果类被 final 修饰,则不允许被继承
class :声明类的关键字
class_name :类的名称
extends :表示继承其他类

implements :表示实现某些接口

这里后面都会讲到,我就不给出示例代码了,要不然比上一期还又臭又长。

2.2 java类的属性

语法
[public|protected|private] [static][final] <变量类型> <变量名>
// 解释
public protected private :用于表示成员变量的访问权限 一会详细讲
static :表示该成员变量为类变量,也称为静态变量
final :表示将该成员变量声明为常量,其值无法更改 
变量类型 :表示变量的类型
变量名:表示变量名称

    
[public|protected|private] [static][final]  这些是既可以修饰类 又可以修饰属性吗
    public ,final abstract 修饰类
    public,protected,private static final 修饰属性

示例代码

public class main {
    // java类中的属性
}

class Person{
    public String name; 
    protected int age;
    private  String hobby;

    public static String school;
    protected static int age1;

    public static final String xx="往日情怀酿作酒"; // 常量
    static final String yy="往日情怀酿作酒";  // 类来用的常量
    final String zz="往日情怀酿作酒"; //对象来用的常量
}

2.3 java类中的方法 

这里类的方法就分为两种,一种是给类使用的,一种是给对象来使用的

1.语法
[public|private|protected] [abstract] [static]  <void|return_type><方法名>([参数]) {
        // 方法体
}

2.解释
public private protected :表示成员方法的访问权限
static :表示限定该成员方法为静态方法,一些公共方法,咱们可以定义为静态的
final :表示限定该成员方法不能被重写或重载
abstract :表示限定该成员方法为抽象方法。抽象方法不提供具体的实现,并且所属类型必须为抽象类

示例代码

public class main {

    public static void main(String[] args) {
        //对象来调用
        Person p1=new Person();
        p1.getname();
        System.out.println(p1.add(1,3));

        //类直接调用
        Person.stcgetname();
        System.out.println(Person.stcadd(1,3));
    }


}

class Person{
    public String name;

    //无返回值的 对象来调用
    public void getname(){
        System.out.println(this.name);
    }

    //无返回值的 类直接调用
    public static void  stcgetname(){
        System.out.println("往日情怀酿作酒");
    }

    //有返回值的 对象来调用
    public  int add(int a,int b){
        return a+b;
    }

    //有返回值的 类来调用
    public static int stcadd(int a,int b){
        return a+b;
    }


}

我们可以发现 static(静态方法就是类来直接调用的)

2.4 构造方法 

构造方法很特殊,构造方法与类名相同,不需要void,可以有多个表示不同的构造方法,他们之间的区别就是通过不同的参数来选择不同的,相当于实例化对象时执行

示例代码

public class main {

    public static void main(String[] args) {

        //调用哪个取决于参数
        Person p1=new Person();
        System.out.println(p1.name);

        Person p2=new Person("蔡徐坤");
        System.out.println(p2.name);

        Person p3=new Person("吴亦凡",38);
        System.out.println(p3.name);
        System.out.println(p3.age);

    }


}

class Person{

    public String name;
    public int age;

    public Person(String name){
        this.name=name;
    }

    public Person(){
        this.name="往日情怀酿作酒";
    }

    public Person(String name,int age){
        this.name=name;
        this.age=age;
    }

}

2.5 this关键字

只能写在类中方法中,但是不能是static修饰的方法--》可以是成员方法或构造方法

this 代指当前实例对象,等同与python的self,只不过python需要显示的传,而this不需要

示例代码其实前面都有,我就截个不能使用的图给大家看

2.6 访问控制修饰符

public  protected  public 访问权限控制修饰符 

成员属性,成员方法,静态属性,静态方法中都可以被修饰

tips:friendly不能写出来,代表的是默认 

1  private
用 private 修饰的类成员,只能被该类自身的方法访问和修改,而不能被任何其他类(包括该类的子类)访问和引用。因此,private 修饰符具有最高的保护级别


2 friendly(默认)
如果一个类没有访问控制符,说明它具有默认的访问控制特性。这种默认的访问控制权规定,该类只能被同一个包中的类访问和引用,而不能被其他包中的类使用,即使其他包中有该类的子类。这种访问特性又称为包访问性(package private)

3  protected
用保护访问控制符 protected 修饰的类成员可以被三种类所访问:该类自身、与它在同一个包中的其他类以及在其他包中的该类的子类。使用 protected 修饰符的主要作用,是允许其他包中它的子类来访问父类的特定属性和方法,否则可以使用默认访问控制符。
 
4 public
当一个类被声明为 public 时,它就具有了被其他包中的类访问的可能性,只要包中的其他类在程序中使用 import 语句引入 public 类,就可以访问和引用这个类

2.7 静态变量和静态方法 

也就是我们说的static 这里给出定义

在类中,使用 static 修饰符修饰的属性(成员变量)称为静态变量,也可以称为类变量,常量(final)称为静态常量,方法称为静态方法或类方法,它们统称为静态成员,归整个类所有。

静态成员不依赖于类的特定实例,被类的所有实例共享,就是说 static 修饰的方法或者变量不需要依赖于对象来进行访问,只要这个类被加载,Java 虚拟机就可以根据类名找到它们

********************静态变量*************************
类的成员变量可以分为以下两种:
    静态变量(或称为类变量),指被 static 修饰的成员变量
    实例变量(对象变量),指没有被 static 修饰的成员变量
    
    
********************静态方法********************
类的成员方法也可以分为以下两种:
    静态方法(或称为类方法),指被 static 修饰的成员方法
    实例方法(对象的方法),指没有被 static 修饰的成员方法

前面说的这么多,大家肯定都迷糊了,这里小小的总结一下 

1 类  class 定义的
2 对象 类实例化得到 ---》Person p =new Person();
3 属性,在类内部定义的变量:成员变量,静态变量,常量
        class Person{
            String name; // 成员变量--》对象的
            static String school // 静态变量--》类来用的(对象也可以用)
            final int age=100 ; // 常量--》给对象用的常量
            static final int xx=88;// 常量--》给类用的常量
            
        }

4 方法:成员方法,静态方法
        class Person{
             public void showName(){ // 成员方法
                
            }
            public static void showName1(){ // 静态方法
                
            }
        }
5 构造方法:类实例化自动触发
    Person p =new Person(); //自动触发构造方法
    class Person{
         public Person(){ // 无参构造方法    
            }
        }
6 静态属性 静态方法 刚刚讲过了

三.继承 

继承也是面向对象中十分重要的部分

Java中的继承,只支持单继承,不支持多继承,但支持实现多个接口 

3.1 继承的格式

在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下:

class 父类 {
}
 
class 子类 extends 父类 {
}
class 子子类 extends 子类 {
}

上一节其实已经给过示例代码了,这一节在上一节讲过的地方主要讲个概念,就不给出示例代码了,望理解

3.2 构造方法 

这里十分的绕,绕的简直离谱!特别重要!

 1 子类如果没写构造方法,默认使用父类无参构造
 2 子类如果没写构造方法,不会自动使用父类的有参构造
 3 如果父类中,只有有参构造,子类中必须写构造方法,并且要使用super调用父类的有参构造
    -父类的构造函数必须要被调用
    -子类的构造函数中的调用

读吧 绕死了!这里重点和大家说一下,别着急,一个个来

 1 子类如果没写构造方法,默认使用父类无参构造(这里给出截图让你们好理解,最后会发一个代码整合)

这个就是没子类没构造方法,使用父类的无参构造 

2 子类如果没写构造方法,不会自动使用父类的有参构造

可以看出这个,父类是有参构造,子类不写就会报错

 3 如果父类中,只有有参构造,子类中必须写构造方法,并且要使用super调用父类的有参构造

可以发现必须要调用super,这个就相当于调用父类中的方法,一会会重点讲这个

3.3 super和this关键字 

super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类
        -1 super 放在构造方法中使用户:代指父类super("名字")--->父类()--->Animal()
        -2 super代指父类对象---》父类对象.Speak()-->调用父类的Speak方法--》重写的方法:可以在父类方法上下加功能,或纯自己重写
            
this关键字:指向自己的引用

这里代码有点长,截图接不下,大家看看理解一下

public class main {
    public static void main(String[] args) {
        //子类如果没写构造方法,默认使用父类无参构造
        Cat cat1=new Cat("小野猫");
        System.out.println(cat1.name);
        cat1.speak();
    }
}
class Animai{
    String name;
    public Animai(String name){
        this.name=name;
    }
    public void speak(){
        System.out.printf("%s说话了\n",this.name);
    }
}
class Cat extends Animai{
    public Cat(String name) {
        //super代表调用父类的方法
        super("");
        //这里写上自己想写的代码
        this.name=name;
    }

    public void speak(){
        //super代表父类对象
        super.speak();
        //这个是基于父类创建的 相当于可以再再此基础上重写
        System.out.println("喵喵喵");
    }
}

运行截图

 

四.重写和重载 

上一节粗略的讲过,这里给出定义就好

1 重写(Override)是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写
    -必须有继承关系


2 重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同
    -被重载的方法必须改变参数列表(参数个数或类型不一样)
    -可以没有继承关系

 

五.接口

这里给出接口的介绍

1 java 不支持多继承,有情况下我们要重写的方法,在多个类中,就可以使用接口来实现类似于多继承的功能
    # python中
    class Animal:
        def run():
            pass 
    class B:
        def speak():
            pass
     class Person(Animal,B):
        # 自带run和speak
    java 中没有多继承
        接口 Animal:run方法,方法内不能写代码
        接口 B:speak方法,方法内不能写代码
        class Person 实现Animal和B接口---》Person就有run和speak

    
2 接口不是类,不能被实例化

3 接口中方法没有具体实现---》接口中方法是由实现接口的类来具体实现的

4 接口只是为了规范子类的行为(方法)
    -规定了子类必须有xx方法
    -没有具体实现

5.1 接口的声名 

[可见度] interface 接口名称 [extends 其他的接口名] {
        // 声明变量
        // 抽象方法

public class main {
    public static void main(String[] args) {

        Cat cat1=new Cat();
        cat1.run();

    }
}

interface Animal01{
    public void run();
}

interface Animal02{
    public void speak();
}


class Cat implements Animal01,Animal02{


    @Override //自动生成可以不写
    public void run() {
        //这里面写代码
    }

    @Override
    public void speak() {
        //这里面写代码
    }
}

5.2 接口的继承

接口可以继承接口 用extends 其中,实现的类中要实现继承中的两个方法

public class main {
    public static void main(String[] args) {

        
    }
}

interface Animal01{
    public void run();
}

interface Animal02 extends Animal01{
    public void speak();
}

class Cat implements Animal02{
    
    //必须实现两个接口中的方法
    
    @Override
    public void run() {
        
    }
    
    @Override
    public void speak() {

    }
}

六.抽象类 

抽象类,主要作为了解就行,其实和接口挺像的,抽象类主要是用来继承的,用abstract修饰

里面的抽象方法,也要用abstract修饰。

public class main {
    public static void main(String[] args) {
        

    }
}

abstract class Animal{ //抽象类主要是用来继承的

    //抽象类中的抽象方法,不需要具体实现
    public abstract void spqak();

    //抽象类中的抽象方法,有具体实现
    public void run(){
        System.out.println("跑跑跑");
    }

}

class Cat extends Animal{

    //抽象类中的方法必须实现
    @Override
    public void spqak() {
        
    }
}

七.封装 

java中一般不直接通过对象调用属性,而是通过方法来设置和获取属性【更安全】 
    - 之前这么用person.name,是不被推荐的
    ------这种是常见的-------
    - person.setName("往日情怀酿作酒")
    - person.getName() 

代码如下 

public class main {
    public static void main(String[] args) {

            Animal cat=new Animal("咪咪");
            System.out.println(cat.getName());
            //一般都不直接写 cat.name 不安全
            cat.setName("丧彪");
            System.out.println(cat.getName());
    }
}

class Animal{ //抽象类主要是用来继承的

    String name;

    public Animal(String name){
        this.name=name;
    }

    public String getName() {
        return name;
    }

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




}




运行截图

 

八.多态 

什么是多态?

多态是同一类事物[实例,对象]多种形态,从而调用同一类[实例,对象]方法时,表现出不同
    -什么算同一类?
        - 继承同一个父类
        - 实现同一个接口
    -多种形态?
        动物这一类:有 小野猫, 蔡徐坤人
        
    -属于同一类:有共同的方法
        动物,都能走路和说话
        小野猫,张三这个人,都能走路和说话
        人是人走路,狗是狗走路 

8.1 通过继承实现多态 

代码如下

public class main {
    public static void main(String[] args) {
        //通过继承实现多态
        Cat cat=new Cat();
        Person caixukun=new Person();

        // 多态---》不管具体类型是什么(Person,Cat)-->都当Father用
        Animal f1=cat;
        Animal f2=caixukun;

        //表现不一样,具体类型不一样
        f1.speak();
        f1.run();

        f2.speak();
        f2.run();

        // 在不考虑对象具体类型情况下使用对象--》就把它统一当父类的对象使用



    }
}

class Animal{

    public void speak(){
        System.out.println("动物说话的方法");
    }

    public void run(){
        System.out.println("动物跑的方法");
    }
}

class Cat extends Animal{

    public void speak(){
        System.out.println("小野猫说话的方法");
    }

    public void run(){
        System.out.println("小野猫跑的方法");
    }

}

class Person extends Animal{

    public void speak(){
        System.out.println("蔡徐坤说话的方法");
    }

    public void run(){
        System.out.println("蔡徐坤跑的方法");
    }

}

8.2 通过接口实现多态 

public class main {
    public static void main(String[] args) {

        Animal cat=new Cat();
        cat.run();
        cat.speak();
        
        Animal Caixukun=new Person();
        Caixukun.speak();
        Caixukun.run();

    }
}

interface Animal{
    void run();
    void speak();
}

class Cat implements Animal{

    @Override
    public void run() {
        System.out.println("小野猫跑咯");
    }

    @Override
    public void speak() {
        System.out.println("小野猫说话咯");
    }
}

class Person implements Animal{

    @Override
    public void run() {
        System.out.println("kunkun跑咯");
    }

    @Override
    public void speak() {
        System.out.println("kukun说话咯");
    }
}

tips:Object 类,所有类的父类
    所有类的对象,都可以赋值给Object类的对象
    这就是多态,把所有对象,都当成Object对象来用了 

九.包

9.1 创建包 

 

9.2 引用包并使用

具体这样使用

 

十.总结 

这一期完整的讲了面向对象,面向对象还是在基础中比较难的,还是又臭又长。没办法,这都是学app逆向所必备的,加油吧!

十一.下期预告 

下期我们就说安卓开发基础,这个大概也是两天的课程量。我们还是只讲基础,主要就是看得懂为主!

 补充

如有需要学习资料和交流加我绿泡泡

这里插入一条广告(希望理解一下,养家糊口)!!!

有需要逆向需求或者是项目,课设等等,都能找我接单,麻烦大家了

公众号(后续会更新相关文章) 

 期待你的关注!

 

 

 

         

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1883381.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎样将word默认Microsoft Office,而不是WPS

设置——>应用——>默认应用——>选择"word"——>将doc和docx都选择Microsoft Word即可

【嵌入式DIY实例】- LCD ST7735显示DHT11传感器数据

LCD ST7735显示DHT11传感器数据 文章目录 LCD ST7735显示DHT11传感器数据1、硬件准备与接线2、代码实现本文介绍如何将 ESP8266 NodeMCU 板 (ESP-12E) 与 DHT11 (RHT01) 数字湿度和温度传感器连接。 NodeMCU 从 DHT11 传感器读取温度(以 C 为单位)和湿度(以 rH% 为单位)值,…

连锁品牌如何做宣传?短视频矩阵工具助轻松千万流量曝光!

今天给大家分享一家烘焙行业连锁品牌&#xff08;可可同学&#xff09;&#xff0c;通过小魔推获得了1031万的话题曝光&#xff0c;旗下的连锁门店登顶同城人气榜单第一名&#xff0c;​让自己的流量和销量获得双增长 01 品牌连锁店如何赋能旗下门店&#xff1f; 作为一家全国…

昇思25天学习打卡营第13天|基于MobileNetV2的垃圾分类

MobileNetv2模型原理介绍 相比于传统的卷积神经网络&#xff0c;MobileNet网络使用深度可分离卷积&#xff08;Depthwise Separable Convolution&#xff09;的思想在准确率小幅度降低的前提下&#xff0c;大大减小了模型参数与运算量。并引入宽度系数α和分辨率系数β使模型满…

【面试题】IPS(入侵防御系统)和IDS(入侵检测系统)的区别

IPS&#xff08;入侵防御系统&#xff09;和IDS&#xff08;入侵检测系统&#xff09;在网络安全领域扮演着不同的角色&#xff0c;它们之间的主要区别可以归纳如下&#xff1a; 功能差异&#xff1a; IPS&#xff1a;这是一种主动防护设备&#xff0c;不仅具备检测攻击的能力&…

利用pyecharts制作2023全国GDP分布图

完整代码&#xff1a; from pyecharts import options as opts from pyecharts.charts import Map import pandas as pddf pd.read_excel(各省份GDP.xlsx) # print(df.head())year 2023 info df[[省份,year]] # print(info)info_list info.values.tolist() print(info_lis…

YTM32的HA系列微控制器启动过程详解

YTM32的HA系列微控制器启动过程详解 文章目录 YTM32的HA系列微控制器启动过程详解IntroductionPricinple & MachenismHA01的内存地址空间BOOT ROM简介安全启动Security Boot快速从Powerdown模式下唤醒对内核进行例行自检&#xff08;Structural Core Self-Test&#xff0c;…

Python容器 之 字符串--下标和切片

1.下标&#xff08;索引&#xff09; 一次获取容器中的一个数据 1, 下标(索引), 是数据在容器(字符串, 列表, 元组)中的位置, 编号 2, 一般来说,使用的是正数下标, 从 0 开始 3, 作用: 可以通过下标来获取具体位置的数据. 4, 语法&#xff1a; 容器[下标] 5, Python 中是支持…

SuperMap GIS基础产品FAQ集锦(20240701)

一、SuperMap iDesktopX 问题1&#xff1a;对于数据提供方提供的osgb格式的数据&#xff0c;如何只让他生成一个s3mb文件呢&#xff1f;我用倾斜入库的方式会生成好多个s3mb缓存文件 11.1.1 【解决办法】不能控制入库后只生成一个s3mb文件&#xff1b;可以在倾斜入库的时候设…

基于Java实现图像浏览器的设计与实现

图像浏览器的设计与实现 前言一、需求分析选题意义应用意义功能需求关键技术系统用例图设计JPG系统用例图图片查看系统用例图 二、概要设计JPG.javaPicture.java 三、详细设计类图JPG.java UML类图picture.java UML类图 界面设计JPG.javapicture.java 四、源代码JPG.javapictur…

Leetcode.1735 生成乘积数组的方案数

题目链接 Leetcode.1735 生成乘积数组的方案数 rating : 2500 题目描述 给你一个二维整数数组 q u e r i e s queries queries &#xff0c;其中 q u e r i e s [ i ] [ n i , k i ] queries[i] [n_i, k_i] queries[i][ni​,ki​] 。第 i i i 个查询 q u e r i e s [ i …

Esxi硬件日志告警

原创作者&#xff1a;运维工程师 谢晋 Esxi硬件日志告警 故障描述故障处理 故障描述 主机报错硬件对象状态告警 在Esxi监控硬件内发现Systemctl Manager Module 1 Event log 0报警&#xff0c;该报警是Esxi事件日志保存空间满了&#xff0c;需要清理空间。 故障处理 开启…

整除分块的题目

链接 思路&#xff1a; 求1到n中的因数个数和等价于求,设x为因子&#xff0c;就是求x在1到n里出现了几次&#xff0c;求1到n里是x的倍数的数有几个&#xff0c;即n/x。需要用整除分块&#xff0c;n/i的值是分块分部的&#xff0c;右端点是n/&#xff08;n/i&#xff09;。 代…

相机网线RJ45连接器双端带线5米8芯绿色网线注塑成型

相机网线RJ45连接器双端带线5米8芯绿色网线注塑成型&#xff0c;这款网线采用了环保的绿色材质&#xff0c;线长5米&#xff0c;足够满足大多数拍摄场景的需求。更重要的是&#xff0c;它采用了8芯设计&#xff0c;保证了数据传输的稳定性和高速性。在接口方面&#xff0c;它采…

转转回收的持久层架构演进

1 前言 我们在大部分开发场景下&#xff0c;对持久层的建设基于单库单表其实就可以实现当前的产品需求。但是随着业务发展越来越久&#xff0c;数据量、请求量也在不断的增加&#xff0c;只是单库单表可能不足以支撑系统的稳定运行&#xff0c;本文主要给大家分享一下笔者在项…

mac安装达梦数据库

参考&#xff1a;mac安装达梦数据库​​​​​​ 实践如下&#xff1a; 1、下载达梦Docker镜像文件 同参考链接 2、导入镜像 镜像可以随便放在某个目录&#xff0c;相当于安装包&#xff0c;导入后就没有作用了。 查找达梦镜像名称&#xff1a;dm8_20240613_rev229704_x86…

EHS管理系统避坑指南!这几个关键点需要注意!

在企业管理中&#xff0c;环境、健康和安全&#xff08;EHS&#xff09;占据着举足轻重的地位&#xff0c;而EHS管理系统则是推动EHS管理走向高效与规范的核心工具。因此&#xff0c;选择一个与企业需求相契合的EHS管理系统&#xff0c;对于维护员工健康、保护环境安全以及提升…

C#——Property属性详情

属性 属性&#xff08;Property&#xff09;是类&#xff08;class&#xff09;、结构体&#xff08;structure&#xff09;和接口&#xff08;interface&#xff09;的成员&#xff0c;类或结构体中的成员变量称为字段&#xff0c;属性是字段的扩展&#xff0c;使用访问器&am…

算法实验2.2、2.3

2.2主要内容 比较快速排序&#xff0c;归并排序以及堆排序算法的时间效率。了解影响算法执行时间的 主要因素以及如何降低算法的执行时间。 #include<iostream> using namespace std; #include<stdio.h> #include<malloc.h> #include<stdlib.h> #inc…

Gradle学习-4 创建二进制插件工程

二进制插件工程创建有两种方式&#xff1a; 创建独立的工程&#xff0c;调试的时候&#xff0c;需要手动发布成一个二进制插件jar包&#xff0c;给其他工程里面引用&#xff0c;进行功能测试。这种方式是比较麻烦的。创建buildSrc子工程&#xff0c;它是一个大工程中的子工程&…