异常与数组

一、异常

1、常见异常

RuntimeException:运行异常,运行时期发生的异常,编译时没有问题(可以通过增强程序的健壮性来处理 if..else)

常见的运行异常:

  • 空指针异常:NullPointerException 当对象无法正常存在使用,会发生空指针

  • 类型转换异常:ClassCastException 可以通过instanceof

  • 数学异常:ArithmeticException

  • 数字转换异常:NumberFormatException

  • 数组下标越界异常:ArrayIndexOutOfBoundsException

  • 数组长度负数异常:NegativeArrayException

CheckedException:检查时异常|编译时异常,发生在编译期间; 

public static void main(String[] args){
            //数学异常
            System.out.println(5/0);
            //空指针异常
            String a = null;
            System.out.println(a.length());
            //找不到文件异常
            InputStream is=new FileInputStream("");
    }

2、自定义异常

直接或者间接的继承自Exception;

运行时异常:继承自RuntimeException

编译时异常:Exception或者某一个编译时异常的子类

//编译异常
public class NumException extends Exception{
    public NumException() { 
    }
    public NumException(String message) {
        super(message);
    }
}
    public void setNum(int num) throws NumException{
        if(num>=0) {
            this.num = num;
        }else {
            throw new NumException("数量小于零异常!!!");
            
        }
    }
}
public class SelfException {
    public static void main(String[] args) throws NumException {
        Animal a=new Animal();
        a.setName("Cat");
        a.setNum(-10);
        System.out.println(a);
    }
    
//运行异常
class Num extends RuntimeException{
    public Num() {
    }
    public Num(String message) {
        super(message);
    }
}
public static void main(String[] args) {
        Fruit f = new Fruit();
        f.setName("apple");
        f.setPrice(-2.34);
        System.out.println(f);
    }  
 public void setPrice(double price) {
        if(price>0) {
            this.price = price;
        }else {
            System.out.println("Num异常");
            throw new Num("异常!!!");
        }
        
    }

3、异常处理

throws :异常抛出 抛给上一层处理,当前不处理

try..catch: 异常捕获

public static void main(String[] args) throws FileNotFoundException {
        
        try{
//          ArithmeticException
            System.out.println(5/0);
            //空指针异常
            String a = null;
            System.out.println(a.length());
            //找不到文件异常
            InputStream is=new FileInputStream("");
        }catch(ArithmeticException e) {
            System.out.println("ArithmeticException");
        }catch(NullPointerException e) {
            System.out.println("NullPointerException");
        } catch(Exception e) {
            System.out.println("Exception");
        }finally{
            System.out.println("结束。。。");
        }
    }

二、数组

1、数组

在内存中是一段连续的内存空间相同数据类型数据的有序集合;

数组:存储单个数据

变量:存储多个数据

1.数组的特点:

  • 1.数组是一个容器,是一个引用数据类型,堆中

  • 2.数组中的所有数据要求数据类型相同

  • 3.长度一旦确定不可改变

  • 4.有序 根据序号使用(索引|下标)

2.数组的声明:

  • 数据类型 变量名;

  • 数据类型[] 数组名;

  • 数据类型 数组名[];---不推荐

    数据类型 :数组中所有数据的数据类型

    []->数组

    数组名:标识符

3.初始化

动态初始化: 创建的时候不确定数组中的数据值,可以先创建,后续确定了数据值的时候再赋值

  • 数据类型[] 数组名 = new 数据类型[长度];

  • 默认值:整型0 小数0.0 boolean->false char->' ' 引用数据类型null

    int[] arr=new int[10];

静态初始化: 创建数组的同时赋值

  • 数据类型[] 数组名 = new 数据类型[]{值1,值2,值3...};

  • 数据类型[] 数组名 ={值1,值2,值3...}; --简单,不够灵活

    int[] a=new int[] {1,7,9,11};
    int[] a={1,7,9,11,13};

4、数组遍历

  1. 普通for循环

  2. 增强for循环

            int[] arr=new int[10];
            //普通for
            for(int i=0;i<10;i++) {
                arr[i]=i+1;
                System.out.println(arr[i]);
            }
            //增强for
            System.out.println("---------增强for---------");
            int i=1;
            for(int ch:arr) {
                ch=i;
                i++;
                System.out.println(ch);
            }

5、数组常用方法

Arrays 包含了很多操作数组的方法,是一个静态工厂;

常用方法:

  • Arrays.toString(数组) 把数组中的内容以字符串的形式返回

  • Arrays.equals(arr1, arr2) 比较两个数组内容是否相等

  • static int[] copyOf(int[] original, int newLength) 拷贝,截取,填充的效果

  • static int[] copyOfRange(int[] original, int from, int to) 从原数组的指定位置开始拷贝,拷贝到指定to位置

  • static void fill(int[] a, int val) 数组中的所有位置,使用val数值填充

  • static void sort(int[] a) 对指定的 int 型数组按数字升序进行排序。

  • static int binarySearch(int[] a, int key) 查找数据出现的索引 返回值:使用前提:先升序排序

     int[] arr1={1,2,3,4,5};
    int[] arr2={3,1,2,5,4};
    System.out.println(arr1==arr2);  //==比较地址
    System.out.println(Arrays.equals(arr1, arr2));//比较内容
    System.out.println(Arrays.toString(Arrays.copyOf(arr1, 3)));//拷贝[0,3)
    System.out.println(Arrays.toString(Arrays.copyOfRange(arr1, 1,3)));//截取[1,3)
    Arrays.sort(arr2);//升序排序
    System.out.println(Arrays.toString(arr1));
内容概要:本文详细介绍了基于FPGA的144输出通道可切换电压源系统的设计与实现,涵盖系统总体架构、FPGA硬件设计、上位机软件设计以及系统集成方案。系统由上位机控制软件(PC端)、FPGA控制核心和高压输出模块(144通道)三部分组成。FPGA硬件设计部分详细描述了Verilog代码实现,包括PWM生成模块、UART通信模块和温度监控模块。硬件设计说明中提及了FPGA选型、PWM生成方式、通信接口、高压输出模块和保护电路的设计要点。上位机软件采用Python编写,实现了设备连接、命令发送、序列控制等功能,并提供了一个图形用户界面(GUI)用于方便的操作和配置。 适合人群:具备一定硬件设计和编程基础的电子工程师、FPGA开发者及科研人员。 使用场景及目标:①适用于需要精确控制多通道电压输出的实验环境或工业应用场景;②帮助用户理解和掌握FPGA在复杂控制系统中的应用,包括PWM控制、UART通信及多通道信号处理;③为研究人员提供一个可扩展的平台,用于测试和验证不同的电压源控制算法和策略。 阅读建议:由于涉及硬件和软件两方面的内容,建议读者先熟悉FPGA基础知识和Verilog语言,同时具备一定的Python编程经验。在阅读过程中,应结合硬件电路图和代码注释,逐步理解系统的各个组成部分及其相互关系。此外,实际动手搭建和调试该系统将有助于加深对整个设计的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值