黑马程序员_92_反射

嵌入式笔试面试题库 250 题|13 章从 C 语言到 FreeRTOS,每题带追问 面试里有两类问题。第一类问「static 有几个作用」,第二类问「串口丢数据你怎么查」。第一类决定你能不能进二面,第二类决定二面之后还有没有下文。 这份合并版 250 题、13 章,把上篇与下篇收在一本: · 上篇 130 题(一至六章):单片机与体系结构、C 语言关键字、指针与内存、位运算与寄存器、中断与并发、编译链接与内存布局; · 下篇 120 题(七至十三章):GPIO 与时钟、定时器与 ADC、串口 I2C SPI、DMA 与中断、FreeRTOS、通信协议与总线、项目与工程实践。 每题结构一致:一段分点参考答案(①②③ 给要点骨架),紧跟一条追问,写明面试官往下会挖哪一层。答案尽量落到三层——现象、根因、验证方法。比如「PWM 出不来波形」,不只列六项检查顺序,还说清为什么 TIM1 容易漏掉 MOE 这一位、怎么用示波器确认。 三个附录:A 是 40 天复习路线(每天 40 分钟,标每天题量与当章重点);B 是十三章自测评分表(现象 / 根因 / 验证三列打分);C 是按现象查题的排障索引,遇到具体问题直接定位到题号。 交付:Word 可编辑版 + PDF 打印版(A4 / 70 页)+ 使用说明。题号连续 Q001–Q250,目录与附录各一套,跨篇追问能顺着查。 说明:寄存器位定义与分频关系按 STM32F103 系列整理,换 F4/F7/G0 需按对应手册核对;FreeRTOS 部分按 10.x 之后接口描述。题库不替代动手调试。 立即下载

 ——- android培训、java培训、期待与您交流! ———-

概述

JAVA反射机制是在运行状态中,对于任意一个类(class文件),都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象方法的功能称为java语言的反射机制。

动态获取类中信息,就是java反射。可以理解为对类的解剖。

如果想要对指定名称的字节码文件进行加载并获取其中的内容并调用,这时就使用到了反射技术。

所谓的框架就是对外提供一些接口,也就是功能扩展的标准,由实现类按照这个接口标准去实现。框架内部如果需要操纵这些实现类的对象完成某些操作,那么只需要把这些实现类的全名(包名+类名)写在某个配置文件中,框架代码只需要读取这个配置文件,就可以获取这个实现类的字节码文件,然后利用反射技术创建这个实现类的对象并且调用相应的方法完成一些操作。

用于描述字节码的类就是Class类,创建对象,可以提取字节码文件中的内容,如字段、构造函数、一般函数。
该类就可以获取字节码文件中的所有内容,那么反射就是依靠该类完成的。想要对一个类文件进行解剖,只要获取到该类的字节码文件对象即可。

演示

示例
获取字节码文件对象的3种方式
Person.java


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

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

                System.out.println("Person param run..." + this.name + ":" + this.age);
        }

        public Person(){
                super();

                System.out.println("person run");
        }

        public void show(){
                System.out.println(name + "...show run..." + age);
        }

        private void privateMethod(){
                System.out.println("method run");
        }

        public void paramMethod(String str,int num){
                System.out.println("paramMethod run..." + str + ":" + num);
        }

        public static void staticMethod(){
                System.out.println("static method run...");
        }
}

ReflectDemo.java

import cn.itcast.bean.Person;

//要想要对字节码文件进行解剖,必须要有字节码文件对象。
public class ReflectDemo
{
        public static void main(String[] args) throws ClassNotFoundException {
                getClassObject_1();
                System.out.println("--------------------");
                getClassObject_2();
                System.out.println("--------------------");
                getClassObject_3();
        }

   /*
        * 获取字节码对象的方式:
        * 方式一:Object类中的getClass()方法的。
        * 想要用这种方式,必须要明确具体的类,并创建对象。
        * 麻烦。
        */
        public static void getClassObject_1(){

                Person p = new Person();
                Class clazz = p.getClass();

                Person p1 = new Person();
                Class clazz1 = p1.getClass();

                System.out.println(clazz == clazz1);
        }

