![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java知识点
passforbid
电子科技大学20级软件工程
展开
-
重写方法的抛出规则
子类重写的方法抛出的异常类型不大于父类重写的方法抛出的异常类型 开发中如何选择使用try-catch-finally还是用throws? 1、如果父类中被重写的方法没有throws的方式处理异常,则子类重写的方法也不能使用throws,意味着子类重写的方法中有异常,必须使用使用try-catch-finally的形式进行处理。 2、throws的方式只是将异常抛给了方法的调用者。并没有真正的将异常处理掉 3、如果父类被重写的方法中没有throws方式处理异常,则子类重写的方法也不能使用throws,原创 2022-02-21 22:31:44 · 559 阅读 · 0 评论 -
finally的使用
finally是可选的。 finally中声明的是一定会被执行的代码,即使catch中又出现异常了,try中有return语句,catch中有return语句等情况。 像数据库连接,输入输出流,网络编程Socket等资源,JVM是不能自动回收的,我们需要自己手动的进行资源的释放。此时的资源释放,就需要声明在finally中(以防资源释放操作受到上述catch等语句的干扰) ...原创 2022-02-20 21:40:44 · 514 阅读 · 0 评论 -
java异常处理方式
异常的处理:抓抛模型 过程一:“抛”:程序在正常执行的过程中一旦出现异常,就会在异常代码处,生成一个对应异常类的对象,并将此对象抛出。 一旦抛出对象后,其后的代码就不再执行 过程二:“抓”:可以理解为异常的处理方式: 方式一:try-catch-finally的使用 try{ //可能出现异常的代码 }catch(异常类型1 变量名1){ //处理异常的方式 catch(异常类型2 变量名2){ //处理异常的方式 catch(异常类型3 变量名3){ //处理异常的方式 } ..原创 2022-02-17 18:22:11 · 137 阅读 · 0 评论 -
常见异常举例
运行时异常: 1、空指针异常 package 异常处理; import org.junit.Test; public class ExceptionTest { //NullPointerException空指针异常 @Test public void test1(){ int[] arr=null; System.out.println(arr[3]); } } package 异常处理; import org.junit.Test; public class Excep原创 2022-02-16 14:35:42 · 276 阅读 · 0 评论 -
java异常处理
java语言中,将程序执行中发生的不正常情况称为异常(语法和逻辑错误不算异常) 异常可以分为两类 1、Error:java虚拟机无法解决的严重问题(如JVM系统错误、资源耗尽等等) 栈溢出:StackOverflowError 堆溢出:OutOfMemoryError 2、Exception:其他因编程错误导致的一般性问题,可以使用针对性的代码进行处理{ 1、空指针访问 2、试图读取不存在的文件 3、网络连接中断 4、数组角标越界} 遇到这些错误: {一种是一遇...原创 2022-02-15 10:41:32 · 142 阅读 · 0 评论 -
内部类的常见问题
1、如何实例化内部类对象 2、如何在成员内部类中区分调用外部类结构 3、开发中局部内部类的使用 public class InnerClassTest { public static void main(String[] args) { Person.Dog dog = new Person.Dog(); dog.jump(); Person p = new Person(); Person.Bird bird = p.new Bird(); bird.sing(); } }原创 2022-02-14 10:53:07 · 203 阅读 · 0 评论 -
内部类的使用
当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整结构又只为外部事物提供服务,那么整个内部的完整结构最好使用内部类。 内部类的分类:成员内部类(静态,非静态) 局部内部类(方法类,代码块内,构造器内) 作为外部类的成员 >可以调用外部类的结构 >可以用static修饰 ...原创 2022-02-11 19:12:57 · 132 阅读 · 0 评论 -
java 8中接口的新特性
除了定义全局常量static final public interface CompareA { public static void method1() { System.out.println("CompareA:北京"); } } 和抽象方法abstract之外,还可以定义静态方法、默认方法 public interface CompareA { // 静态方法 public static void method1() { System.out.println("Compare原创 2022-02-11 18:07:12 · 435 阅读 · 0 评论 -
接口的应用:工厂模式
目的:实现调用者和创建者的分离 简单工厂: interface Car { void run(); } class Audi implements Car { public void run() { System.out.println("奥迪跑"); } } class BYD implements Car { public void run() { System.out.println("比亚迪跑"); } } public class Carfactory {原创 2022-02-10 18:38:54 · 338 阅读 · 0 评论 -
接口的应用:代理模式(Proxy)
public class NetworkTest { public static void main(String[] args) { Server server = new Server(); ProxySever proxySever = new ProxySever(server); proxySever.browse(); } } interface Network { public void browse();// 浏览功能 } class Server implement.原创 2022-02-10 16:08:39 · 887 阅读 · 0 评论 -
接口基本概念
有时候必须从几个类中派生出一个子类,继承他们所有的属性和方法。但是java不支持多重继承。有了接口,就可以得到多重继承的效果。原创 2022-02-09 10:56:15 · 195 阅读 · 0 评论 -
多态应用模板方法的设计模式(Template)
当功能内部一部分实现是确定的,一部分实现是不确定的。这时可以把不确定的部分暴露出去,让子类去实现 在软件开发中实现一个算法时,整体步骤很固定、通用,这些步骤已经在父类中写好了。但是默写部分易变,易变部分可以抽象出来,供不同子类实现。这就是一种模板模式。 ...原创 2022-02-08 21:18:41 · 299 阅读 · 0 评论 -
创建抽象类的匿名子类对象
Person p=new Person(){ @Override public void eat(){ } } 其中Person类是一个抽象类,本来可以给重写了eat()方法后的子类重新赋个名字 此时可以直接在new Person()后直接重写abstract的方法于是乎变成了个重写了eat()方法后的匿名子类,创建的对象p为该匿名子类的对象 ...原创 2022-02-08 17:12:33 · 455 阅读 · 0 评论 -
抽象类和抽象方法的使用
有时候将一个类设计的非常抽象,以至于他没有具体的实例,这样的类叫做抽象类。 abstract关键字的使用 1、abstract可以用来修饰结构、类、方法 2、一旦父类抽象了,就不可以再实例化造对象 ps:父类还是应该提供构造器,便于子类实例化时调用super() 3、开发中,都会提供抽象类的子类,让子类实例化,完成相关操作 4、abstract修饰方法,没有方法体 这个例子不是没有方法体,不是抽象方法 public void eat(){ } 抽象方法的定义:只有方法的声明,没有方法原创 2022-02-08 16:12:11 · 1860 阅读 · 0 评论 -
static final 关键字使用常见问题
static修饰属性,相较于实例变量有哪些区别? static随着类的加载而加载; 早于对象的创建; 只要权限允许,可以通过对象.static 属性的方式进行调用。 存在于方法区的静态域中(field) final 可以用来修饰的结构和分别表示的意义: final可以用来修饰结构:类,方法,变量 详见final关键字_Accelerator-CSDN博客 代码实现单例设计模式的饿汉式: 详见饿汉式单例设计模式_Accelerator-CSDN博客 代码实现单例设计模式的懒汉式: 详..原创 2022-02-08 15:20:59 · 446 阅读 · 0 评论 -
final关键字
final 最终的 final可以用来修饰结构:类,方法,变量。 final修饰一个类: 不能再往下延续了,不能再有子类去继承了extends 比如:String类,System类,StringBuffer类 final class FinalA{ } String类为什么不能继承要声明为fianal? String类装char型数组,里面可以有的功能都有了,创个子类也搞不出什么新花样,所以直接声明为fianl final修饰方法: 表示此方法不可以再被重写了 final修饰变量:此时原创 2022-02-08 14:43:13 · 72 阅读 · 0 评论 -
属性可以赋值的位置
1、默认初始化 2、显示初始化 3、构造器中初始化 4、创建了对象之后利用对象.方法或对象.属性的方法赋值 5、在代码块中赋值 执行的先后顺序: 1>2/5>3>4 2和5不分先后,谁在程序中先声明就先执行,后来的会覆盖前面的 ...原创 2022-02-08 00:58:23 · 211 阅读 · 0 评论 -
类的成员 之 代码块
代码块或初始化块(搭建结构) public class BlockTest { } class Person { // 属性 String name; int age; static String desc = "阿巴阿巴"; //构造器 public Person() { } public Person(String name, int age) { super(); this.name = name; this.age = age; } // 方法 publ原创 2022-02-08 00:13:03 · 1189 阅读 · 0 评论 -
main()方法的使用说明
public static void main(String[] args){ } 1、main()方法作为程序的入口 2、main()方法也是一个普通的静态方法,可以通过类去调用 3、main()方法也可以作为和控制台交互的方式 public class MainDemo { public static void main(String[] args) { for (int i = 0; i < args.length; i++) { System.out.printl.原创 2022-02-07 19:32:28 · 568 阅读 · 0 评论 -
单例设计模式中懒汉式与饿汉式的区别
懒汉式和饿汉式的区别: 懒汉式-->啥时候用啥时候造,在get静态方法里再去造 比较懒,先创建个空的静态对象,在get方法里再去new对象 饿汉式-->直接在开始的创建静态对象时就创建好 比较饿,直接上来就给静态对象new初值 ...原创 2022-02-05 22:22:16 · 371 阅读 · 0 评论 -
单例模式的懒汉式实现
1、私有化类的构造器 2、先声明当前类对象,没有初始化 private Order instace = null; public class Order { private Order() { } private static Order instance = null; public static Order getInstance() { instance = new Order(); return instance; } } 这样会导致在 getInstance()原创 2022-02-05 22:18:09 · 195 阅读 · 0 评论 -
单例模式的饿汉式实现
1、私有化类的构造器 2、创建类的对象 3、提供公共的静态方法,返回类的对象 4、要求此对象也必须声明为静态的 public class bank { private bank() { } private static bank instance = new bank(); private static bank getInstance() { return instance; } public static void main(String[] args) { ba原创 2022-02-05 21:48:27 · 322 阅读 · 1 评论 -
关键字Static的使用
static 的使用方法原创 2022-02-04 22:59:42 · 196 阅读 · 0 评论 -
手动写的equals和自动生成的equals的区别
手动写的equals和自动生成的equals的区别 手动有漏洞:可能比较的值都相同但是类名不同 比如下面的user类有两个属性 String name; int age; user 类有个父类person 他也是这两个属性 String name; int age; 由于比较的是 this.age == u.age && this.name.equals(u.name) class User { String name; int age; public..原创 2022-02-04 21:14:31 · 282 阅读 · 0 评论 -
包装类5个常见问题
包装类5个常见问题 如何实现向下转型? 使用强转符() person p=new man() person p=new person()原创 2022-02-04 19:40:08 · 299 阅读 · 0 评论