首页 > 其他 > 详细

基础复习

时间:2020-08-22 18:28:23      阅读:53      评论:0      收藏:0      [点我收藏+]

1.线程与进程有什么区别?

进程是操作系统资源分配的基本单位

线程是处理器任务调度和执行的基本单位

一个进程含有多个线程,线程是进程的一部分

关于资源分配上,每个线程都有自己独立的运行栈和程序计数器,线程之间切换的开销小。

同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的。

一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉,所以进程比线程稳定。

在执行过程中,独立的进程有程序运行的入口、顺序执行序列和进程出口。

线程不能独立执行,必须存在应用程序中,由应用程序提供多个线程执行控制。

 

一个进程中可以有多个线程,多个线程共享进程的堆和方法区资源,但是每个线程有自己的程序计数器、虚拟机栈和本地方法栈。

程序计数器为什么是私有的?

作用:字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制。例如顺序执行、选择、循环、异常处理

多线程的情况下、程序计数器用于记录当前线程执行的位置,从而当线程被切换回来的时候能够知道该线程上次运行到哪。

 

虚拟机栈和本地方法栈为什么是私有的?

虚拟机栈:每个Java方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调查直至执行完成的过程,就对应着一个栈帧在Java虚拟机栈中入栈和出栈的过程。

本地方法栈:和虚拟机栈所发挥的作用非常相似,区别是:虚拟机栈为虚拟机执行Java方法服务,而本地方法栈则为虚拟机使用到Native方法服务。

 

堆和方法区是所有线程共享的资源,其中堆是进程中最大的一块内存,主要用于存放新创建的对象,方法区主要用于存放已被加载的类信息、常量、静态变量、即时编译后的代码等数据。

 

2.堆和栈的区别

堆空间的内存是动态分配的,一般存放对象,并且需要手动释放内存

栈空间的内存是由系统自动分配,一般存放局部变量

就空间的大小来说:栈空间比较小;堆空间比较大

就存储的数据来说:栈空间一般存储基本数据类型、对象的地址

堆空间一般存放对象本身。

 

3.子类重写父类的“两同、两小、一大”原则

方法名相同、参数列表相同

子类方法返回值类型比父类方法返回值类型小或相等、子类方法声明抛出的异常类比父类方法声明抛出的异常小或相等

子类方法访问权限比父类方法访问权限更大或相等

 

覆盖的方法和被覆盖的方法,要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法。否则会发送编译错误。

 

4.数组和链表的区别

空间分配不同,数组是一块连续的区域并且需要预留空间

链表可以存在任何地方,不要求连续,每个数据都保存了下一个数据的内存地址

效率不同:数组的插入数据和删除数据的效率低,读取效率高,并且不易扩展。

链表增加数据和删除数据容易,但是查找的效率低。

 

基础复习

原文:https://www.cnblogs.com/zhou2420032204/p/13546165.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!