        /*
        * 方式二:任何数据类型都具备一个静态的属性.class来获取其对应的Class对象。
        * 相对简单,但是还是要明确用到类中的静态成员。
        * 还是不够扩展。
        */
        public static void getClassObject_2(){

                Class clazz = Person.class;
                Class clazz1 = Person.class;

                System.out.println(clazz == clazz1);
        }

        /*
        * 方式三:只要通过给定的类的字符串名称就可以获取该类,更为扩展。
        * 可以用Class类中的方法完成。
        * 该方法就是forName。
        * 这种方法只要有名称即可,更为方便,扩展性更强。
        */
        public static void getClassObject_3() throws ClassNotFoundException {

                //可以把类的字符串名称写到配置文件中,然后读取出来。
                String className = "cn.itcast.bean.Person";
                Class clazz = Class.forName(className);

                System.out.println(clazz);
        }
}

运行结果图
这里写图片描述
示例2
获取Class中的构造函数

import cn.itcast.bean.Person;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class ReflectDemo
{
        public static void main(String[] args) throws Exception {
                createNewObject_1();
                System.out.println("--------------------");
                createNewObject_2();
        }

        public static void createNewObject_1() throws ClassNotFoundException,InstantiationException,IllegalAccessException {
                //早期:new时候,先根据被new的类的名称找寻该类的字节码文件,并加载进内存,
                //并创建该字节码文件对象,并接着创建该字节文件的对应的Person对象。
                //Person p = new Person();

                //现在:
                String name = "cn.itcast.bean.Person";
                //找寻该文件类文件,并加载进内存,并产生Class对象。
                Class clazz = Class.forName(name);
                //如何产生该类的对象呢?
                Object obj = clazz.newInstance();//调用Person的空参构造函数
        }

        public static void createNewObject_2() throws ClassNotFoundException,InstantiationException,NoSuchMethodException,IllegalAccessException,InvocationTargetException {

                //Person p = new Person("小强",39);

                /*
                * 当获取指定名称对应类中的所体现的对象时。
                * 而该对象初始化不使用空参数构造函数该怎么办呢?
                * 既然是通过指定的构造函数进行对象的初始化。
                * 所以应该先获取到该构造函数,通过字节码文件对象即可完成。
                * 该方法是:getConstructor(parameterTypes);
                */

                String name = "cn.itcast.bean.Person";
                //找寻该名称类文件,并加载进内存,并产生Class对象。
                Class clazz = Class.forName(name);
                //获取到了指定的构造函数对象
                Constructor constructor = clazz.getConstructor(int.class,String.class);
                //通过该构造器对象的newInstance方法进行对象的初始化。
                Object obj = constructor.newInstance(38,"小明");
        }
}

运行结果图
这里写图片描述
示例3
获取Class的字段

import cn.itcast.bean.Person;
import java.lang.reflect.Field;

public class ReflectDemo
{
        public static void main(String[] args) throws Exception {
                getFieldDemo();
        }

        /*
        * 获取字节码文件中的字段。
        */
        public static void getFieldDemo() throws Exception {

                Class clazz = Class.forName("cn.itcast.bean.Person");

                //getField只能获取所有可访问公共字段,private获取不到。
                //Field field = claszz.getField("age");

                //getDeclaredField可以获取到公共字段,也可以获取到私有字段。
                Field field = clazz.getDeclaredField("age");

                //对私有字段的访问取消权限检查,暴力访问。
                field.setAccessible(true);

                Object obj = clazz.newInstance();

                //为对象的属性赋值
                field.set(obj,89);

                //获取某对象的某属性值
                Object o = field.get(obj);

                System.out.println(field);
        }
}

运行结果图
这里写图片描述
示例4
获取Class中的方法

import cn.itcast.bean.Person;
import java.lang.reflect.Method;
import java.lang.reflect.Constructor;

