Java基础知识总结(超详细整理)

一:概述

1.1Java类及类的成员

属性、方法、构造器、代码块、内部类

(1)数组

java虚拟机内存划分

各区域作用

内存解析

基本使用

两个变量指向一个一维数组

没有new就不会在堆里新开辟空间

(2)对象数组

(3)方法

形参:方法声明时,一对小括号声明的一个或多个形式参数,简称形参

实参:方法被调用时,实际传递给形参的变量或常量,就称为实际参数,简称实参

值传递机制场景

方法内声明的局部变量

基本数据类型传递的是数据值

引用类型传递的是地址值

形参与实参

二:面向对象基础

2.1面向对象的特征

封装、继承、多态(抽象)

2.2其它关键字的使用

This、super、package、import、static、final、interface、abstract

2.3面向对象和面向过程

(1)面向过程

(2)面向对象

先找实现事情涉及到的主体(类)、后看类完成任务需要具备什么功能(方法)

2.4类和对象

(1)类的声明和使用

类的设计:设计类的成员,类的设计是为了实例化对象,调用类的属性和方法

(2)类的实例化

创建对象,是为了调用属性的类和方法。对象的实例化是对获取到类的属性和方法赋值

(3)对象在内存中分配涉及到的内存结构

刚创建对象时存在默认值

创建对象即开辟了空间,而变量是获取到了空间的首地址

两个变量指向的是同一个对象

(4)通过方法调用对象

每调用一个方法,相当于一个新的栈针

引用类型变量其实都是地址

返回值返回给调用者,返回给对象没有用,因为对象是栈针

main函数结束后,对应指针出栈,p1没了,堆内p1对应空间无指针指向,后期垃圾回收器将堆回收

三:面向对象三大特征

3.1 封装

(1)权限修饰符

(2)构造器

每个类都有构造器,包括抽象类(不能造对象)

声明

权限修饰符 类名(新参列表){}

作用

使用说明

(3)实例变量赋值过程

分类

执行顺序判断:根据打印值是否覆盖判断

执行先后顺序 执行次数

(4)JavaBean

JavaBean是一种Java语言写成的可重用组件

ideal技巧

Alt+inset:创建get、set方法

(5)关键字this

使用场景

概述

调用属性和方法

针对于方法内的使用情况(准确的说是非static1修饰的方法)

构造器内使用情况

this调用构造器

This()调用当前空参构造器

3.2 继承

(1)场景

继承不能打破封装性(虽然继承了但不能用)

(2)使用说明

(3)默认父类

(4)多层继承

(5)方法重写

定义

子类对父类继承过来的方法进行的覆盖、覆写的操作,就称为方法的重写

遵循规则

子类不能重写父类中声明为private权限修饰的方法

(6)super调用构造器

使用场景

属性不覆盖

若子类中声明了与父类同名属性,子类中包含两个同名属性

super调用属性、方法

super调用构造器

子类继承父类时,不会继承父类的构造器

在子类构造器首行

子类继承父类时不继承父类构造器,构造器只在同名类中有

子类构造器首行默认调用父类空参构造器

(7)子类对象实例化

从结果来看,体现为类的继承性

从过程来看

创建对象是new,构造器是用于初始化的

3.3 多态

(1)定义

新建的对象必须为定义的变量类型的子类

(2)使用前提

(3)适用性

使用场景

(4)好处

避免多次重载

新增子类时不用修改方法,对拓展进行开放,对修改进行关闭

(5)向下转型

父类变量接受了子类对象后,不能调用子类拥有的特定方法

(6)static

定义

实例变量是指每个对象都有自己的变量,被一个类所有实例所共享的成员变量叫类变量,不用创建对象也有

使用

一个更改,其它人用的时候也是改变了的(在内存空间中只有一份)

static修饰方法

(7)单例设计模式

定义

实现思路

(8)代码块

随着类的加载而执行

案例使用

(9)Final

fina修饰类表示类不能被继承,final修饰表示方法不能被重写

final修饰的变量其实就变成了常量,意味着一旦赋值,就不可更改

相关推荐
界面开发小八哥2 分钟前
「Java EE开发指南」如何使用MyEclipse的可视化JSF编辑器设计JSP?(二)
java·ide·人工智能·java-ee·myeclipse
代码狂人19 分钟前
Lua中使用module时踩过的坑
开发语言·lua
繁依Fanyi26 分钟前
ColorAid —— 一个面向设计师的色盲模拟工具开发记
开发语言·前端·vue.js·编辑器·codebuddy首席试玩官
易只轻松熊43 分钟前
C++(23):容器类<vector>
开发语言·数据结构·c++
Lu Yao_1 小时前
用golang实现二叉搜索树(BST)
开发语言·数据结构·golang
沐土Arvin2 小时前
前端图片上传组件实战:从动态销毁Input到全屏预览的全功能实现
开发语言·前端·javascript
找不到、了2 小时前
Spring-Beans的生命周期的介绍
java·开发语言·spring
caihuayuan42 小时前
React Native 0.68 安装react-native-picker报错:找不到compile
java·大数据·sql·spring·课程设计
(・Д・)ノ2 小时前
python打卡day29
开发语言·python
若水晴空初如梦2 小时前
QT聊天项目DAY11
开发语言·qt