20210726 java基础复习
编译型语言:
需要编译,把源码编译成为机器语言的文件。运行时不需要重新翻译,直接使用编译的结果就行了。
解释型语言:
编译型语言域解释型语言更快:
就好比现场翻译比书面翻译更快。
解释器是儿子,编译器是女儿
(解释器是一条一条的解释执行源语言。比如php,postscritp,javascript就是典型的解释性语言。
编译器是把源代码整个编译成目标代码,执行时不在需要编译器,直接在支持目标代码的平台上运行,这样执行效率比解释执行快很多。比如C语言代码被编译成二进制代码(exe程序),在windows平台上执行。)
封装:
类、对象、方法、属性:
创建类(其中包含类的属性、方法)—实例化对象(实例化一个对象,输出属性值、调用对象的方法)
类:抽象概念(猫)
对象:类的具体体现(田园猫)
方法:能做什么(跑,叫)
属性:毛色,年龄,品种
(属性不加任何修饰符时默认伟default,即只能跟这个类在同一个包中的类来访问)
方法重载:
1、同一类中
2、相同方法名,不同参数列表(顺序,个数,类型)
3、不限制返回值和访问修饰符
4、只关注传入参数的类型,与属性名无关。
方法重载:
外壳不变,核心重写。
1、有继承关系的子类中
2、相同方法名,参数列表相同(参数类型、个数、顺序),返回值相同
3、访问修饰符
4、与方法传入的参数名无关
单一职责原则(单一功能原则):
面向对象的原则,一个类中有且只有一个功能。
一个类的承载功能越多,耦合性越高,复用性越低。
尽量把不同的职责放在不同的类中。
实例化对象的过程:Cat one = new Cat();
声明对象 Cat one (在栈中)
实例化对象 new Cat() (在堆中)
两个不同的内存区域如何关联:
= 用赋值符号 ,将声明的对象指向具体的实例化空间.
堆和栈的区别:
1、堆栈空间分配
栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
2、堆栈缓存方式
栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放。
堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
3、效率比较
栈由系统自动分配,速度较快。但程序员是无法控制的。
堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便。
4、存储内容
栈: 在函数调用时,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。
当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向函数的返回地址,也就是主函数中的下一条指令的地址,程序由该点继续运行。
堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容由程序员安排
构造方法:
只能在对象实例化时使用
无返回值,构造方法名域类名相同,必须与NEW同时使用
没有显示定义构造方法的时候,系统对自动生成构造方法
(可在方法前加修饰符)
可有多个构造函数
默认构造方法的访问修饰符和类的访问修饰符相同(类为 public,构造函数也为 public;类改为 protected,构造函数也改为 protected)。
this关键字:
避免就近原则,指向当前对象
封装:
1、修改属性的可见性。(类内隐藏)
private限定只能在类内进行访问。
2、设置共有的get()、set()方法(完成对外的开放接口)
3、在get\set方法中添加对属性的限定。
static
有静态方法(类方法),静态属性(类属性)
静态属性的赋值:
对象名.属性名 或 类名.属性名
静态方法的调用:
对象名.方法名 或 类名.方法名
静态方法中不能访问非静态成员,只能访问静态成员(包括静态方法和静态属性)
如果要在静态方法中访问其他非静态属性和方法,可以通过实例化对象,然后用对象访问的方式。
静态方法中 不能使用this
static不能修饰普通类,但可以修饰内部类
父类static方法无法被子类重写。
内部类:将一个类定义在另一个给类里面或者方法里面,这样的类就被称为内部类
静态内部类对象的创建一般是外部类.内部类 类名 = new 外部类.内部类();
static不能修饰方法内的局部变量
而局部变量的作用域只能在他所属的{}之内。不可能是属于类或对象的。所以矛盾,故static不能修饰局部变量
代码块:(一个作用空间,代码块内的局部变量会在代码块结束后被回收)
普通代码块:
在方法中定义;可有多个;输出顺序和出现顺序一致;
public void run(){
{System.out.println(“我是普通代码块”)
}}
构造代码块:
在类中定义;对象创建被调用,调用在构造方法之前;可有多个;
静态代码块:
构造代码块前加static;可用多个;调用在构造代码块之前;
在实例化多个对象时:
静态代码块执行一次(类加载时执行一次),构造代码块执行多次(一次实例化执行一次)
构造代码块可以给成员属性赋值;静态代码块只能给静态属性赋值;如果需要给成员属性赋值,需要先实例化,再用对象进行赋值。
静态代码块>构造代码块>构造方法
继承:( A is a B)
访问修饰符:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zkwzP0FS-1631933541514)(C:\Users\zhangyn\AppData\Roaming\Typora\typora-user-images\image-20210707143210329.png)]
继承对象初始化过程:
父类静态成员–》父类静态代码块–》子类静态成员–》子类静态代码块(静态成员按出现顺序加载)
–》子类构造方法–》父类构造方法–》
父类属性–》父类构造代码块–》父类构造方法–》
子类属性–》子类构造代码块–》子类无参构造
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sDSC9YWr-1631933541518)(C:\Users\zhangyn\AppData\Roaming\Typora\typora-user-images\image-20210707165717709.png)]
父类静态成员—》子类静态成员—》父类对象构造—》子类对象构造
super
1、子类的构造过程中必须调用父类的构造方法。
2、子类若的构造方法中,没有显式指定调用父类的构造方法,则系统默认调用父类的无参构造方法。
3、如果子类的构造方法中,既没有显式调用父类的构造方法,父类又没有无参构造方法,编译器报错。
4、使用super调用父类的指定构造的方法,必须在子类构造方法的第一行。
this和super:
this:
1、访问当前类的成员方法 this.getName();
2、访问当前类的成员属性 this.name;
3、访问当前类的构造方法 this();
4、不能在静态方法中使用
super:
1、访问父类的成员方法 super.getName()
2、访问父类的成员属性super.name
3、访问父类的构造方法super()
4、不能在静态方法中使用
设计模式:
针对常见问题的效果较好的一般通用解决方式。
设计模式分类:
关注对象创建过程的模式:创建型模式
关注类和对象组合的模式:结构型模式
关注对象间的通信过程:行为型模式
单例模式:
要点:
1、类有且只有一个实例对象
2、类中必须自行创建实例
3、必须自行向整个系统提供这个实例
实现:
1、只提供私有构造方法(保证无法在类外实例化)
2、含有一个该类的静态私有对象(static)
3、提供一个静态的共有方法用于创建、获取静态私有对象
适用场景:
1、创建对象占用资源过多,但同时又需要用到该对象
2、对系统内资源要求统一读写 ,(如:读写配置信息)
3、多个实例存在时会引起程序错误(如:理财产品序列号)
多态:
分类:
编译时多态(设计时多态):方法重载
运行时多态
必要条件:
1、继承关系
2、父类引用指向子类对象
向上转型:
向下转型:
instanceof:
abstract:
abstract类:
父类要限制*子类必须要具有的能力*,不关心子类实现是可以建立抽象类。
不允许实例化;只能被继承;
可以通过引用指向子类实例
abstract方法:
抽象方法必须被子类重写,当子类没有重写父类抽象方法时,子类也必须是抽象类。
抽象方法创建时不允许有方法体。
包含抽象方法的类必须是抽象类;
抽象类中可以没有抽象方法。
- private,static,final 不能与abstract连用
JAVA的反射机制:
运行状态中对于任意的类都能知道它的属性和方法,对于任意一个对象,都能调用他的任意方法和属性。
反射机制的作用:
用来编写一些性能较高的代码、通用性很高的代码
反射常用对象:
Class:
Constructor:
Filed:
Method:
20210726 java基础复习相关推荐
- Java基础复习笔记系列 九 网络编程
Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...
- Java基础复习笔记系列 七 IO操作
Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...
- 2020604 Java基础复习
2020/6/4 Java基础复习 Java特性和优势 1.简单性: Java是在C++的语法的基础再"减减".没有头文件,没有指针,也不用分配内存,所以相对来说比较简单; 2.面 ...
- Java基础复习(六)
Java基础复习(六) 常见关键字总结 1.final关键字 final用来修饰类.方法和变量. (1)final修饰的类不能被继承,而且final修饰的类中,所有成员方法会被默认为final方法,不 ...
- Java基础复习-常用类
Java基础复习-常用类 本文仅对学习过程中所缺java知识点的查缺补漏复习 String 代表字符串.Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现. St ...
- Java基础复习-八大基本数据类型-内存模型-基本算法-网络编程
Java基础 数据类型: 基本数据类型: 整数型:byte short int long(数值型) 浮点型: float double(数值型) 字符型:char 布尔型:boolean 引用数据类型 ...
- java基础复习(练习写博客)
文章目录 Java特性和优势 java三大版本 JDK.JRE.JVM(从前到后包含) Java开发环境搭建步骤 Java程序运行机制 IDE Java基础语法 一.注释.标识符.关键字 二.数据类型 ...
- Java基础复习总结笔记(上)
前言 对Java部分基础知识进行复习总结,没事可以看看. 目录 一.基础语法 1.1 Java名词 1.2 Java关键字 1.3 基本数据类型(4类8种) (1)整数类型 (2)浮点类型 (3)字符 ...
- Java 基础复习实践 --- Hashcode Equals
虽然很多知识点书籍都有整理,但是记性总是不好,所以决定将一些细小容易混淆的概念,通过简单的 Demo 实践,加深复习.特此开一个坑,坚持就是胜利. 本章内容主要为了理解以下几个知识点: equals( ...
最新文章
- java response 对象_82 Java基础 Response对象
- PHP serialize JSON 解析
- redis 集群讲解
- 坚持一个好习惯该有多难?
- 字节跳动AI Lab招聘算法工程师,含全职和实习
- 大数据学习笔记08:Java程序访问HDFS
- php7 编译 pdo mysql_php7 编译 pdo_mysql 问题, [mysql_driver.lo] Error 1
- ArrayList 一个面试题
- Java中几种高性能的队列
- 2016-2017-2 《Java 程序设计》课堂实践项目
- linux .deb后缀文件,tar.gz和bin,以及rpm,deb等linux后缀的文件的区别
- java 微博 api_Java使用新浪微博API开发微博应用的基本方法
- 数据分析 | 全距和四分位距分别是什么
- 关于GX WORKS2中M8002、M8012、M8013无法使用的问题
- 算笔账:养老保险应该少交还是多交
- c语言求解一元三次方程(二分法和公式法)
- EasyExcel 实现模板导出、模板导入分析功能
- WiredTiger系列2:Eviction详解
- 计算机硬件科研cpu飞腾,电脑硬件飞腾cpu什么架构
- Kubernetes RBAC 实战应用