public class ReflectDemo
{
        public static void main(String[] args) throws Exception {
                getMethodDemo_1();
                System.out.println("---------------------------");
                getMethodDemo_2();
                System.out.println("---------------------------");
                getMethodDemo_3();
        }

        /*
        * 获取指定Class中的公共函数。
        */
        public static void getMethodDemo_1() throws Exception {

                Class clazz = Class.forName("cn.itcast.bean.Person");

                Method[] methods = clazz.getMethods();//获取的都是公有的方法

                methods = clazz.getDeclaredMethods();//只获取本类中所有方法,包括私有。

                for(Method method : methods){
                        System.out.println(method);
                }
        }

        public static void getMethodDemo_2() throws Exception {

                Class clazz = Class.forName("cn.itcast.bean.Person");

                Method method = clazz.getMethod("show",null);//获取空参数一般方法

                Object obj = clazz.newInstance();

                Constructor constructor = clazz.getConstructor(int.class,String.class);
                obj = constructor.newInstance(37,"小明");

                method.invoke(obj,null);
        }

        public static void getMethodDemo_3() throws Exception {

                Class clazz = Class.forName("cn.itcast.bean.Person");

                Method method = clazz.getMethod("paramMethod",String.class,int.class);//获取空参数一般方法

                Object obj = clazz.newInstance();

                Constructor constructor = clazz.getConstructor();
                obj = constructor.newInstance();

                method.invoke(obj,"小强",89);
        }
}

运行结果图
这里写图片描述

练习

PCI.java

package cn.itcast.reflect.test;

public interface PCI
{
        public void open();
        public void close();
}

SoundCard.java

package cn.itcast.reflect.test;

public class SoundCard implements PCI
{
        public void open(){
                System.out.println("sound open");
        }

        public void close(){
                System.out.println("sound close");
        }
}

NetCard.java

package cn.itcast.reflect.test;

public class NetCard implements PCI
{
        public void open(){
                System.out.println("net open");
        }

        public void close(){
                System.out.println("net close");
        }
}

Mainboard.java

package cn.itcast.reflect.test;

public class Mainboard
{
        public void run(){
                System.out.println("main board run...");
        }

        public void usePCI(PCI p){
                if(p != null){
                        p.open();
                        p.close();
                }
        }
}

pci.Properties

pci1=cn.itcast.reflect.test.SoundCard
pci2=cn.itcast.reflect.test.NetCard

ReflectTest.java

package cn.itcast.reflect.test;

import java.io.File;
import java.io.FileInputStream;

import java.util.Properties;

/*
* 电脑运行
*/
public class ReflectTest
{
        public static void main(String[] args) throws Exception {

                Mainboard mb = new Mainboard();

                mb.run();
                //每次添加一个设备都需要修改代码传递一个新创建的对象
                //mb.usePCI(new SoundCard());
                //能不能不修改代码就可以完成这个动作
                //不用new完成,而是只获取其class文件,在内部实现创建对象的动作。

                File configFile = new File("pci.properties");

                Properties prop = new Properties();
                FileInputStream fis = new FileInputStream(configFile);

                prop.load(fis);

                for(int x = 0; x < prop.size(); x++){

                        String pciName = prop.getProperty("pci" + (x + 1));

                        Class clazz = Class.forName(pciName);//用Class去加载这个pci子类

                        PCI p = (PCI)clazz.newInstance();

                        mb.usePCI(p);
                }

                fis.close();
        }
}

运行结果图
这里写图片描述

政府科技管理者如何提升科技成果评估的准确性与透明度?.docx 政府科技管理者如何提升科技成果评估的准确性与透明度? 立即下载

相关推荐

双闭环PWM整流器VOC控制 +SVPWM调制仿真(Simulink仿真实现)

