java常见题
创始人
2024-01-20 09:07:04
0

1.数组和链表结构简单对比?(ArrayList和linkedList)

数组是一段连续的空间。 大小固定 可能大小不够用或者有浪费

数组查询比较方便,根据下标就可以直接找到元素,时间复杂度O(1);增加和删除比较复杂,需要移动操作数所在位置后的所有数据,时间复杂度为O(N)s

链表是使用是一种物理存储单元上非连续,非顺序的存储结构2.类初始化和实例初始化

插入、删除数据比较方便,时间复杂度O(1);查询必须从头开始找起,十分麻烦,时间复杂度O(N)

2.类初始化和实例初始化

类的初始化:

是完成程序执行前的准备工作。在这个阶段,静态的(变量,方法,代码块)会被执行。同时在会开辟一块存储空间用来存放静态的数据。类初始化只在类加载的时候执行一次

类的实例化(实例化对象):

是指创建一个对象的过程。这个过程中会在堆中开辟内存,将一些非静态的方法,变量存放在里面。在程序执行的过程中,可以创建多个对象,既多次实例化。每次实例化都会开辟一块新的内存。(就是调用构造函数)

一.什么时候类初始化?

1.第一次实例化之前会先类初始化

main方法所在的类需要先加载和初始化

2.子类初始化会先让父类初始化

3.一个类初始化就是执行()方法

clinit 方法由静态类变量显示赋值代码静态代码块组成

从上到下顺序执行

image-20221107172006076

二.什么时候实例化?

实例化就是执行()方法

()方法 方法可能重载有多个,有几个构造器就有几个()方法方法

()方法方法由非静态实例变量显示赋值代码和非静态代码块,对应构造器代码组成

非静态实例变量显示赋值代码和非静态代码块从上到下顺序执行,而对应构造器的代码最后执行、

Son son1 = new Son(); (9)(3)(2)(9)(8)(7) 

注意!:上图中的 4 没有输出,重写的方法两个类中都调用的是子类的

解释:

image-20221107182354065

public static void main(String[] args) {Son son = new Son();System.out.println();Son son1 = new Son();
}
(5)(1)(10)(6)(9)(3)(2)(9)(8)(7)(9)(3)(2)(9)(8)(7)

3.重写的要求是什么?

●方法名 必须一样
●形参列表 必须一样 参数个数、种类、排列顺序相同
●返回值类型 返回类型可以相同也可以是原类型的子类型
●修饰符 子类比父类权限更大或者相等。 父类方法是包访问权限,子类的重写方法是public访问权限
●抛出的异常列表 重写方法不能抛出新的异常或者。重写方法不能抛出比被重写方法更高层次的被检查异常

重载的要求是什么?

方法名称必须相同

参数列表必须不同(个数不同、或类型不同、参数类型排列顺序不同等)

对访问控制修饰符、返回值类型、异常类型 未作要求

4.方法值传递

image-20221107184416237

5.变量

1、声明的位置

局部变量:方法体{}中,形参,代码块{}中

成员变量:类方法外

类变量(静态变量): 有static修饰

实例变量:没有static修饰

2、修饰符

局部变量:final

成员变量:public protected,private,final ,static volatile,transient

3、值存储位置

局部变量:栈

实例变量:堆

类变量(静态变量):方法区。 1.7后静态变量放在堆中了

4、生命周期

局部变量:每一个线程,每一次调用执行都是新的生命周期

实例变量:随着对象的创建而初始化,随着对象的被回收而消亡,每一个对象的实例变量都是独立的

类变量:随着类的初始化而初始化,随着类的卸载而消亡,该类的所有对象的类变量是共享的

如何区分:

1、局部变量与实例变量重名

 在成员便令前面加 this

2、局部变量与类变量重名

 在类变量前面加 类名
/*** @author gcq* @Create 2020-09-29*/
public class Exam5 {静态变量在方法区 所有对象共享 所有方法都可以访问  (扩展:静态方法只能访问静态成员static int s;//成员变量  类变量 方法区int i; //成员变量  	实例变量 	堆int j;//成员变量 	实例变量  	堆{int i = 1; //局部变量i++; // 就近原则 上面的这个ij++;s++;}public  void test(int j) {j++; // 就近原则 21  局部变量i++; //成员变量is++;}public static void main(String[] args){Exam5 obj1 = new Exam5();Exam5 obj2 = new Exam5();obj1.test(10);obj1.test(20);obj2.test(30);// 2 1 5System.out.println(obj1.i + "," + obj1.j + "," + obj1.s);// 1 1 5System.out.println(obj2.i + "," + obj2.j + "," + obj2.s);}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XOsQndDr-1667823675425)(…/…/…/tools/Typora/upload/image-20221107200220215.png)]

image-20221107200422636

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...