软件设计之Java入门视频(13)

软件设计之Java入门视频(13)

视频教程来自B站尚硅谷:

尚硅谷Java入门视频教程,宋红康java基础视频
相关文件资料(百度网盘)
提取密码:8op3
idea 下载可以关注 软件管家 公众号

学习内容:

该视频共分为1-717部分
本次内容涉及360-389
在写代码时,总是需要来回切换界面来看代码要求,这里推荐Snipaste,可以把截图以窗口形式放在屏幕上
记录内容:

  1. 内部类
  2. 异常

1、内部类

1)Java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类
2)内部类的分类:成员内部类(静态、非静态)局部内部类(方法内、代码块、构造器内)
3)成员内部类
  作为外部类的成员:
  a)可以调用外部类的结构
  b)可以被static修饰
  c)可以被四种不同权限修饰(public、缺省、protected、private)
  作为类的成员:
  a)可以定义属性、方法、构造器
  b)可以被final、abstract修饰

package test;public class InnerClassTest {public static void main(String[] args) {//创建Dog类(静态成员内部类)Person.Dog dog = new Person.Dog();dog.show();//创建Bird类(非静态成员内部类)Person person = new Person();Person.Bird bird = person.new Bird();bird.sing();}}class Person{int age;public void eat(){System.out.println("吃饭");}public void method(){//局部内部类class AA{}}//静态成员内部类static  class Dog{int age;public void show(){System.out.println("叫");}}//非静态成员内部类class Bird{int age;public Bird(){}public void sing(){System.out.println("唱歌");Person.this.eat(); //调用外部类的非静态属性}public void display(int age){System.out.println(age); //方法形参System.out.println(this.age);//内部类属性System.out.println(Person.this.age);//外部类属性}}
}

2、异常

Error:Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。比如:StackOverflowErrorOOM。一般不编写针对性的代码进行处理。
Exception:其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例如:
空指针访问、试图读取不存在的文件、网络连接中断、数组角标越界
运行时异常:是指编译器不要求强制处置的异常。一般是指编程时的逻辑错误,是程序员应该积极避免其出现的异常。
编译时异常:是指编译器要求必须处置的异常。即程序在运行时由于外界因素造成的一般性异常。编译器要求Java程序必须捕获或声明所有编译时异常

Error举例

public class ErrorTest {public static void main(String[] args) {// main(args);  栈溢出 StackOverflowErrorInteger[] arr = new Integer [1024*1024*1024] //堆溢出  OOM OutOfMemoryError}
}

异常处理:抓抛模型

过程1:"抛":程序在正常执行的过程中,一旦出现异常,就会在异常代码处生成一个对应异常类的对象。并将此对象抛出。一旦抛出对象以后,其后的代码就不再执行。
过程2:“抓”:异常的处理方式
1)try-catch-finally
2) throws

try-catch-finally

1)finally是可选的
2)使用try将可能出现异常代码包装起来,在执行过程中,一旦出现异常,就会生成一个对应异常类的对象,根据此对象类型,去catch中进行匹配
3)一旦try中的异常对象匹配到某一个catch时,就进入catch中进行异常处理,一旦处理完成,跳出当前try-catch结构(在没有写finally的情况)
4)catch中的异常类型如果没有子父类关系,声明在上/下不影响
5)catch中的异常类型满足子父类关系,则要求子类一定要声明在父类之上,否则报错unreachalbe
6)常用的异常对象处理的方式:String getMessage(); printStackTrace();
7)finally中声明的是一定会被执行的代码。即使catch中又出现异常、try/catch中有return语句等情况
8)像数据库连接、输入输出流、网络编程Socket等资源,JVM是不能自动的回收的,我们需要自己手动的进行资源的释放。此时的资源释放,就需要声明在finally中。

package test;import org.junit.Test;public class ExceptionTest1 {@Testpublic void test1(){String str = "1223";str = "abc";try{int num = Integer.parseInt(str);System.out.println("----1");}catch (NumberFormatException e){System.out.println("出现数值转换异常");}System.out.println("----2");}
}

throws

1)"throws + 异常类型"写在方法的声明处。指明此方法执行时,可能会抛出的异常类型。一旦当方法体执行时,出现异常,仍会在异常代码处生成一个异常类的对象,此对象满足throws后异常类型时,就会被抛出。异常代码后续的代码,就不再执行!
2)try-catch-finally:真正的将异常给处理掉了
3)throw只是将异常抛给了方法的调用者
4) 重写方法异常抛出的规则: 子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型

如何选择try-catch与throws

