编译型语言:

需要编译,把源码编译成为机器语言的文件。运行时不需要重新翻译,直接使用编译的结果就行了。

解释型语言:

编译型语言域解释型语言更快:

就好比现场翻译比书面翻译更快。

解释器是儿子,编译器是女儿

(解释器是一条一条的解释执行源语言。比如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基础复习相关推荐

  1. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

  2. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

  3. 2020604 Java基础复习

    2020/6/4 Java基础复习 Java特性和优势 1.简单性: Java是在C++的语法的基础再"减减".没有头文件,没有指针,也不用分配内存,所以相对来说比较简单; 2.面 ...

  4. Java基础复习(六)

    Java基础复习(六) 常见关键字总结 1.final关键字 final用来修饰类.方法和变量. (1)final修饰的类不能被继承,而且final修饰的类中,所有成员方法会被默认为final方法,不 ...

  5. Java基础复习-常用类

    Java基础复习-常用类 本文仅对学习过程中所缺java知识点的查缺补漏复习 String 代表字符串.Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现. St ...

  6. Java基础复习-八大基本数据类型-内存模型-基本算法-网络编程

    Java基础 数据类型: 基本数据类型: 整数型:byte short int long(数值型) 浮点型: float double(数值型) 字符型:char 布尔型:boolean 引用数据类型 ...

  7. java基础复习(练习写博客)

    文章目录 Java特性和优势 java三大版本 JDK.JRE.JVM(从前到后包含) Java开发环境搭建步骤 Java程序运行机制 IDE Java基础语法 一.注释.标识符.关键字 二.数据类型 ...

  8. Java基础复习总结笔记(上)

    前言 对Java部分基础知识进行复习总结,没事可以看看. 目录 一.基础语法 1.1 Java名词 1.2 Java关键字 1.3 基本数据类型(4类8种) (1)整数类型 (2)浮点类型 (3)字符 ...

  9. Java 基础复习实践 --- Hashcode Equals

    虽然很多知识点书籍都有整理,但是记性总是不好,所以决定将一些细小容易混淆的概念,通过简单的 Demo 实践,加深复习.特此开一个坑,坚持就是胜利. 本章内容主要为了理解以下几个知识点: equals( ...

最新文章

  1. java response 对象_82 Java基础 Response对象
  2. PHP serialize JSON 解析
  3. redis 集群讲解
  4. 坚持一个好习惯该有多难?
  5. 字节跳动AI Lab招聘算法工程师,含全职和实习
  6. 大数据学习笔记08:Java程序访问HDFS
  7. php7 编译 pdo mysql_php7 编译 pdo_mysql 问题, [mysql_driver.lo] Error 1
  8. ArrayList 一个面试题
  9. Java中几种高性能的队列
  10. 2016-2017-2 《Java 程序设计》课堂实践项目
  11. linux .deb后缀文件,tar.gz和bin,以及rpm,deb等linux后缀的文件的区别
  12. java 微博 api_Java使用新浪微博API开发微博应用的基本方法
  13. 数据分析 | 全距和四分位距分别是什么
  14. 关于GX WORKS2中M8002、M8012、M8013无法使用的问题
  15. 算笔账:养老保险应该少交还是多交
  16. c语言求解一元三次方程(二分法和公式法)
  17. EasyExcel 实现模板导出、模板导入分析功能
  18. WiredTiger系列2:Eviction详解
  19. 计算机硬件科研cpu飞腾,电脑硬件飞腾cpu什么架构
  20. Kubernetes RBAC 实战应用

热门文章

  1. Drill系列(1):Dremel的原理
  2. 大数据的四个成功案例(来自IT经理网)
  3. 【闲谈】我为什么不想回答你的问题
  4. 没有长夜痛哭的人,不足以谈人生
  5. VirtualBox快捷键
  6. 工程技术专业技术职务共分为13个等级
  7. 斐波那契螺旋线系列一:斐波那契数列介绍
  8. logback日志不打印到文件问题深入剖析
  9. 计算机应用深圳职业大三毕业设计,毕业设计(论文)文献综述-基于Web的家庭理财系统.docx...
  10. 千里眼-智行千里,眼见为实 源码分享