![](https://img-blog.csdnimg.cn/20200530224038968.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
从零开始温习java
从零开始温习java
对抗路、余温
测试小白
展开
-
java温习*(24):throw和throws的区别
原创 2020-08-21 16:09:43 · 120 阅读 · 0 评论 -
java温习*(23):关于内部类的常见问题
1、方法内部类中为什么不能有静态成员?由于static类型的属性和方法,在类加载的时候就会存在于内存中。因此要想使用某个类的static属性和方法,那么这个类必须要先加载到虚拟机中。但是,普通的方法内部类并不会随外部类一起加载,只有在实例化外部类之后才会加载。因此,如果在外部类并没有实例化,内部类还没有加载的时候,直接调用内部类的静态成员或方法,这明显是矛盾的。所以普通的方法内部类不能有静态成员变量或静态方法。2**、为什么方法中返回值是Object,返回的是方法调用还不报错?**这里并不是返回原创 2020-07-06 23:29:37 · 295 阅读 · 0 评论 -
java温习*(22):常见内部类的比较
在Java中,程序是由类构建而成的。而在一个类的内部也可以声明类,我们把这样的类叫做内部类,包裹内部类的称为外部类。在本节中,我们将多维度总结常用的内部类及其各自的特点和应用。特点:1、内部类定义为public时可以与文件名不同2、内部类一旦编译成功,会成为完全不同的两类。outer.class 和 outer$inner.class 两类。(其中,outer和inner分别代表内、外部类)3、内部类可以通过private修饰4、通过内部类可以更好的体现封装以及代码编写的灵活性。原创 2020-07-06 23:24:22 · 161 阅读 · 0 评论 -
java温习*(21):接口中的内部类应用
我们在实际开发过程中,如果想要创建某些公共代码,使得它们可以被某个接口的所有不同实现所共用,那么接口内部的嵌套类会显得很方便。也就是说,在接口中可以含有内部 类,实现类可以根据各自的需求进行有针对性的复用和调整。在这里,将结合案例分别展示接口中放置普通成员内部类和抽象成员内部类的特点及应用。譬如下例所示:定义接口IOuterInterface,其中分别定义了常量TEMP、抽象方法abMethod、默认方法deMethod、静态方法stMethod、普通成员内部类InnerClass和抽象成员内部原创 2020-07-06 23:12:47 · 202 阅读 · 0 评论 -
java温习*(20):UML中的类关系表示(下)
1、依赖依赖就是一个类A 使用到了另一个类B,即一个类的实现需要另一个类的协助。而这种使用关系是具有临时性的、相对弱的。它们之间是“use a”的关系。通常,当我们在类A中,把类B的对象作为方法参数时;方法中使用到了类B对象作为局部变量时,体现的就是两者之间的依赖关系。建议:尽量避免双向依赖。在 UML 类图设计中,依赖用一条带箭头的虚线表示,从A类指向依赖的B类。譬如:某人要过河,需要借用一条船,此时,人与船之间的关系就是依赖。即在人类的过河方法中,需要依赖船的对象作为方法的输入参数。此时,箭头由原创 2020-07-05 12:22:49 · 181 阅读 · 0 评论 -
java温习*(19):UML中的类关系表示(上)
UML(Unified Modeling Language), 又称统一建模语言或标准建模语言。它是一种支持模型化和软件系统开发的图形化语言。它可以为软件开发的所有阶段提供模型化和可视化支持, 可用于多种类型软件系统开发建模的各个阶段。通常我们会结合UML图例来表示类与类之间的各种关系。类的层次结构代表类与类之间的关系,类的关系有很多种,包括泛化、实现、依赖、关联、聚合和组合。这些关系在大的类别上还可分为两种:横向关系和纵向关系,其中,纵向关系就是泛化、实现,而横向关系就是剩下的 4 种,它们的强弱原创 2020-07-05 12:20:32 · 136 阅读 · 0 评论 -
java温习*(18):接口和抽象类的比较
1-16 接口和抽象类的比较接口和抽象类的比较抽象类(abstract class)和接口(Interface)是Java语言中面向对象能力两种重要的体现,“接口和抽象类在应用上看起来有很多相似之处,那我是不是只需要掌握其中一种就可以了呢?”下面我们将从多维度,分别总结一下接口与抽象类的区别,方便大家灵活应用。语法:抽象类访问修饰符 abstract class 类名{//可以包含下列成员成员属性、类属性;成员方法、类方法;抽象方法;构造方法;}接口访问修原创 2020-07-05 12:17:12 · 109 阅读 · 0 评论 -
java温习*(17):关于接口应用常见问题(Ⅲ )
1、子接口能继承父接口的所有成员吗?如果是单继承,即子接口只有一个父接口,则可继承父接口中定义的常量、抽象方法、默认方法,无法继承静态方法,如下图(1、2)图(1)图(2)如果是多继承,即子接口有多个父接口,则只可继承父接口中定义的抽象方法,常量和默认方法则无法分辨应用哪个。如下图(3、4)(图3)(图4)2、多接口实现时,相同样式的成员该如何判断调用的是哪个?当多个接口中存在相同成员时如上图(3),如类同时实现多接口,且在类中无重新实现,则无法判断调用哪个,如下图(5)..原创 2020-07-05 12:15:55 · 409 阅读 · 0 评论 -
java温习*(16):关于接口应用常见问题(Ⅱ )
1、一个Java文件里可以存在几个接口?在一个Java文件中可以存在多个类,多个接口,但是只能存在一个public修饰的类或接口,且此时文件名需要与public修饰的类或者接口同名。如下图所示当将文件中class One前面加入public,如下图所示将会报错:2、接口及其中成员默认修饰符都是什么?通常情况下如何访问?文件中定义接口:默认访问修饰符是:包内可见。接口中常量:默认访问修饰符是:public static final 这三个任意缺省都不影响应用可通过“接口..原创 2020-07-05 11:55:22 · 230 阅读 · 0 评论 -
java温习*(15):关于接口应用常见问题(Ⅰ)
1、当父类实现接口,子类继承父类后,是否也要实现接口里的全部方法呢?子类是否需要实现接口中全部方法,需要结合不同情况进行分析,下面将结合示例分别演示。譬如:A类实现了B接口,C类继承了A类(图1)如果父类未实现接口中全部方法,则父类需要设置为抽象类,子类如不想继续抽象,则需要实现相关未实现方法,否则将继续为抽象类(如下图2-6)(图2)(图3)(图4)(图5)(图6)如父类中已经实现了接口中所有方法,子类中如无特殊需要,无需重新实现接口中方法(如下图7、8)(图7)原创 2020-07-05 11:51:54 · 274 阅读 · 1 评论 -
java温习*(14):关于抽象类应用总结
作用:在面向对象的概念中,所有的对象都是通过类来描述的,但并不是说所有的类都是用来描述对象的。当一个类中没有包含足够的信息以描绘一个具体的对象时,这样的类就是抽象类。定义抽象类的意义在于: 为其子类提供一个公共的类型(父类引用指向子类对象) 封装子类中的重复内容(成员变量和方法) 将父类设计成抽象类后,既可借由父子继承关系限制子类的设计随意性,在一定程度上避免了无意义父类的实例化。 语法:特点:抽象类不允许直接实例化,换句话说抽象类不能创建对象,它只能作原创 2020-07-04 11:50:33 · 201 阅读 · 0 评论 -
java温习*(13):关于向下转型易出现错误总结
1、向下转型需在满足向上转型前提下进行譬如:如下图所示代码中,父类Person及两个子类Chinese,French,子类中既有重写父类的方法,又有各自独立的方法。测试类中:先经过向上转型设置one指向Chinese,后由French强转one,此时虽然编译不会报错,但会产生运行时异常。因此:请注意,向下转型时,不允许转为非原始类型,即“哪来回哪去”2、类型转换时的括号应用接上面父类Person及两个子类Chinese,French代码,此时测试类中,先经过向上转型设置one原创 2020-07-01 23:07:03 · 899 阅读 · 0 评论 -
java温习*(12):多态关于向上(或向下)类型转换的应用问题
1、向上转型的有什么用处?直接创建子类对象不是更方便?向上转型的语法:父类类型 父类引用 = new 子类类型(参数);即:使用父类引用指向子类实例化对象,也称为自动转型或隐式转型。此时,该引用只能访问子类继承或重写父类的方法,而不能直接访问子类特有的方法。向上转型多适用于,有多个同父子类共同应用的场景,此时,可以借由父类引用,根据实际需要,转型为特定的子类对象实现多态。譬如:父类Person,有3个子类Chinese、French、Russian,类中分别重写了eat方法此时,原创 2020-07-01 23:04:59 · 273 阅读 · 0 评论 -
java温习*(11):向上转型和动态绑定机制
多态的实现可以借由向上转型和动态绑定机制来完成,其中,向上转型实现了将子类对象向上转型为父类类型;而动态绑定机制能识别出对象转型前的类型,从而自动调用该类的方法,两者相辅相成。在本节中,我们将从多角度总结,向上转型与动态绑定机制的特点和注意事项。语法:向上转型又称为自动转型、隐式转型。即是父类引用指向子类实例,也表示子类的对象可以赋值给父类的对象。向上转型是安全的,因为任何子类都继承并接受了父类的非私有成员方法。绑定机制绑定就是将一个方法调用同一个方法所在的类连接到一起。Java中存在静态绑原创 2020-07-01 17:11:04 · 203 阅读 · 0 评论 -
java温习*(10):关于单例模式的常见问题
饿汉式//饿汉式-创建对象实例的时候直接初始化//空间换时间//在类进行加载的时候,完成了实例化操作,一直存在于jvm中,需要的时候 直接去jvm拿//静态的属性只会加载一次,第一次实例化的时候分配空间,以后再实例化这个类的时候。不会再分配内存空间public class SingletonOne {// 1.创建类中私有构造 private SingletonOne() { }// 2.创建该类型的私有静态实例 private static SingletonOne inst原创 2020-07-01 15:43:47 · 205 阅读 · 0 评论 -
java温习*(9):关于Object的常见问题
1、==到底比较的是值还是地址呢?==比较的是变量里存储的值,不过,对于基本数据类型而言(例如:int、float、double等),变量里存储的是数值,因此,==比较的是数值是否相等;而对于引用数据类型(例如String、自定义类等),变量里存的是对象的内存地址,因此,==默认比较的是是否指向同一内存空间,也就是地址是否相同。2、下面代码中:A) 如果是比较one和two的,那么,哪一个是当前对象哪一个是传入对象?B) 为什么obj需要强制转化?C) if语句中,为什么第一个表达式用到 eq原创 2020-06-28 17:09:54 · 233 阅读 · 0 评论 -
java温习*(8):关于super的常见问题
1、子类构造默认调用父类无参构造方法,那么如果父类中没有无参的构造方法只有有参的构造方法,一定会编译报错吗?编译报错是否就代表无法正常运行?答案是:此时一定会编译报错,但不一定会无法正常运行,需要看具体编码情况。下面我们结合示例来看一下:譬如设定自定义类:Paternal、Modern为继承关系,且满足父类中只有带参构造方法。定义Test类为测试类,完成Modern对象构建。Ps:此处由于展示篇幅有限,暂不考虑属性的访问权限子类中没有任何构造方法中通过super调用父类指定带参构造原创 2020-06-28 09:57:15 · 537 阅读 · 0 评论 -
java温习*(7):引用数据类型应用---成员属性
作用:引用数据类型:完成实例化后,可借由该类型对象获取其中非私有成员。基本数据类型:无需初始化,只能操作对应类型具体数值。初始值:引用数据类型:未进行实例化时为null;进行实例化后,将依据对应的构造方法完成初始成员信息设置。基本数据类型:无需初始化,各类型有各自默认值(譬如:int是0,double是0.0等)调用方式:Ps:此时指在类内方法中访问,暂不考虑static修饰的情况引用数据类型:如未进行实例化,方法中调用对象非私有成员时会报空指针异常(具体内容,后面小节中会详细介原创 2020-06-23 22:29:36 · 317 阅读 · 0 评论 -
java温习*(6):static关键字的应用---静态代码块
应用三:static + 代码块 vs 代码块概念:静态代码块:被static修饰的,定义在类内部,用{}括起的代码段。构造代码块:没有被static修饰的,定义在类内部,用{}括起的代码段。普通代码块:定义在方法内部,用{}括起的代码段。特征:静态代码块: 只能出现在类内,不允许出现在方法内。 可以出现多次,按顺序在类加载时执行。 无论该类实例化多少对象,只执行一次。 构造代码块: 可以在类内出现多次,按顺序在每个对象实例化时执行。 执原创 2020-06-21 10:26:04 · 156 阅读 · 0 评论 -
java温习*(5):static关键字的应用---静态方法
应用二:static + 成员方法 vs 成员方法概念:静态方法:用static修饰的成员方法,通常也称为静态方法、类方法、全局方法等。非静态方法:没有被static修饰的成员方法,也称为叫做非静态方法、实例方法,对象方法等。特征:与静态成员相似,静态方法属于整个类的,由类所进行维护,优先于对象而存在,因此可以通过类名和对象名两种方式访问,也因此在静态方法中无法直接访问同类中的非静态成员。示例:定义国产车类CarDemo,分别包含静态属性firm,对象属性color、price原创 2020-06-20 17:10:03 · 202 阅读 · 0 评论 -
java温习*(4):static关键字的应用-成员变量
static是 Java中常用的关键字,代表“全局”或者“静态”的意思。关于static的特征,可以理解为:方便在没有创建对象的情况下来进行某些操作。通常可用于修饰成员变量和方法,也可以形成静态代码块。实际应用中,可将需频繁操作、通用型信息设置、公共组件封装等操作设置为“静态”。在本节中,我们将针对“static + 成员变量”的应用进行相关内容总结。应用一:static + 成员变量 vs 成员变量概念:静态成员:用static修饰的成员变量,通常也称为静态成员、静态属性、类成员、全局属性原创 2020-06-20 16:42:52 · 132 阅读 · 0 评论 -
java温习*(3):运算符的优先级
运算符从左到右,开始运算,优先级下面图片中自上而下,先括号在++,!等原创 2020-06-01 22:36:08 · 112 阅读 · 0 评论 -
java温习*(2):基本数据类型
1.基本数据类型存储2.自动类型转换顺序原创 2020-05-31 16:32:03 · 178 阅读 · 0 评论 -
java温习*(1):初识java
1.Jvm-java虚拟机 2.JVM是java平台无关性实现的关键 3.xxx.java文件通过编译器compiler,生产xxx.class字节码文件,字节码文件交由解释器interpreter执行,生成可执行程序,解释执行过程是由java虚拟机jvm来完成JDK-java语言的软件开发工具包 二个主要组件: -javac -编译器,将源程序转成字节码 -java -运行编译后的java程序(.class后缀的) JRE-java运行环境(运行java只需安装...原创 2020-05-30 23:04:14 · 220 阅读 · 0 评论