1)如果父类中被重写的方法没有throws方式处理异常,则子类重写的方法也不能使用throws,意味着如果子类重写的方法中有异常,必须使用try-catch-finally方式处理。
2)执行的方法a中,先后又调用了另外的几个方法,这几个方法是递进关系执行的。我们建议这几个方法使用throw的方式进行处理。而执行的方法a可以考虑使用try-catch-finally方式进行处理。

手动抛出异常

package test;public class StudentTest {public static void main(String[] args) {Student student = new Student();try {student.regist(-10);System.out.println(student);} catch (Exception e) {System.out.println(e.getMessage());}}
}class Student{private int id;public void regist (int id) throws Exception {if(id > 0){this.id = id;}else {//手动抛出异常对象// throw new RuntimeException("非法数据"); //此处是运行时异常,所以不会编译报错throw new Exception("非法数据");}}@Overridepublic String toString() {return "Student{" +"id=" + id +'}';}
}

自定义异常类

1)继承于现有的异常结构 ExceptionRuntimeException
2)提供全局常量:serialVersionUID
3)提供重载的构造器

public class MyException extends Exception{static final long serialVersionUID = -702321312412L;public MyException(){}public MyException(String msg){super(msg);}
}

练习

在这里插入图片描述

在idea中想要设置main方法的args[]实参:
在这里插入图片描述
在这里插入图片描述)

package test;public class EcmDef {public static void main(String[] args) {try {int i =Integer.parseInt(args[0]);int j =Integer.parseInt(args[1]);int result = ecm(i,j);System.out.println(result);}  catch (NumberFormatException e){System.out.println("数据类型不一致");} catch (ArrayIndexOutOfBoundsException e){System.out.println("缺少命令行参数");} catch (ArithmeticException e){System.out.println("算数异常");} catch (EcDef e) {System.out.println(e.getMessage());}}public static int ecm (int i , int j) throws EcDef {if(i < 0 || j < 0){throw new EcDef("分子或分母为负数");}return i/j;}
}

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

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

相关文章

【在线词典】项目实现

15_Dictionary 在线词典 搭建客户端-服务器架构 准备必要的资源 整理原始数据 整理英汉双语对照表&#xff0c;将XLSX格式转换成CSV格式&#xff0c;准备好vocabulary_list.csv文件备用 注意&#xff1a;CSV格式的文件必须使用UTF-8的字符集&#xff1b; 建立mydatabase.…

SCI三区|儿童学习优化算法KLO:基于社会进化和认知学习的优化算法

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;ST Javed受到社会环境下家庭儿童的早期社会学习行为启发&#xff0c;提出了儿童学习优化算法&#xff08;Kids Learning Optimizer, KLO&#xff09;。 2.算法原理 2.…

珍藏多年的计算机内核结构大全笔记,掌握计算机工作原理真不难

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

江洲的《家书》,岂止抵万金

题记 今晨6点钟&#xff0c;像往日一样的背上鱼具包&#xff0c;欲驾乘清凉舒适的晨风&#xff0c;前往味江河堤享受钓翁乐趣。孰料开门一看&#xff0c;朦胧的天空竟下着淅淅沥沥的小雨。 今年的天气异常&#xff0c;是笔者寄居“西川第一天”古镇5年来所未见&#xff1a;再…

顺序表实现

size属于结构体的作用域 如果要访问一个结构体的指针用-> 如果要访问一个结构体的变量用. 点操作 #include<stdio.h> #include<stdlib.h> #include<string.h> #include"seqlist.h" //typedef struct seqList{ // SLDataType* _data; //需…

CSS技巧 - 一日一例 (1):会讨好的热情按钮

题外话: 从今天开始,我准备开设一个新的专栏,专门写 使用CSS实现各种酷炫按钮的方法,本专栏目前准备写40篇左右,大概会完成如下按钮效果: 今天,我来介绍第一个按钮的实现方法:会讨好的热情按钮。为什么我给它起这样的名字呢?你看它像不像一个不停摇尾巴的小黄?当你鼠…

29 H3C SecPath F1000 系统(概述)

29 H3C SecPath F1000 系统 系统全局功能&#xff08;高可靠性 日志设置 报表设置 会话设置 升级中心 Lcense配置 高级虚拟化 管理员 维护 诊断中心 配置指导&#xff09; 高可靠性 1 vrrp VRRP将局域网内的可以承担网关功能的一组设备划分在一起&#xff0c;组成一个备份组…

【Spring Boot】Spring AOP动态代理,以及静态代理

