复习补充(java基础篇一)

文章来源链接,这个是很全的,我只是摘抄了自己需要的

1.关于Java程序运行的简单叙述

JDK中javac将Java代码文件编译成.class文件(字节码文件),java虚拟机将字节码文件翻译成符合机器可执行的二进制机器码。
Java程序从源程序到运行的步骤
JVM
运行Java字节码的虚拟机,JVM是不跨平台的,针对不同的操作系统,Java的跨平台是通过JVM实现的,JVM中将字节码文件通过Java解释器变成机器可执行的二进制机器码。
JRE
Java运行环境,它是运行已编译的Java程序的所需的所有内容的集合,包括JVM,Java类库,Java命令和其他一些基础构建。
JDK
Java的运行环境和Java开发工具包,编译器等,它包含JRE,能够创建和编译程序。

2.Java中每种基本类型所占的存储空间大小

在这里插入图片描述

3.构造器Constructor是否可被override?

不可以,父类的私有属性和构造器不能被继承,所以不能被重写,但可以重载。

4.重载和重写的区别

重载是同一个类对于方法而言,重写是在继承关系中发生的,
重载方法名必须相同,参数列表不同,发生在编译时,重写是发生在父子类中,方法名、参数列表必须相同,返回值范围小于等于父类。

5.Java面向对象编程的三大特性:封装、继承、多态

封装
封装把对象属性私有化,对外提供访问或修改的方法。
继承
继承是使用已存在类为基础 新定义一的一个类,可以拥有与基础类相同的功能,可以扩展或者修改功能。
多态
程序中引用变量的具体类型和通过该变量调用的具体方法在编程时并不确定,只有在程序运行期间确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用的是哪个类中的实现方法。必须由程序运行期间才能决定。

6.在一个静态方法内调用一个非静态成员为什么是非法的

静态方法不能通过对象进行调用,因此在静态方法里,不能调用其他非静态变量,也不可以访问非静态变量成员。

7.接口和抽象类的区别是什么?***

一个类可以实现多个接口,但只能继承一个抽象类。
从设计层面来说,抽象是对类的抽象,是一种模板设计,而接口是对行为的抽象,是一种行为的规范。

8.为什么Java中只有值传递?

Java程序设计语言总是采用按值调用。方法得到的所有参数值的一个拷贝,方法不能修改传递给它的任何参数变量的内容。
https://github.com/Snailclimb/JavaGuide/blob/master/docs/essential-content-for-interview/MostCommonJavaInterviewQuestions/%E7%AC%AC%E4%B8%80%E5%91%A8%EF%BC%882018-8-7%EF%BC%89.md

9.简述线程、程序、进程的基本概念。以及他们之间的关系是什么?

程序:是含有指令和数据的文件,被存储在磁盘和其他数据存储设备中,也就是说程序是静态的代码。
进程:程序的一次执行过程,是系统运行程序的基本单位。是资源分配的最小单位。
线程:是进程划分成更小的运行单位。是程序运行的最小单位。
线程和进程的最大不同在于,基本上各进程是相互独立的,而各线程是共享进程中的数据,使用相同的地址空间,因此切换一个线程的花费远比进程要小很多,同时创建一个线程的开销比进程小的多。

10.线程有那些基本 状态。----待补充

线程在创建之后处于NEW(新建状态),调用start()方法后开始运行,这时处于READY(可运行)状态。可运行状态的线程获得了cpu时间片(timeslice)后处于RUNNING(运行)状态。
NEW:初值状态,线程被创建,但还没有调用start()方法。
RUNNABLE:运行状态,Java线程将操作系统中的就绪和运行状态笼统称作“运行中”。
BLOCKED:阻塞状态,表示线程阻塞于锁。
WAITING:等待状态,表示线程进入等待状态,进入该状态标识当前线程需要等待其他线程做出一些特定的动作。
TIME_WAITING:超时等待状态,该状态不同于WAITING,它是可以在指定的事件额你自行返回的。
TERMINATED:终止状态,表示当前线程已经执行完毕。
图源《Java 并发编程艺术》4.1.4节

11.Java序列化中如果有些字段不想进行序列化,怎么办?

对于不想进行序列化的变量,使用transient关键字修饰,只能修饰变量,不能修饰类和方法。

12.基本数据类型与包装数据类型的使用标准

根据<<阿里巴巴Java开发手册>>

  • 强制 所有的POJO类属性必须使用包装数据类型 。
  • 强制 RPC方法的返回值和参数必须使用包装数据类型。
  • 所有的局部变量使用基本数据类型
    基本数据类型有默认初始值,POJO类使用基本数据类型,会有默认值,影响本意。

13.Arrays.asList()使用指南

将一个数组转化为List集合,体现的是适配器模式,并没有实现修改集合相关的方法,转化后其底层仍是数组,它的add(),remove(),clear()方法会抛出UnsupportedOperationException异常。

14.i++ 与++i的区别

i++ 是图中局部变量表中i的数值 i为2
i = i++ 中i的值被赋值为 操作数栈中的1,
所以 i 最后为1

相反 i = ++i;
操作数栈中先存取2
然后 i被赋值为操作数栈中的2
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值