- 博客(50)
- 资源 (28)
- 收藏
- 关注
原创 49.接口
接口的作用接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。接口和抽象类的区别?抽象类还提供某些具体实现,接口不提供任何实现,接口中所有方法都是抽象方法。接口是完全面向规范的,规定了一批类具有的公共方法规范。接口和实现类不是父子关系,是实现规则的关系。定义和使用接口定义接口的详细说明:接口的访问修饰符:只能是p...
2020-01-31 17:32:09 148
原创 48.抽象方法和抽象类
抽象方法使用abstract修饰的方法,没有方法体,只有声明抽象类包含抽象方法的类就是抽象类有抽象方法的类只能定义成抽象类抽象类不能实例化,即不能用new来实例化抽象类。抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用。抽象类只能用来被继承。抽象方法必须被子类实现。package OOprogress2;p...
2020-01-31 17:31:29 142
原创 47. final关键字
final关键字的作用:修饰变量: 被他修饰的变量不可改变。一旦赋了初值,就不能被重新赋值。final int MAX_SPEED = 120;修饰方法:该方法不可被子类重写。但是可以被重载!修饰类: 修饰的类不能被继承。比如:Math、String等。...
2020-01-31 17:30:58 166
原创 46.对象的转型(casting)
父类引用指向子类对象,我们称这个过程为向上转型,属于自动类型转换。向上转型后的父类引用变量只能调用它编译类型的方法,不能调用它运行时类型的方法。这时,我们就需要进行类型的强制转换,我们称之为向下转型!package OOprogress2;/* *对象转型 */public class testCasting { public static void main(String[] ...
2020-01-31 17:30:28 203
原创 45.多态(polymorphism)
多态指的是同一个方法调用,由于对象不同可能会有不同的行为。多态的存在要有3个必要条件:继承,方法重写,父类引用指向子类对象。父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了package OOprogress;/* * 测试多态 */public class testPolymorphism { public static void mai...
2020-01-31 17:29:50 237
原创 44.封装的使用细节
类的数据成员尽量private提供相应的get/set方法来访问相关属性,这些方法通常是public修饰的,以提供对属性的赋值与读取操作(注意:boolean变量的get方法是is开头!)。一些只用于本类的辅助性方法可以用private修饰,希望其他类调用的方法用public修饰。package private4element;/* * 数据成员私有化 * set/g...
2020-01-31 17:28:20 131
原创 43.封装encapsulation
优点:提高代码的安全性。提高代码的复用性。“高内聚”:封装细节,便于修改内部代码,提高可维护性。“低耦合”:简化外部调用,便于调用者使用,便于扩展和协作Java中4种“访问控制符”分别为private、default、protected、public它们说明了面向对象的封装性,所以我们要利用它们尽可能的让访问权限降到最低,从而提高安全性。 package p...
2020-01-31 17:27:54 219
原创 42.继承树追溯
构造方法调用顺序:构造方法第一句总是:super(…)来调用父类对应的构造方法。所以,流程就是:先向上追溯到Object,然后再依次向下执行类的初始化块和构造方法,直到当前子类为止。注:静态初始化块调用顺序,与构造方法调用顺序一样,不再重复。package OOprogress;public class testSuper02 { public static void m...
2020-01-31 17:26:39 156
原创 41.super关键字
super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性。使用super调用普通方法,语句没有位置限制,可以在子类中随便调用。若是构造方法的第一行代码没有显式的调用super(…)或者this(…);那么Java默认都会调用super(),含义是调用父类的无参数构造方法[继承树追溯原理]。这里的super()可以省略package OOprogress;/*...
2020-01-31 17:25:35 134
原创 40.==和equals方法
“==”代表比较双方是否相同。如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象。Object类中定义有:public boolean equals(Object obj)方法,提供定义“对象内容相等”的逻辑。比如,我们在公安系统中认为id相同的人就是同一个人、学籍系统中认为学号相同的人就是同一个人。Object 的 equals 方法默认就是比较两个对象的hashcod...
2020-01-31 17:20:37 181 1
原创 39.Object类
Object类是所有Java类的根基类,也就意味着所有的Java对象都拥有Object类的属性和方法。如果在类的声明中未使用extends关键字指明其父类,则默认继承Object类。toStringObject类中定义有public String toString()方法,其返回值是 String 类型。Object类中toString方法的源码为:public String toStr...
2020-01-30 21:16:30 207
原创 38.面向对象进阶extend,instanceof关键字和方法的重写
面向对象的三大特征:继承、封装、多态继承继承让我们更加容易实现类的扩展。 比如,我们定义了人类,再定义Boy类就只需要扩展人类即可。实现了代码的重用,不用再重新发明轮子(don’t reinvent wheels)。知识点父类也称基类,超类Java中类没有多继承只有单继承,接口有多继承子类继承父类,可以得到父类的全部属性和方法(除父类的构造方法),但不是都可以访问可以使用C...
2020-01-30 21:13:28 310
原创 37.包
包机制是Java中管理类的重要手段。 开发中,我们会遇到大量同名的类,通过包我们很容易对解决类重名的问题,也可以实现对类的有效管理。 包对于类,相当于文件夹对于文件的作用。我们通过package实现对类的管理,package的使用有两个要点:1. 通常是类的第一句非注释性语句。2. 包名:域名倒着写即可,再加上模块名,便于内部管理类。package的命名举例com.sun.test;...
2020-01-30 21:13:06 160
原创 36.参数传值机制
Java中,方法中所有参数都是“值传递”,也就是“传递的是值的副本”。 也就是说,我们得到的是“原参数的复印件,而不是原件”。因此,复印件改变不会影响原件。基本数据类型参数的传值传递的是值的副本。 副本改变不会影响原件。引用类型参数的传值传递的是值的副本。但是引用类型指的是“对象的地址”。因此,副本和原参数都指向了同一个“地址”,改变“副本指向地址对象的值,也意味着原参数指向对象...
2020-01-30 21:10:43 189
原创 35.静态初始化块
静态初始化块,用于类的初始化操作!在静态初始化块中不能直接访问非static成员。静态初始化块执行顺序(学完继承再看这里):1. 上溯到Object类,先执行Object的静态初始化块,再向下执行子类的静态初始化块,直到我们的类的静态初始化块为止。2. 构造方法执行顺序和上面顺序一样!!/** * 静态初始化块 * @author DELL * */public class t...
2020-01-30 21:10:06 139
原创 34.static关键字
在类中,用static声明的成员变量为静态成员变量,也称为类变量。 类变量的生命周期和类相同,在整个应用程序执行期间都有效。static修饰的成员变量和方法,从属于类。普通变量和方法从属于对象的。/** * 测试static关键字的用法 * @author DELL * */public class testStatic { int id; // id Strin...
2020-01-30 21:09:39 125
原创 33.this关键字
对象创建的过程和this的本质构造方法是创建Java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回该类的对象,但这个对象并不是完全由构造器负责创建。创建一个对象分为如下四步:1. 分配对象空间,并将对象成员变量初始化为0或空2. 执行属性值的显示初始化3. 执行构造方法4. 返回对象的地址给相关的变量this的本质就是“创建好的对象的地址”! 由于在构造方法调用前...
2020-01-30 21:09:05 127
原创 32.开发中容易造成内存泄露的操作
1. 在实际开发中,经常会造成系统的崩溃。如下这些操作我们应该注意这些使用场景。 请大家学完相关内容后,回头过来温习下面的内容。不要求此处掌握相关细节。如下四种情况时最容易造成内存泄露的场景,请大家开发时一定注意:创建大量无用对象比如,我们在需要大量拼接字符串时,使用了String而不是StringBuilder。String str = “”;for (int i = 0; i ...
2020-01-30 21:08:34 145
原创 31.垃圾回收机制原理及算法(Garbage Collection)
java引入了垃圾回收机制,令C++程序员最头疼的内存管理问题迎刃而解。Java程序员可以将更多的精力放到业务逻辑上而不是内存管理工作上,大大的提高了开发效率。垃圾回收原理和算法内存管理Java的内存管理很大程度指的就是对象的管理,其中包括对象空间的分配和释放。对象空间的分配:使用new关键字创建对象即可对象空间的释放:将对象赋值null即可。垃圾回收器将负责回收所有”不可达”对...
2020-01-30 21:07:56 191
原创 30.构造方法与重载
构造方法要点:1. 通过new关键字调用!!2. 构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能在构造器里使用return返回某个值。3. 如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数。如果已定义则编译器不会自动添加!4. 构造器的方法名必须和类名一致!class Point{ //数据成员 double x, y; //构造...
2020-01-30 19:35:30 183
原创 29.JVM内存
Java虚拟机的内存可以分为三个区域:栈stack、堆heap、方法区method area。栈的特点如下:1. 栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)2. JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)3. 栈属于线程私有,不能实现线程间的共享!4. 栈的存储特性是“先进后出,后进先出”5...
2020-01-29 19:40:33 112
原创 28.面向对象
类 class对象 object(instance)属性 fieldclass Computer { String brand; //品牌}public class classAndInstance { // field int id; String sname; int age; Computer comp; void stu...
2020-01-29 19:39:40 139
原创 27.递归
递归是一种常见的解决问题的方法,即把问题逐渐简单化。递归的基本思想就是“自己调用自己”,一个使用递归技术的方法将会直接或者间接的调用自己。利用递归可以用简单的程序来解决一些复杂的问题。比如:斐波那契数列的计算、汉诺塔、快排等问题。递归结构包括两个部分:1.定义递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归的结束条件。2.递归体。解答:什么时候需要调用自身方法。...
2020-01-29 19:39:02 129
原创 26.方法
方法就是一段用来完成特定功能的代码片段,类似于其它语言的函数。方法用于定义该类或该类的实例的行为特征和功能实现。 方法是类和对象行为特征的抽象。方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。public class Test20 { /** main方法:程序的入口 */ ...
2020-01-29 19:38:30 145
原创 25.语句块
语句块(有时叫做复合语句),是用花括号扩起的任意数量的简单Java语句。块确定了局部变量的作用域。块中的程序代码,作为一个整体,是要被一起执行的。块可以被嵌套在另一个块中,但是不能在两个嵌套的块内声明同名的变量。语句块可以使用外部的变量,而外部不能使用语句块中定义的变量,因为语句块中定义的变量作用域只限于语句块。public class Test19 { public static ...
2020-01-29 19:37:54 359
原创 24.循环
循环结构分两大类,一类是当型,一类是直到型。当型:当布尔表达式条件为true时,反复执行某语句,当布尔表达式的值为false时才停止循环,比如:while与for循环。直到型:先执行某语句, 再判断布尔表达式,如果为true,再执行某语句,如此反复,直到布尔表达式条件为false时才停止循环,比如do-while循环。while/** * public static vo...
2020-01-29 19:37:15 182
原创 23.选择结构
if单选择结构if语句对布尔表达式进行一次判定,若判定为真,则执行{}中的语句块,否则跳过该语句块。java.lang包中的Math类提供了一些用于数学计算的方法。/** * If * @author DELL * */public class TestIf { public static void main(String[] args) { double d = M...
2020-01-29 19:36:36 142
原创 22.Scanner获得键盘输入
import java.util.*; //或者import java.util.Scanner;/** * 测试获得键盘输入 * @author DELL * */public class TestScanner { public static void main(String[] args) { Scanner scanner = new Scanner(System....
2020-01-29 19:36:05 139
原创 21.自动类型转换
自动类型转换指的是容量小的数据类型可以自动转换为容量大的数据类型。红色的实线表示无数据丢失的自动类型转换,而虚线表示在转换时可能会有精度的损失。红色实线是没有精度损失的转换,蓝虚线是有精度损失的long是8字节,float是4字节,但是float比long所能表示的范围大,因此可以自动转换可以将整型常量直接赋值给byte、 short、 char等类型变量,而不需要进行强制类型转换...
2020-01-29 19:35:33 434
原创 20.运算符的优先级
逻辑与、逻辑或、逻辑非的优先级一定要熟悉!(逻辑非>逻辑与>逻辑或)。如:a||b&&c的运算结果是:a||(b&&c),而不是(a||b)&&c...
2020-01-29 19:35:03 176
原创 19.条件运算符
三目条件运算符语法格式:x ? y : z其中 x 为 boolean 类型表达式,先计算 x 的值,若为true,则整个运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。/** * 条件运算目 * @author DELL * */public class TestconditionalOperator { public static void main(...
2020-01-28 11:34:35 156
原创 18.字符串连接符
“+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。/** * 字符串连接符 * @author yuan * */public class TestStringConnector { public static void main(String[] args) { String a = "3"; in...
2020-01-28 11:34:04 464
原创 17.位运算符
public class TestBitOperator { public static void main(String[] args) { int a = 3; int b = 4; System.out.println(a&b); System.out.println(a|b); System.out.println(a^b); Syste...
2020-01-28 11:33:27 152
原创 16.逻辑运算符
逻辑运算的操作数和运算结果都是boolean值。短路与和短路或采用短路的方式。从左到右计算,如果只通过运算符左边的操作数就能够确定该逻辑表达式的值,则不会继续计算运算符右边的操作数,提高效率。public class TestLogicalOperator { public static void main(String[] args) { boolean b1 = true; ...
2020-01-28 11:33:03 238
原创 15.关系运算符
注意事项=是赋值运算符,而真正的判断两个操作数是否相等的运算符是==。==、!= 是所有(基本和引用)数据类型都可以使用'> 、>=、 <、 <= 仅针对数值类型(byte/short/int/long, float/double。以及char)关系运算的结果是布尔值:true/false;...
2020-01-28 11:32:30 204
原创 14.运算符(operator)
整数运算:1. 如果两个操作数有一个为Long, 则结果也为long。2. 没有long时,结果为int。即使操作数全为short,byte,结果也是int。浮点运算:3. 如果两个操作数有一个为double,则结果为double。4. 只有两个操作数都是float,则结果才为float。取模运算:1.其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数”符号和左边操作数相...
2020-01-28 11:31:49 217
原创 13.boolean类型变量和常量
boolean类型有两个常量值,true和false,在内存中占一位(不是一个字节),不可以使用 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。 boolean 类型用来判断逻辑条件,一般用于程序流程控制public class TestPrimitiveDataTypeboolean { public static void main(String[] args)...
2020-01-28 11:31:17 776
原创 12.字符型变量和常量
字符型在内存中占2个字节,在Java中使用单引号来表示字符常量。例如’A’是一个字符,它与”A”是不同的,”A”表示含有一个字符的字符串。char 类型用来表示在Unicode编码表中的字符。Unicode编码被设计用来处理各种语言的文字,它占2个字节,可允许有65536个字符。Unicode具有从0到65535之间的编码,他们通常用从’\u0000’到’\uFFFF’之间的十六进制值来表示...
2020-01-28 11:30:50 674
原创 11.浮点型变量和常量
浮点型可分为float类型和double类型float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。而double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。浮点型常量默认类型也是double。Java浮点类型常量有两种表示形式十进制数形式,例如:3.14 ...
2020-01-28 11:30:15 659
原创 10.整形变量和常量
Java 语言整型常量的四种表示形式十进制整数,如:99, -500, 0八进制整数,要求以 0 开头,如:015十六进制数,要求 0x 或 0X 开头,如:0x15二进制数,要求0b或0B开头,如:0b01110011public class TestPrimitiveDataType { public static void main(String[] args) { in...
2020-01-28 11:29:43 277
KaTeX教程KaTeX教程KaTeX
2022-06-06
操作系统课件习题整合 老师带领复习第一遍删减版
2021-01-09
西安财经学院试题11级操作系统(计本网络)
2021-01-09
博客园stdc++.h头文件源码
2020-04-26
万能头文件stdc++.h
2020-04-26
2017美赛优秀论文.zip
2019-11-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人