Java核心知识点大全(持续更新中)

* double 占八个字节-1.798E308~1.798E308

  • 字符型

* char 占两个字节 0~65535

  • 布尔型

* boolean

* boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小

4.常用排序

(1)冒泡排序:相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处

public void bubbleSort(int array[]) {

int t = 0;

for (int i = 0; i < array.length - 1; i++) {

for (int j = 0; j < array.length - 1 - i; j++) {

if (array[j] > array[j + 1]) {

t = array[j];

array[j] = array[j + 1];

array[j + 1] = t;

}

}

}

}

(2)选择排序:从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处

public void selectSort(int array[]) {

int t = 0;

for (int i = 0; i < array.length - 1; i++) {

for (int j = i + 1; j < array.length; j++) {

if (array[i] > array[j]) {

t = array[i];

array[i] = array[j];

array[j] = t;

}

}

}

}

5.成员变量和局部变量的区别

  • A:在类中的位置不同

  • 成员变量:在类中方法外

  • 局部变量:在方法定义中或者方法声明上

  • B:在内存中的位置不同

  • 成员变量:在堆内存(成员变量属于对象,对象进堆内存)

  • 局部变量:在栈内存(局部变量属于方法,方法进栈内存)

  • C:生命周期不同

  • 成员变量:随着对象的创建而存在,随着对象的消失而消失

  • 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

  • D:初始化值不同

  • 成员变量:有默认初始化值

  • 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。

  • 注意事项:

  • 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。

  • 基本数据类型变量包括哪些:byte,short,int,long,float,double,boolean,char

  • 引用数据类型变量包括哪些:数组,类,接口,枚举

6.static关键字的注意事项

  • a:在静态方法中是没有this关键字的

  • 如何理解呢?

  • 静态是随着类的加载而加载,this是随着对象的创建而存在。

  • 静态比对象先存在。

  • b:静态方法只能访问静态的成员变量和静态的成员方法

  • 静态方法:

  • 成员变量:只能访问静态变量

  • 成员方法:只能访问静态成员方法

  • 非静态方法:

  • 成员变量:可以是静态的,也可以是非静态的

  • 成员方法:可是是静态的成员方法,也可以是非静态的成员方法。

  • 简单记:

  • 静态只能访问静态。

7.静态变量和成员变量的区别

  • 静态变量也叫类变量 成员变量也叫对象变量

  • A:所属不同

  • 静态变量属于类,所以也称为为类变量

  • 成员变量属于对象,所以也称为实例变量(对象变量)

  • B:内存中位置不同

  • 静态变量存储于方法区的静态区

  • 成员变量存储于堆内存

  • C:内存出现时间不同

  • 静态变量随着类的加载而加载,随着类的消失而消失

  • 成员变量随着对象的创建而存在,随着对象的消失而消失

  • D:调用不同

  • 静态变量可以通过类名调用,也可以通过对象调用

  • 成员变量只能通过对 象名调用

如果一个类中所有的方法都是静态的,需要私有构造方法 private ArrayTools() {}

8.继承

(1) 继承(extends)

* 让类与类之间产生关系,子父类关系

(2)继承的好处

* a:提高了代码的复用性

* b:提高了代码的维护性

* c:让类与类之间产生了关系,是多态的前提

(3)继承的弊端

* 类的耦合性增强了。

  • 开发的原则:高内聚,低耦合。

  • 耦合:类与类的关系

  • 内聚:就是自己完成某件事情的能力

9.this和super的区别和应用

  • A:this和super都代表什么

  • this:代表当前对象的引用,谁来调用我,我就代表谁

  • super:代表当前对象父类的引用

  • B:this和super的使用区别

  • a:调用成员变量

  • this.成员变量 调用本类的成员变量,也可以调用父类的成员变量

  • super.成员变量 调用父类的成员变量

  • b:调用构造方法

  • this(…) 调用本类的构造方法

  • super(…) 调用父类的构造方法

  • c:调用成员方法

  • this.成员方法 调用本类的成员方法,也可以调用父类的方法

  • super.成员方法 调用父类的成员方法

10.多态的概述

  • A:多态(polymorphic)概述

  • 事物存在的多种形态

  • B:多态前提

  • a:要有继承关系。

  • b:要有方法重写。

  • c:要有父类引用指向子类对象。

  • C:abstract不能和哪些关键字共存?

static final private

11.多态中的成员访问特点

  • 成员变量

  • 编译看左边(父类),运行看左边(父类)。

  • 成员方法

  • 编译看左边(父类),运行看右边(子类)。

  • 静态方法

  • 编译看左边(父类),运行看左边(父类)。

  • (静态和类相关,算不上重写,所以,访问还是左边的)

  • 只有非静态的成员方法,编译看左边,运行看右边

12.接口的概述及其特点

  • A:接口概述

  • 从狭义的角度讲就是指java中的interface

  • 从广义的角度讲对外提供规则的都是接口

  • B:接口特点

  • a:接口用关键字interface表示

  • interface 接口名 {}

  • b:类实现接口用implements表示

  • class 类名 implements 接口名 {}

  • c:接口不能实例化

  • 那么,接口如何实例化呢?

  • 按照多态的方式来实例化。

  • d:接口的子类

  • a:可以是抽象类。但是意义不大。

  • b:可以是具体类。要重写接口中的所有抽象方法。(推荐方案)

  • e:接口中所有的方法都是抽象的

13.抽象类和接口的区别

  • A:成员区别

  • 抽象类:

  • 成员变量:可以变量,也可以常量

  • 构造方法:有

  • 成员方法:可以抽象,也可以非抽象

  • 接口:

  • 成员变量:只可以常量(默认public static final修饰)

  • 构造方法:无

  • 成员方法:只可以抽象(默认public abstract修饰)

  • B:关系区别

  • 类与类

  • 继承,单继承

  • 类与接口

  • 实现,单实现,多实现

  • 接口与接口

  • 继承,单继承,多继承

  • C:设计理念区别

  • 抽象类 被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能。

  • 接口 被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能。