内容概要:本文详细介绍了基于Simulink平台构建的双闭环PWM整流器VOC(虚拟磁链定向控制)与SVPWM(空间矢量脉宽调制)相结合的仿真模型,系统阐述了三相电压型PWM整流器在电压定向控制策略下的建模方法与控制实现。通过设计外环直流电压控制与内环电流控制的双闭环结构,实现了对整流器的高功率因数运行、能量双向流动及动态性能优化的精确调控。结合SVPWM调制技术,有效提升了直流侧电压利用率并显著降低输出电流谐波含量,增强了系统的整体效率与稳定性。该仿真模型适用于新能源发电、电动汽车充电系统、微电网等高性能电能变换应用场景,文档还配套提供了丰富的学习资源与技术支持渠道,便于深入研究与工程实践。; 适合人群:面向电气工程、自动化、电力电子及相关专业的高校学生、科研人员以及从事新能源、智能电网、电力传动等领域研发工作的工程师;尤其适合已具备自动控制理论、电力电子变换技术和MATLAB/Simulink仿真基础的专业人士进一步深化学习与应用。; 使用场景及目标:①深入理解PWM整流器的工作机理及其双闭环控制系统的架构设计;②掌握VOC控制与SVPWM调制的协同工作机制,提升系统动静态响应性能;③支撑科研课题、课程设计、毕业设计或实际工程项目中的整流器控制系统开发与验证;④作为高级电能变换技术的学习范例,促进对现代电力电子系统控制策略的综合理解与创新能力培养。; 阅读建议:建议结合文中提供的百度网盘链接与公众号资源,下载完整的Simulink仿真模型进行实操演练,在MATLAB环境中调整控制器参数并观察仿真结果,深入剖析控制逻辑与系统响应特性;同时可参考同系列资源如PI双闭环控制、电网不平衡工况下的控制策略等案例,开展对比分析与拓展研究,全面提升系统建模与控制设计的综合能力。

JVM黑马版:笔记、应用、速查

由于工作中时常和JVM打交道,但是对JVM的体系缺乏系统深入了解。日前跟随b站上黑马程序猿的课程成体系地学习了JVM,结合工作中的实践写就了此笔记。

大吉的博客 2148

深度学习——VGG16模型详解

1、网络结构 VGG16模型很好的适用于分类和定位任务,其名称来自牛津大学几何组(Visual Geometry Group)的缩写。 根据卷积核的大小核卷积层数,VGG共有6种配置,分别为A、A-LRN、B、C、D、E,其中D和E两种是最为常用的VGG16和VGG19。 介绍结构图: conv3-64 :是指第三层卷积后维度变成64,同样地,conv3-128指的是第三层卷积后维度变成128; input(224x224 RGB image) :指的是输入图片大小为224244的彩色图像,通道为

橙子的博客 12万+

2026拍照手机选购指南:视觉生产力时代的硬核决策框架

手机摄影已从‘能拍清楚’迈入‘可信视觉生产力’新阶段——其核心是计算摄影、硬件鲁棒性与AI可控性的系统协同。理解传感器有效感光面积、算法可信度分级(L1-L3)、连续拍摄散热衰减曲线等底层原理,才能穿透参数迷雾,识别真实成像能力。技术价值体现在日常记录(如菜市场逆光抓拍)、小微商用(Pantone色准直出)、视频创作(Log+10bit实时LUT)等高频场景中。尤其在2026年长周期使用背景下,‘性价比’本质是(有效成像时长×成片可用率)÷购机成本,而非像素或倍数堆砌。本文基于42款主力机型实测,聚焦OV5

coolmsn8786的博客 355

NOIP2008年普及组初赛题目答案及解析

NOIP2008年初赛详细题解

城南蝈蝈 926

AI开发助手介绍

AI开发助手介绍随着NLP方向发展越来越成熟,AI写代码领域出现了几个非常好的模型,今天笔者给大家推荐几个AI Coding 助手AI Coding助手是以IDEA插件或vim插件形式提供服务,在编辑器中写代码时,可以实时预测下一行要输入的代码,提升开发效率。Github Copilot首先要介绍的是Github Copilot,Copilot是个AI Coding助手,它从注释和代码中提取上下文,给出单行和整个函数的代码建议,Copilot由Open AI 的CodeX模型提供支持,它是一个由OpenAI

