前言:大家好,我是阿杰,在向往大佬的路上坚定的走着。
本篇文章记录的基础知识,适合在学Java的小白,也适合复习中,面试中的大佬🤩🤩。
如果不足的地方希望各位兄弟指正,嘿嘿大家一起进步。✌✌
🏠个人主页:阿杰的博客
💪个人简介:大家好,我是阿杰,一个正在努力让自己变得更好的男人👨
目前状况🎉:24届毕业生,奋斗在找实习的路上🌟
🚗🚗为了让更多的人看到更优质的博客,阿杰正在努力的更新学习中心中的内容。
这里写目录标题
👻👻面向对象
面向对象和面向过程的区别:
面向对象:把构成问题的部分分解为一个一个对象,建立这些对象的目的不是实现一个一个步骤,而是为了描述某个事情再解决问题过程中发生的行为。目
的是写出通用的代码,加强代码的复用性。
面向过程:分析解决问题的步骤,用函数把这些步骤一个一个实现,使用时调用一个一个函数。
面向对象的特性:
-
封装
:把一些属性私有化,并且提给一些外界访问的接口 -
继承
:用已存在的类作为基础,扩展新的类。新的类可以定义新的属性或者方法,也可以继承原有类的属性和方法。通过继承很方便的进行代码复用。- 子类可以拥有父类的私有属性和方法。只是拥有,不能访问
- 子类可以自己的属性和方法,即对父类的扩展
- 子类可以对父类的方法进行重写,用自己的方式实现父类的方法
-
多态
:程序中引用变量
所指向的具体类型和
通过该引用变量发出的方法
在编译是并不确定。在程序运行时才确定,变量到底指向哪个类是实例对 象,引用的方法到底是哪个类中的实例方法。
重载(overload)和重写(override)的区别?
- 重载:发生在本类,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同、参数的顺序不同或者三者都不同)则视为重载和返回值没有关系;
- 重写:和父类的方法名,返回值,参数列表相同;和父类方法有一样的访问范围或者更高,不能比父类被重写方法声明更多的异常
访问修饰符 public、 private、 protected、以及不写(默认)的区别
- public 可以修饰接口、类、方法、属性、所有人可见
- private 可以修饰方法、属性 只用本类可见
不能修饰外部类
- protected 可以修饰方法、属性 同一包下和子类可见
不能修饰外部类
- default 默认修饰符 可以修饰接口、类、方法、属性、同一包下可见
this 关键字有什么作用?
代指本类对象
this的三种用法:
普通的直接引用
区分局部变量和全局变量
引用本身的构造方法
抽象类(abstract class)和接口(interface)有什么区别?
- 从设计层⾯来说,抽象是对类的抽象,是⼀种模板设计,⽽接⼝是对⾏为的抽象,是⼀种⾏为的规范。
- 从类的层面来说,一个类可以实现多个接口但是只能实现一个抽象类。接口本身可以通过entends 关键字扩展多个接口。
- 从方法层面来说
- 所有方法在接口中不能有实现(1.8版本开始可以有默认是实现),但是抽象类中可以有非抽象方法
- 接⼝⽅法默认修饰符是 public ,抽象⽅法可以有 public 、 protected 和 default 这些修饰符(抽象⽅法就是为了被重写所以不能使⽤ private 关键字修饰!)。
- 从变量层面来说,接口中除了static、final 变量,不能有其他变量,而抽象类中不一定。
总结⼀下 jdk7~jdk9 Java 中接⼝的变化:
- 在 jdk 7 或更早版本中,接⼝⾥⾯只能有常量变量和抽象⽅法。这些接⼝⽅法必须由选择实现接⼝的类实现。
- jdk 8 的时候接⼝可以有默认⽅法和静态⽅法功能。
- jdk 9 在接⼝中引⼊了私有⽅法和私有静态⽅法。
成员变量与局部变量的区别有哪些?
- 从语法上看 成员变量属于类 可以访问控制修饰符和static 修饰,而局部变量是方法中定义的参数或方法内的变量 不能被访问控制修饰符和static 修饰,但是都可以使用final所修饰
- 基本数据类型的变量,成员变量有默认值(final修饰的值必须显式的赋值),局部变量没有默认值。
- 从变量在内存中的时间来说: 成员变量随着对象的创建而创建,局部变量随着方法的调用而销毁。
- 从变量在内存中的空间来说:成员变量存入堆内存,局部变量存在栈内存,如果局部变量是引用数据类型,存入的是对堆内存对象地址的引用或者指向常量池的地址。
静态变量和实例变量的区别?静态方法、实例方法呢?
静态变量:被static修饰符修饰的变量,就是类变量。一个类不管创建了多少的对象,静态变量在内存中有且只有一个副本。
实例变量:必须存在某一个是实例,需要先创建对象才能访问实例对象。静态变量可以让多个对象共享内存。
静态方法:static 修饰的方法,也被称为类方法。在外部调⽤静态⽅法时,可以使⽤"类名.⽅法名"的⽅式,也可以使⽤"对象名.⽅法名"的⽅式。静态方法里不能访问类的非静态成员变量和方法。
实例方法:依存于类的实例,需要使用"对象名.⽅法名"的⽅式调用;可以访问类的所有成员变量和方法。
final 关键字有什么作用?
final 是最终的意思,可以修饰类,属性,方法
- 被final修饰的类不可继承
- 修饰的方法不可重写
- 被修饰的变量不可变 被修饰的变量必须显式的赋值,值得注意的是不可变值得是引用不可变,不是内容不可变。