目录 Spring AOP代理一. 代理的概念二. 静态代理三. JDK代理3.1 重写 invoke 方法进⾏功能增强3.2 通过Proxy类随机生成代理对象 四. CGLIB代理4.1 自定义类来重写intercept方法4.2 通过Enhancer类的create方法来创建代理类 五. AOP源码剖析 总结(重中之重&#xff0c;精华) Sp…

git使用总结

git介绍 Git是一款免费、开源的分布式版本控制系统 &#xff0c;用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 git安装 下载地址 # 推荐使用国内镜像下载 http://npm.taobao.org/mirro…

解决win10报“无法加载文件……profile.ps1,因为在此系统上禁止运行脚本”的问题

打开命令行报错 解决方法 使用管理员权限打开PowerShell&#xff1a;WinX, 选择“Windows PowerShell&#xff08;管理员&#xff09;” 输入&#xff1a;Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 输入&#xff1a;y确认修改安全策略 &#xff1a;y确认修改安全策略…

前端学习(三)CSS介绍及选择符

##最近在忙期末考试&#xff0c;因此前端笔记的梳理并未及时更新。在学习语言过程中&#xff0c;笔记的梳理对于知识的加深very vital.因此坚持在明天学习新知识前将笔记梳理完整。 主要内容&#xff1a;CSS介绍及选择符 最后更新时间&#xff1a;2024/7/4 目录 内容&#x…

强化学习的数学原理:值函数近似

在上次课介绍了 TD Learning&#xff0c;实际上这次课依然是介绍 TD &#xff0c;但是上次是用的表格形式介绍的&#xff0c;这次课我们将会介绍基于函数的方式。 算法其实不太难&#xff0c;难的是思路和想法&#xff0c;另外这一节将引入神经网络。 另外最经典的 Deep Q-le…

AutoDL部署半自动大模型标注工具踩坑实录

效果演示 克隆代码 git clone http://github.com/yoletPig/Annotation-with-SAM.git安装SAM cd segment-anything pip install -e .安装SAM-Tool依赖包 pip install -r requirements.txt下载权重 wget https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_

论文新思路!双通道卷积神经网络!最新成果准确率近100%

双通道CNN是一种创新的卷积神经网络架构&#xff0c;它能捕捉到比单通道CNN更丰富的信息&#xff0c;从而提高模型的性能和鲁棒性。 具体点讲&#xff0c;传统CNN采用单个卷积层提取特征&#xff0c;形成特征映射&#xff1b;而双通道CNN则通过两个并行卷积层同时处理输入数据…

越来越多用户和商家选择小程序商城的原因是什么?小程序商城怎么搭建?

得益于小程序的便捷性&#xff0c;越来越多的用户选择在小程序商城购物&#xff0c;越来越多的商家也开始搭建自己的小程序商城。背后原因是什么呢&#xff1f;小程序商城怎么搭建&#xff1f; 用户为何青睐小程序商城&#xff1f; 1、便捷性 小程序商城无需下载安装&#xff…

数据结构——二叉树之c语言实现堆与堆排序

目录 前言&#xff1a; 1.二叉树的概念及结构 1.1 特殊的二叉树 1.2 二叉树的存储结构 1.顺序存储 2.链式存储 2. 二叉树的顺序结构及实现 2.1 堆的概念 ​编辑 2.2 堆的创建 3.堆的实现 3.1 堆的初始化和销毁 初始化&#xff1a; 销毁&#xff1a; 插入&…

开源屏幕分享项目:轻量好用无延迟!!【送源码】

想必大家在日常的工作中&#xff0c;会经常需要分享代码、演示项目或者进行在线教学&#xff0c;这就需要一个既高效又便捷的屏幕共享工具。然而&#xff0c;现有的一些解决方案往往存在延迟高、画质差等问题。 今天就分享一个开源的屏幕共享项目 - screego&#xff0c;不但免…

PHP灵活用工任务小灵通微信小程序系统源码

&#x1f4bc;灵活赚钱新风尚&#xff01;灵活用工任务小灵通微信小程序&#xff0c;兼职自由两不误&#x1f680; &#x1f50d; 一、海量任务&#xff0c;随时随地接单赚外快 还在为找不到合适的兼职而烦恼吗&#xff1f;&#x1f914; 灵活用工任务小灵通微信小程序&#…

Java-Sql注入以及如何解决

sql脚本注入: 如果sql语句使用字符串拼接&#xff0c;可能会出现字符串的拼接&#xff0c;导致sql注入。 #是会先进行预编译&#xff0c;传进来的参数通过占位符填入到已经完成编译的语句中去。

paddleocr运行报错?谈谈解决思路。

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…