14.四种权限修饰符的测试

权限\类 | 本类 | 同一个包下(子类和无关类) | 不同包下(子类) | 不同包下(无关类)

private Y

默认 Y Y

protected Y Y Y

public Y Y Y Y

15.类及其组成所使用的常见修饰符

  • A:修饰符:

  • 权限修饰符:private,默认的,protected,public

  • 状态修饰符:static,final

  • 抽象修饰符:abstract

  • B:类:

  • 权限修饰符:默认修饰符,public

  • 状态修饰符:final

  • 抽象修饰符:abstract

  • 用的最多的就是:public

  • C:成员变量:

  • 权限修饰符:private,默认的,protected,public

  • 状态修饰符:static,final

  • 用的最多的就是:private

  • D:构造方法:

  • 权限修饰符:private,默认的,protected,public

  • 用的最多的就是:public

  • E:成员方法:

  • 权限修饰符:private,默认的,protected,public

  • 状态修饰符:static,final

  • 抽象修饰符:abstract

  • 用的最多的就是:public

  • F:除此以外的组合规则:

  • 成员变量:public static final

  • 成员方法:

  • public static

  • public abstract

  • public final

16.Eclipse中快捷键的使用

  • A:新建 ctrl + n

  • B:格式化 ctrl+shift+f

  • C:导入包 ctrl+shift+o

  • D:注释 ctrl+/,ctrl+shift+/,ctrl+shift+\

  • E:代码上下移动 选中代码alt+上/下箭头

  • F:查看源码 选中类名(F3或者Ctrl+鼠标点击)

  • G:查找具体的类 ctrl + shift + t

  • H:查找具体类的具体方法 ctrl + o

  • I:给建议 ctrl+1,根据右边生成左边的数据类型,生成方法

  • J:删除代码行 ctrl + d

  • K:抽取方法alt + shift + m

  • L:改名alt + shift + r

  • M:查找 ctrl + f

  • N:向上/向下复制一行:ctrl + alt + 上/下箭头

  • O:抽取局部变量:alt + shift + L

17.==号和equals方法的区别

相同点:都是作比较的,返回的都是布尔类型。

不同点:

(1)==:

  • ==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,

基本数据类型比较的是值, 引用数据类型比较的是地址值

(2)equals:

  • equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,

如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,

重写后的equals方法比较的是对象中的属性

18.集合部分总结

  • Collection

* List(存取有序,有索引,可以重复)

* ArrayList

底层是数组实现的,线程不安全,查找和修改快,增和删比较慢

* LinkedList

底层是链表实现的,线程不安全,增和删比较快,查找和修改比较慢

* Vector

底层是数组实现的,线程安全的,无论增删改查都慢

如果查找和修改多,用ArrayList

如果增和删多,用LinkedList

如果都多,用ArrayList

* Set(存取无序,无索引,不可以重复)

* HashSet

底层是哈希算法实现

LinkedHashSet

底层是链表实现,但是也是可以保证元素唯一,和HashSet原理一样

* TreeSet

底层是二叉树算法实现

一般在开发的时候不需要对存储的元素排序,所以在开发的时候大多用HashSet,HashSet的效率比较高

TreeSet在面试的时候比较多,问你有几种排序方式,和几种排序方式的区别

  • Map

* HashMap

底层是哈希算法,针对键

* LinkedHashMap

底层是链表,针对键

* TreeMap

底层是二叉树算法,针对键

开发中用HashMap比较多

19.内存输出流

  • 1.什么是内存输出流

  • 该输出流可以向内存中写数据, 把内存当作一个缓冲区, 写出之后可以一次性获取出所有数据

  • 2.使用方式

  • 创建对象: new ByteArrayOutputStream()

  • 写出数据: write(int), write(byte[])

  • 获取数据: toByteArray()

FileInputStream fis = new FileInputStream(“a.txt”);

ByteArrayOutputStream baos = new ByteArrayOutputStream();

int b;

while((b = fis.read()) != -1) {

baos.write(b);

}

//将内存缓冲区中所有的字节存储在newArr中

//byte[] newArr = baos.toByteArray();

//System.out.println(new String(newArr));

System.out.println(baos);

fis.close();

20.单例设计模式(掌握)

  • 单例设计模式:保证类在内存中只有一个对象。

  • 如何保证类在内存中只有一个对象呢?

  • (1)控制类的创建,不让其他类来创建本类的对象。private

  • (2)在本类中定义一个本类的对象。Singleton s;

  • (3)提供公共的访问方式。 public static Singleton getInstance(){return s}

饿汉式和懒汉式的区别:

饿汉式:类一加载就生成对象。安全,效率高。相对懒汉式会在未使用之前就占用内存。

懒汉式:存在线程安全漏洞,可能会创建多个对象,可以利用同步解决,但是效率会变低。

  • 单例写法两种:

  • (1)饿汉式 开发用这种方式。

//饿汉式

class Singleton {

//1,私有构造函数

private Singleton(){}

//2,创建本类对象

private static Singleton s = new Singleton();

//3,对外提供公共的访问方法

public static Singleton getInstance() {

return s;

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
te Singleton(){}

//2,创建本类对象

private static Singleton s = new Singleton();

//3,对外提供公共的访问方法

public static Singleton getInstance() {

return s;

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-xxv8TZSE-1715743735781)]

[外链图片转存中…(img-vOkn5Xks-1715743735782)]

[外链图片转存中…(img-piKfd4ij-1715743735782)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值