bobo_simpler的博客 5765

黑马程序员_日记8_JavaSE阶段性习题练习及复习

——- android培训、java培训、期待与您交流! ———-JAVASE阶段性习题练习及复习这篇博客主要是把毕老师出的前四大练习题全部做了一遍,经我反复测试和修改后写得一些JAVASE基础总结。 练习一 已知学生成绩以100分为满分,共分5个等级:A,B,C,D,E。 90~100为等级A,80~89为等级B,70~79为等级C, 60~69为等级D,0~59为等级E。

itheima_1llt的专栏 3599

C++开发基础之掌握常用的三种异步编程模型

以上是三种常见的C++异步编程模型,每种模型都有其适用的场景和特点。根据具体需求,你可以选择合适的模型来进行异步编程。

dotnet研习社 2175

黑马程序员_日记27_JavaString类型的数字排序问题

——- android培训、java培训、期待与您交流! ———-输入一int型的数字字符串 用空格间隔,从小到大排序后,以字符串返回。 “12 0 99 -7 30 4 100 13” 要求对字符串中的数值进行排序。生成一个数值从小到大新字符串。“-7 0 4 12 13 30 99 100”分析: 1 用split方法把字符串切割成String[]类型的数组。 2 把String[]数组

itheima_1llt的专栏 2677

codesys【modbusRTU】主站

【代码】modbusRTU【codesys】

cfqq1989的博客 4371

Greenplum基础

CREATE DATABASE 是 SQL 命令,用于创建一个新的数据库。name 是你要创建的数据库的名称。这个名称是必须的,并且在同一个数据库服务器上必须是唯一的。可选项,OWNER 指定了新数据库的所有者,如果未指定,新数据库的所有者默认是执行该命令的用户。dbowner 是数据库所有者的用户名。可选项,TEMPLATE 指定了用于创建新数据库的模板。在 PostgreSQL 和 GreenPlum 中,通常有一个名为 template1 的默认模板。如果不指定,就会使用这个默认模板。

m0_57697768的博客 1206

黑马程序员_日记25_Java两个字符串的最大相同子串

