JAVA简答(一)

2021-12-30  本文已影响0人  大脸猫猫脸大
  1. 为什么Java被称作是“平台无关的编程语言”?
    java源程序先经过javac编译器编译成二进制的.class字节码文件,.class文件再运行在jvm上,java解释器(jvm的一部分)会将其解释成对应平台的机器码执行。所以java所谓的跨平台就是在不同平台上安装了不同的jvm,而在不同平台上生成的.class文件都是一样的。

  2. 是否可以在static环境中访问非static变量?
    Static表示静态的意思,可用于修饰成员变量和成员函数。因为静态的成员属于类,随着类的加载而加载到静态方法区内存,当类加载时,此时不一定有实例创建,没有实例,就不可以访问非静态的成员。同理,Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的。

  3. Java支持的数据类型有哪些?什么是自动拆装箱?
    Java支持的数据类型包括两种

自动装箱就是Java编译器在基本数据类型和对应的对象包装类型间的转化,即int转化为Integer,自动拆箱是Integer调用其方法将其转化为int的过程。

  1. Java中的方法重写和方法重载是什么意思?
    方法重写的原则:

方法重载的原则:

重写和重载的不同:

  1. 接口和抽象类的区别是什么?
    不同点在于:

从设计层面来说,抽象是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。

  1. 值传递和引用传递?
    参见《Head first JAVA》的杯子和遥控器模型。

  2. 进程和线程的区别是什么?

守护线程:服务线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程,并且这种线程并不属于程序中不可或缺的部分。当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。

  1. 创建线程有几种不同的方式?
    创建方式:

Thread类的常见方法参见:创建线程有几种不同的方式?

  1. 线程的几种可用状态
image
  1. 如何确保N个线程可以访问N个资源同时又不导致死锁?
    死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。多线程产生死锁的四个必要条件:

只要破坏其中任意一个条件,就可以避免死锁,其中最简单的就是破环循环等待条件。按同一顺序访问对象,加载锁,释放锁。

  1. 线程池是什么?
  1. 同步方法和同步代码块的区别是什么?
  1. 怎么保证多线程的运行安全
  1. synchronized、volatile、Lock、ReentrantLock、atomic
上一篇 下一篇

猜你喜欢

热点阅读