java学习--day13 (static关键字、异常)
文章目录
- day12复习
- 今天的内容
- 1.static关键字【重点】
- 1.1生活的角度来理解静态的资源
- 1.2Java中的静态
- 1.2.1static修饰成员变量
- 1.2.2static修饰成员方法
- 1.2.3static修饰代码块
- 2.异常
- 2.1生活中的异常
- 2.2Java中的异常
- 2.3Throwable类
- 2.4错误和异常
- 2.5异常【重点】
- 2.5.1异常的捕捉
- 2.5.2异常的抛出
- 2.6自定义异常
- 3.String类
- 3.1String类型的两种的声明方式
day12复习
1.多态的向上转型和向下转型向上转型: 父类的引用指向子类的对象Person person = new Man();向下转型: 将父类的引用强转为子类的对象Man man = (Man) person;
2.instanceof关键字的用法引用 intanceof 运行类型
3.抽象类声明方式abstract class Person {}
4.接口的声明方式interface 接口名字 {}
5.继承的语法格式class B extends A {}
6.重写与重载重写:必须是继承关系,在子类中将父类的方法给覆盖重载:在一个类中,方法名字一样,参数列表不一样
7.final关键字用法1.修饰成员变量2.修饰局部变量3.修饰成员方法4.修饰类5.修饰对象引用
1.父类的引用指向子类的对象(向上转型的)真实的开发的时候 方法的参数是父类的引用。但是调用方法的时候,传参传的是子类的对象
2.向下转型 需要强转的。先向上转型再向下转型。
3.instanceof
今天的内容
1.static
2.异常
1.static关键字【重点】
static中文意思:静态的
static是和对象无关的。
1.1生活的角度来理解静态的资源
公共的资源的都属于静态的东西
对象可以使用静态的资源,但是和对象无关
厕所里面直饮机 就是静态资源
对象.name
1.2Java中的静态
1.修饰成员变量 静态属性
2.修饰成员方法 静态方法
3.修饰代码块 静态代码块
package com.qfedu.a_static;class Man {static String name;//静态的属性 和对象无关的//静态方法public static void eat () {System.out.println("吃饭喝酒");}//静态代码块static {System.out.println("嘻嘻");}
}
public class Demo1 {public static void main(String[] args) {//咋使用 类.静态的属性Man.name = "狗蛋";System.out.println(Man.name);//使用 类.静态方法名字()Man.eat();}}
1.2.1static修饰成员变量
静态成员变量:
static String name;
语法格式:
static 数据类型 变量名;
注意事项:
1.使用static修饰的变量叫静态变量
2.代码中对象还没有创建的时候,如果加载了类,static修饰的属性已经存在了,和对象没有关系。
3.首先加载静态代码块、再加载普通代码块、其次加载静态方法
package com.qfedu.a_static;class Person {String name;int age;static String country;
}
public class Demo2 {public static void main(String[] args) {Person sb = new Person();sb.name = "张三";sb.age = 23;Person.country = "中国";//The static field Person.country //should be accessed in a static waySystem.out.println(sb.country);//中国System.out.println(Person.country);//in a static waysb.country = "PRC";System.out.println(Person.country);//PRC}}
总结:
以后记住:类.静态属性即可
1.2.2static修饰成员方法
静态方法
语法格式:
public static 返回值 方法的名字 (参数列表) {}
调用静态方法:
类.方法名字();
package com.qfedu.a_static;class Dog {public void eat () {System.out.println("普通的成员方法");}public static void sleep () {System.out.println("睡吧不用看家了");}
}
public class Demo3 {public static void main(String[] args) {Dog.sleep();//Dog.eat();只能拿对象来调用这个方法eatDemo3.test();}public static void test () {System.out.println("嘻嘻");}}
1.2.3static修饰代码块
语法格式: 静态代码块
static {语句体 }
只要这个类加载,那么静态代码块一定会执行
执行顺序: 静态代码块-》构造代码块-》构造方法
package com.qfedu.a_static;class Cat {public Cat () {System.out.println("无参构造方法");}{System.out.println("构造代码块");}static {System.out.println("静态的代码块");}
}
public class Demo4 {public static void main(String[] args) {Cat cat = new Cat();}}
2.异常
今天就给记语法格式和意思
2.1生活中的异常
人的一生 会经历伤病
医生会问?咋啦?
你头疼
脑部ct
医生诊断
完以后。治好这个病。
2.2Java中的异常
程序在自上而下执行的时候,发生了不可预期的事件,这个事件阻止程序的运行。这就是异常。
数组下标越界 类转换异常
Java给咱们封装很多的异常类,并且提供很优秀的异常处理机制。
Java提供了一个类Throwable
新学一个类,咋学?靠我教你吗?对的 你学会看API文档
https://www.matools.com/api/java8
2.3Throwable类
构造方法:
Throwable()
构造一个新的可抛出的null
作为其详细信息。
Throwable(String message)
构造一个具有指定的详细消息的新的throwable。
方法:
String
getMessage()
返回此throwable的详细消息字符串。void
printStackTrace()
将此throwable和其追溯打印到标准错误流。String
toString()
返回此可抛出的简短描述。
package com.qfedu.b_trhowable;public class Demo1 {public static void main(String[] args) {System.out.println("嘻嘻");System.err.println("哈哈");Throwable throwable = new Throwable();System.out.println(throwable.getMessage());Throwable throwable2 = new Throwable("哈哈,我傻逼了");System.out.println(throwable2.getMessage());/*** java.lang.Throwable: 哈哈,我傻逼了at com.qfedu.b_trhowable.Demo1.main(Demo1.java:7)*/throwable2.printStackTrace();//java.lang.Throwable: 哈哈,我傻逼了//告知了这个错误信息System.out.println(throwable2.toString());}}
2.4错误和异常
Throwable 下面有两个子类 一个叫Error 一个叫Exception
Error:是代表JVM本身的错误,咱们程序员是通过代码解决不了的。
Exception: 异常,代表程序在运行过程中,发生了不可预期的事件。可以使用Java来出来,让他继续执行下去。
异常分为两种:
编译时异常:
FileNotFoundException
SQLException
ClassNotFoundException
InterruptException
运行时异常:
数组下标越界 ArrayIndexOutOfBoundException
类转换异常 ClassCastException
空指针异常 NullPointerException
2.5异常【重点】
代码有可能会出现异常。Java给咱们提供了两种解决方案
1.异常的捕捉
2.异常的抛出
2.5.1异常的捕捉
在程序运行过程中,代码难免有可能会遇到异常。如果没有异常,代码正常执行。
如果有异常,就捕捉异常
语法格式:
try {有可能出现异常的代码 } catch (异常对象) {//针对于面异常的处理方案 }
package com.qfedu.c_Exception;public class Demo2 {public static void main(String[] args) {test(3, 0);}public static void test (int a, int b) {int ret = 0;try {//有可能个出现异常的代码ret = a / b;} catch (ArithmeticException e) {System.out.println("123");//打印错误信息System.out.println(e.getMessage());}//即使代码有异常,通过捕捉以后。是不会影响程序的接着执行的代码的System.out.println(ret);System.out.println( 4 + 4);}
}
package com.qfedu.c_Exception;public class Demo3 {public static void main(String[] args) {int[] arr = new int[2];//数组的容量是2test(1, 1, arr);}public static void test (int a, int b, int[] arr) {int ret = 0;try {ret = a / b;//有可能出现的异常的代码arr[2] = 89;//这个会有异常//jvm造出来哪个异常对象,就去catch 到哪个异常然后去执行具体的catch} catch (ArithmeticException e) {System.out.println("123");System.out.println(e.getMessage());} catch (ArrayIndexOutOfBoundsException e) {System.out.println("456");System.out.println(e.getMessage());}System.out.println(4 + 8);}}
继续改进
package com.qfedu.c_Exception;public class Demo4 {public static void main(String[] args) {int[] arr = new int[2];//数组的容量是2test(1, 1, arr);}public static void test (int a, int b, int[] arr) {int ret = 0;try {ret = a / b;//有可能出现的异常的代码arr[2] = 89;//这个会有异常//jvm造出来哪个异常对象,就去catch 到哪个异常然后去执行具体的catch} catch (ArithmeticException | ArrayIndexOutOfBoundsException e) {System.out.println("123");System.out.println(e.getMessage());} System.out.println(4 + 8);}}
改进的最终版本
package com.qfedu.c_Exception;public class Demo5 {public static void main(String[] args) {int[] arr = new int[2];//数组的容量是2test(1, 0, arr);}public static void test (int a, int b, int[] arr) {int ret = 0;try {ret = a / b;//有可能出现的异常的代码arr[2] = 89;//这个会有异常//jvm造出来哪个异常对象,就去catch 到哪个异常然后去执行具体的catch} catch (Exception e) {System.out.println("123");System.out.println(e.getMessage());} System.out.println(4 + 8);}}
try-catch-finally
package com.qfedu.c_Exception;public class Demo5 {public static void main(String[] args) {int[] arr = new int[2];//数组的容量是2test(1, 0, arr);}public static void test (int a, int b, int[] arr) {int ret = 0;try {ret = a / b;//有可能出现的异常的代码arr[2] = 89;//这个会有异常//jvm造出来哪个异常对象,就去catch 到哪个异常然后去执行具体的catch} catch (Exception e) {System.out.println("123");System.out.println(e.getMessage());} finally {//无论有没有异常,最终都要执行的System.out.println(4 + 8);}}}
2.5.2异常的抛出
在代码出现异常的地方进行异常的抛出
如果异常的抛出的话,一旦发生异常,从出现异常的地方会终止代码
使用两个关键字:
throw: 在方法中抛出一个异常。自己造一个错
throws: 在方法的声明处书写,告知当前调用者,此处有异常。要小心
package com.qfedu.c_Exception;import java.io.FileNotFoundException;public class Demo8 {public static void main(String[] args) throws Exception{test(0);Thread.sleep(1000);}public static void test (int a) throws FileNotFoundException{if (a == 0) {//编译时异常throw new FileNotFoundException();}System.out.println("jvm xixi");}}
总结:
关于异常:一阶段和二阶段 只需要会咋抛的或者咋捕捉的即可
2.6自定义异常
Java给咱们提供了很多的异常对象,但是有的时候还是满足不了现实生活的需求,我自己造异常对象。
继承Exception
需求:
如果是单身 抛出一个异常 单身异常类
package com.qfedu.c_Exception;import java.util.Scanner;public class Demo11 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入一个整数:");int score = scanner.nextInt();try {test(score);} catch (Exception e) {System.out.println(e.getMessage());}}public static void test (int score) throws Exception {if (score > 100 || score < 0) {throw new Exception("输入的整数有误的。。。");}if (score >= 90 && score <= 100) {System.out.println("优秀");} else if (score >= 80) {System.out.println("良好");} else if (score >= 70) {System.out.println("及格");} else {System.out.println("叫家长。。。");}}}
3.String类
3.1String类型的两种的声明方式
package com.qfedu.d_string;public class Demo1 {public static void main(String[] args) {//声明字符串的两种方式String str = "狗蛋";String str2 = "狗蛋";System.out.println(str);String str1 = new String("狗蛋");System.out.println(str1);System.out.println(str == str2);//true//== 比较的是内存地址System.out.println(str == str1);//false//equal比较的是地址,如果地址不一样 再去比较内容。如果内容一样就是true//开发中字符串的比较使用的是equalsSystem.out.println(str.equals(str1));//true}
}
相关文章:
java学习--day13 (static关键字、异常)
文章目录 day12复习今天的内容1.static关键字【重点】1.1生活的角度来理解静态的资源1.2Java中的静态1.2.1static修饰成员变量1.2.2static修饰成员方法1.2.3static修饰代码块 2.异常2.1生活中的异常2.2Java中的异常2.3Throwable类2.4错误和异常2.5异常【重点】2.5.1异常的捕捉2…...
英飞凌TC3xx--深度手撕HSM安全启动(五)--TC3xx HSM启动流程、通信机制分析
在包含HSM的MCU的软件开发里,Host和Hsm应该为两个独立的软件工程。不管是Etas还是Vector的HSM包,都是需要单独收费的。 既然是单独的工程,相应的启动代码也是必须要有的。 在英飞凌的HSM固件架构里,HSM BootRom主要有以下几个作用:内部测试、生产使用、启动配置等。那么接…...
【窗体】Winform两个窗体之间通过委托事件进行值传递,基础篇
2023年,第38周。给自己一个目标,然后坚持总会有收货,不信你试试! 在实际项目中,我们可能会用到一些窗体做一些小工具或者小功能。比如:运行程序,在主窗体A基础上,点击某个按钮希望能…...
mac使用指南
新公司给配备了mac,可惜土鳖的我不会用,所以特地写了一篇文章记录学习mac的过程 快捷键 删除:commanddelete 光标移至最右/左:command右/左箭头 截图:commandshift3/4/5,3代表截全屏,4代表选…...
Git 版本控制系统 笔记
概念:一个免费开源,分布式的代码版本控制系统,帮助开发团队维护代码 作用:记录代码内容,切换代码版本,多人开发时高效合并代码内容【团队开发同一个项目的代码版本管理】 1、Git 安装 之前写了࿰…...
VRTK4⭐四.和 UI 元素交互
文章目录 🟥 安装Tilia Unity.UI🟧 配置射线与UI交互器1️⃣ 配置直线射线2️⃣ 配置UI交互器 🟨 配置UI1️⃣ 更新EventSystem2️⃣ 进行Canvas设置 我们要实现的功能: 右手触摸到圆盘:显示直线射线 右手圆盘键按下:与选中UI交互 Ƿ…...
【STM32】SDIO—SD 卡读写01
基于stm32f103 基于零死角玩转STM32—F103指南者 简介 1.SD 卡总共有 8 个寄存器,用于设定或表示 SD 卡信息。 2.SD卡的寄存器不能像STM32那样访问,而是利用命令访问,SDIO 定义了 64 个命令。SD 卡接收到命令后,根据命令要求对…...
SpringCloud Alibaba 整合Sentinel的基本使用
文章目录 一、什么是Sentinel二、Sentinel 的主要特性1. 流量控制:2. 熔断降级:3. 实时监控:4. 规则配置:5. 集成方便: 三、Sentinel 分为哪几部分:1. 核心库(Java 客户端)2. 控制台(…...
Linux中如何执行命令
目录 命令格式: 命令分类: 命令帮助: 1、man 2、help 3、--help 4、info命令 终止命令: 补全命令: 1)补全命令: 2)补全文件名和目录名: 命令格式:…...
基于51单片机的智能病房呼叫系统的设计与实现
一、前言 显示床位号使用到4位数码管,为了节约单片IO口,使用TM1637来驱动数码管。 二、TM1637驱动芯片简介 三、电路设计,使用矩阵按键来模拟每个床位的呼叫按钮 四、编写51单片机代码 void delay_ms(u16 n) {u8 i;while(n--){i 111;while…...
js在一个时间范围内产生一个随机时间
js使用使用到Math.random()方法实现在一个时间范围内产生一个随机时间。 /*在时间范围内产生一个随机时间*/ function randomDate(start, end) {if (start ! null && end ! null) {const _start new Date(start).getTime();const _end new Date(end).getTime();cons…...
Javascript Date 对象相关知识
Javascript Date 对象相关知识 参考文章虹猫1992 创建 Date 对象. 方法一: 自动使用当前的日期和时间作为其初始值. var date new Date();方法二:将给定的毫秒数转换为使用的时间,new Date(dateVal) 如果是数字值,dateVal表示指定日期与1970年1月1日午…...
Vim快捷用法
以下为文本操作 1.快速切换 行首^(shift4) 行尾$(shift6) 文章开始gg 位置末尾G 向下翻页CTRLB 向上翻页CTRLF 2.删除内容 删除一行 dd 3.复制粘贴 复制一行yy 粘贴 p 4.撤销操作 撤销操作 u 恢复操作ctrlr 以下都为底行操作 1.显示行号 set nu 2.多文件分屏阅读 加入阅…...
Stream流的常用方法(自用)
自用的笔记, 有🚩 需要多看 基本数据 自定义实体 Data class Student{private String name;private Integer age;private Double height;public Student() {} }假数据 Student s1 new Student(); s1.setAge(20); s1.setName("cookie"); s1.setHeight(…...
【python函数】torch.nn.Embedding函数用法图解
学习SAM模型的时候,第一次看见了nn.Embedding函数,以前接触CV比较多,很少学习词嵌入方面的,找了一些资料一开始也不是很理解,多看了两遍后,突然顿悟,特此记录。 SAM中PromptEncoder中运用nn.Emb…...
with ldid... /opt/MonkeyDev/bin/md: line 326: ldid: command not found
吐槽傻逼xcode 根据提示 执行了这个脚本/opt/MonkeyDev/bin/md 往这里面添加你brew install 安装文件的目录即可...
[golang gui]fyne框架代码示例
1、下载GO Go语言中文网 golang安装包 - 阿里镜像站(镜像站使用方法:查找最新非rc版本的golang安装包) golang安装包 - 中科大镜像站 go二进制文件下载 - 南京大学开源镜像站 Go语言官网(Google中国) Go语言官网(Go团队) 截至目前(2023年9月17日&#x…...
2000-2018年各省能源消费和碳排放数据
2000-2018年各省能源消费和碳排放数据 1、时间:2000-2018年 2、范围:30个省市 3、指标:id、year、ENERGY、COAL、碳排放倒数*100 4、来源:能源年鉴 5、指标解释: 2018年碳排放和能源数据为插值法推算得到 碳排放…...
C# ref 学习1
ref 关键字用在四种不同的上下文中; 1.在方法签名和方法调用中,按引用将参数传递给方法。 2.在方法签名中,按引用将值返回给调用方。 3.在成员正文中,指示引用返回值是否作为调用方欲修改的引用被存储在本地,或在一般…...
MQ - 08 基础篇_消费者客户端SDK设计(下)
文章目录 导图Pre概述消费分组协调者消费分区分配策略轮询粘性自定义消费确认确认后删除数据确认后保存消费进度数据消费失败处理从服务端拉取数据失败本地业务数据处理失败提交位点信息失败总结导图 Pre...
Flutter层对于Android 13存储权限的适配问题
感觉很久没有写博客了,不对,的确是很久没有写博客了。原因我不怎么想说,玩物丧志了。后面渐渐要恢复之前的写作节奏。今天来聊聊我最近遇到的一个问题: Android 13版本对于storage权限的控制问题。 我们都知道,Andro…...
Android kotlin开源项目-功能标题目录
目录 一、BRVAH二、开源项目1、RV列表动效(标题目录)2、拖拽与侧滑(标题目录)3、数据库(标题目录)4、树形图(多级菜单)(标题目录)5、轮播图与头条(标题目录)6…...
Linux下,基于TCP与UDP协议,不同进程下单线程通信服务器
C语言实现Linux下,基于TCP与UDP协议,不同进程下单线程通信服务器 一、TCP单线程通信服务器 先运行server端,再运行client端输入"exit" 是退出 1.1 server_TCP.c **#include <my_head.h>#define PORT 6666 #define IP &qu…...
qt功能自己创作
按钮按下三秒禁用 void MainWindow::on_pushButton_5_clicked(){// 锁定界面setWidgetsEnabled(ui->centralwidget, false);// 创建一个定时器,等待3秒后解锁界面QTimer::singleShot(3000, this, []() {setWidgetsEnabled(ui->centralwidget, true);;//ui-&g…...
Linux网络编程:使用UDP和TCP协议实现网络通信
目录 一. 端口号的概念 二. 对于UDP和TCP协议的认识 三. 网络字节序 3.1 字节序的概念 3.2 网络通信中的字节序 3.3 本地地址格式和网络地址格式 四. socket编程的常用函数 4.1 sockaddr结构体 4.2 socket编程常见函数的功能和使用方法 五. UDP协议实现网络通信 5.…...
【后端速成 Vue】初识指令(上)
前言: Vue 会根据不同的指令,针对标签实现不同的功能。 在 Vue 中,指定就是带有 v- 前缀 的特殊 标签属性,比如: <div v-htmlstr> </div> 这里问题就来了,既然 Vue 会更具不同的指令&#…...
爬虫 — Scrapy-Redis
目录 一、背景1、数据库的发展历史2、NoSQL 和 SQL 数据库的比较 二、Redis1、特性2、作用3、应用场景4、用法5、安装及启动6、Redis 数据库简单使用7、Redis 常用五大数据类型7.1 Redis-String7.2 Redis-List (单值多value)7.3 Redis-Hash7.4 Redis-Set (不重复的)7.5 Redis-Z…...
tcpdump常用命令
需要安装 tcpdump wireshark ifconfig找到网卡名称 eth0, ens192... tcpdump需要root权限 网卡eth0 经过221.231.92.240:80的流量写入到http.cap tcpdump -i eth0 host 221.231.92.240 and port 80 -vvv -w http.cap ssh登录到主机查看排除ssh 22端口的报文 tcpdump -i …...
计算机网络运输层网络层补充
1 CDMA是码分多路复用技术 和CMSA不是一个东西 UPD是只确保发送 但是接收端收到之后(使用检验和校验 除了检验的部分相加 对比检验和是否相等。如果不相同就丢弃。 复用和分用是发生在上层和下层的问题。通过比如时分多路复用 频分多路复用等。TCP IP 应用层的IO多路复用。网…...
java CAS详解(深入源码剖析)
CAS是什么 CAS是compare and swap的缩写,即我们所说的比较交换。该操作的作用就是保证数据一致性、操作原子性。 cas是一种基于锁的操作,而且是乐观锁。在java中锁分为乐观锁和悲观锁。悲观锁是将资源锁住,等之前获得锁的线程释放锁之后&am…...
成都旅游攻略详细安排/志鸿优化设计
当它们处于同一节点,v-for 的优先级比 v-if 更高,这意味着 v-if 将分别重复运行于每个 v-for 循环中。当你想为仅有的_一些_项渲染节点时,这种优先级的机制会十分有用,如下: <li v-for"todo in todos" v-…...
长沙网站制作工作室知名公司/seo培训学什么
转自:http://blog.csdn.net/youqishini/article/details/7960046 转自:http://www.dianfusoft.com/ Red5是一款基于Java的开源流媒体服务器,用它做服务器可以在Flex中实现像快播(Qvod)那样在线播放视频。Red5类似于to…...
外贸商城网站建设/汽车软文广告
IntelliJ IDEA有一个强大的编辑器,并始终帮助您创建无差错的应用程序。IDE有许多智能的功能,让我们看看最重要的几个。 代码补全 代码补全通过关联上下文的情况,节省您的时间。主要有两种类型的IntelliJ IDEA的代码补全:基础&…...
徐州品牌网站建设/今日新闻国内大事件
word条形码 换行Tables can be difficult to read. Adding shaded bands to a table improves readability and really just makes it look better. Here’s how you can add striping to your Excel tables. 表格可能很难阅读。 在表中添加阴影带可提高可读性,实际…...
网站的维护怎么做/百度怎么发布自己的广告
我安装了32位的office 然后今天突发奇想 安装了一个64位的 visio ,之后看到有人在网上发文章 如何解决viso2013无法安装64位版本的Office https://jingyan.baidu.com/article/a65957f4db6ae124e67f9b9b.html 我就按照上面的操作进行了一番神操作 我在没有备份的情…...
网站文章正文可以做内链吗/专业优化网站排名
这篇文章主要为大家详细介绍了[转载]Discuz x3.2前台GET型SQL注入裂痕,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。前台非盲注,只需要共同一个xss,就能消除鸡肋了。信pandas,…...