——- android培训、java培训、期待与您交流! ———-/* 获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印。 "abcwerthelloyuiodef" "cvhellobnm"模拟一下: 第一趟: 最大子串:cvhellobnm ↑--------↑ 在长字符串中查找 abcwerthelloyuiodef ↑---

itheima_1llt的专栏 784

(一)激光线扫描-三维成像原理

激光线扫描是一种使用激光作为光源,通过特定的扫描设备(如光学镜头、电机驱动的镜头或电子扫描设备)将激光束引导到目标表面,并按照预定的路径进行扫描的技术。这种技术通常用于测量、检测、打印、切割等多种应用中。

FlyWine的博客 3629

黑马程序员_日记26_Java字典序排序练习

——- android培训、java培训、期待与您交流! ———-对字符串中字符进行自然顺序排序。 例如,”vcz1bdAa+cs”–>abccdsvz 思路: 1 把字符串变成字符数组 2 对数组进行排序 3 找到字符数组中’a’第一次出现的位置找到 4 计算要转换的字符个数 5 把字符数组变成字符串import java.util.Arrays; class StringSortD

itheima_1llt的专栏 755

笔试题-2023-加特兰-数字IC设计【纯净题目版】

笔试题-2023-加特兰-数字IC设计【纯净题目版】

w0shishabi的博客 2248

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

黑马程序员_日记33_Java迭代器基本使用

——- android培训、java培训、期待与您交流! ———-迭代器Iterator测试查阅API,得到迭代器的基本常识: 对 collection 进行迭代的迭代器。迭代器取代了 Java Collections Framework 中的 Enumeration。迭代器与枚举有两点不同: 迭代器允许调用者利用定义良好的语义在迭代期间从迭代器所指向的 collection

itheima_1llt的专栏 747

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

黑马程序员_日记2--Java数组

——- android培训、java培训、期待与您交流! ———-数组复习总结一、数组的定义数组的概念所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序

itheima_1llt的专栏 716

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

黑马程序员_日记9_Java学习感言

——- android培训、java培训、期待与您交流! ———-学习感言原计划快速看一遍JAVASE视频复习一下,然后直接面试。但是从16号到今天,已经10天了,我才刚刚完成10天的学习。冷静下来,仔细想想还是方法有问题。前段时间听课都没有压力,也就没有经常动手练习,但是累积到做练习四的时候,才发现并不是很熟练,于是沉下心来花了2天的时间回头把所有的练习都不使用eclipse运行一遍,现在感觉基础

itheima_1llt的专栏 713

黑马程序员_日记21_JavaString常用方法

——- android培训、java培训、期待与您交流! ———-String类用来描述字符串,它提供了许多的方法来操作字符串。 那么,在String众多的方法中,常用的方法有哪些呢??1 获取1.1 字符串的长度int length(); 示例:String str = "abcdefg"; str.length();注意不是str.length;1.2 根据索引获取字符char c

itheima_1llt的专栏 662

黑马程序员_日记59_TreeMap自定义对象练习

——- android培训、java培训、期待与您交流! ———-TreeMap自定义对象存取练习需求:每一个学生都有对应的归属地。 学生Student,地址String。 学生属性:姓名,年龄。 注意:姓名和年龄相同的视为同一个学生。 保证学生的唯一性。 对学生对象的年龄进行升序排序,用Comparable实现; 对学生的姓名进行字典序排序,用Comparator实现。因为数据是以键值

itheima_1llt的专栏 626

黑马程序员_90_网络编程Socket

——- android培训、java培训、期待与您交流! ———-概述网络参考模型OSI(Open System Interconnection 开放系统互连)参考模型 TCP/IP 参考模型 图示如下 七层模型 1. 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化

itheima_1llt的专栏 611

黑马程序员_日记22_JavaStringTrim练习

——- android培训、java培训、期待与您交流! ———-1,模拟一个trim方法,去除字符串两端的空格。分析:1、明天功能的结果,去除字符串两端的空格。String 2、有没有未知参数??被改变的字符串String str思路: 1 当左边是空格时循环判断,直到不是空格结束,记录该脚标; 2 当右边是空格时循环判断,直到不是空格结束,记录该脚标; 3 以上条件,当

itheima_1llt的专栏 610

黑马程序员_日记16_Java多线程(六)

——- android培训、java培训、期待与您交流! ———-死锁一、基本概念死锁是什么呢? 两个线程分别持有一个资源, 并同时请求得到对方的资源。 在这种情况下产生的不正常情况就叫做死锁。死锁在什么情况下会发生呢? 死锁在同步嵌套同步的情况下会发生。 至少有2把锁,才会产生死锁。二、死锁实例1首先,以前面售票的例子展示一下死锁。class Ticket implements Runn

itheima_1llt的专栏 591

黑马程序员_日记10_Java包

——- android培训、java培训、期待与您交流! ———- 包(package) 一、创建包 二、包的引用 1 包与包之间的访问 2 加载需要使用的类 3 加载其他包(import) 4 jar包 5 CLASSPATH

itheima_1llt的专栏 582

黑马程序员_日记42_HashSet自定义对象去重练习

——- android培训、java培训、期待与您交流! ———-往hashSet集合中存入自定对象 姓名和年龄相同为同一个人,重复元素。思路: 1 把数据存入Person,建立Person类 2 把Person对象存入HashSet,建立HashSet集 先运行一遍,观察运行结果,进行分析。import java.util.*; //1 把数据存入Person,建立Person类 clas

itheima_1llt的专栏 578

黑马程序员_日记64_reverseOrder

——- android培训、java培训、期待与您交流! ———-/* static Comparator reverseOrder() 返回一个比较器,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序。 static Comparator reverseOrder(Comparator cmp)

itheima_1llt的专栏 575
上一篇: 黑马程序员_91_正则表达式
回到未来2020
博客等级 码龄12年 27粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值