Java基础面试题(1)

1.JAVA 三大开发平台分别是什么?

       Java SE(Java Platform,Standard Edition)标准版: 它允许开发和部署在桌面、 服务器、嵌入式环境和实时环境中使用的 Java 应用程序。

        Java EE(Java Platform,Enterprise Edition)企业版: Java EE 是在 Java SE 的 基础上构建的,为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技 术如:Servlet 、Jsp 等,主要针对于 Web 应用程序开发。

        Java ME(Java Platform,Micro Edition)微型版: 支持 Java 程序运行在移动终端(手机、PDA)上的平台,对 Java API 有所精简,并加入了针对移动终端的支持。

2.简述 JAVA 语言的特点?

        简单性: Java 是由 C++简化设计而来,剔除了 C++的操作符过载(overload)和多继承等特征,Java 的垃圾回收机制,使用户不必为存储管理问题烦恼,能更多的时间和精力花 在研发上。

         完全面向对象: Java 是一个完全面向对象的语言。对程序员来说,这意味着要注意应用中的数据和操纵数据的方法(method),而不是严格地用过程来思考。

        编译和解释性: Java 编译程序生成字节码(byte-code),而不是通常的机器码。Java 字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。 Java 程序可以在任何实现了 Java 解释程序和运行系统(run-time system)的系统上运行。

        安全性: Java 没有指针,所以程序员不能得到隐蔽起来的内幕和伪造指针去指向存储器。更重要的是,Java 编译程序不处理存储安排决策,所以程序员不能通过查看声明去猜测类的实际存储安排。编译的 Java 代码中的存储引用在运行时由 Java 解释程序决定实际存储地址。

        可移植性(跨平台性/结构中立): 因为 JVM 的存在,可以实现一次编译,多处运行的机制。

 3.面向对象和面向过程的区别?

        面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使 用的时候一个一个依次调用就可以了。

        面向对象是把构成问题事务分解成各个对象,这些对象共同参与解决问题。建立对象的 目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

        面向过程程序的特点:强调实现功能、算法和一切细节。

         面向对象程序的特点:强调具备了功能的对象。

4.什么是 JDK、JRE、JVM 以及它们的关系?

        JDK: Java Development Kit(JAVA 软件开发包),JDK 是整个 Java 开发的核心,它包 括了 Java 运行环境 JRE(Java Runtime Envirnment)、一堆 Java 工具(javac/java/jdb 等)和 Java 基础的类库(即 Java API)。

        JRE: Java Runtime Environment(Java 运行时环境),运行 JAVA 程序所必须的环境的 集合,包含 JVM 标准实现及 Java 核心类库。

         JVM: Java Virtual Machine,java 虚拟机,它是整个 java 实现跨平台的最核心的部分, 所有的 java 程序会首先被编译为.class 的类文件,这种类文件可以在虚拟机上执行。

5.Java 的两大核心机制是什么?

        Java 虚拟机(Java Virtual Machine):Java 虚拟机可以理解成一个以字节码为机器指令的 CPU,对于不同的运行平台,有不同的虚拟机, Java 虚拟机机制屏蔽了底层运行平台 的差别,能够很好的实现跨平台。

        垃圾收集机制(Garbage collection): Java 的垃圾回收机制是 Java 虚拟机提供的 能力,用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间。

6.什么是垃圾回收(GC)?

        垃圾回收是一种动态存储管理技术,它自动地释放不再被程序引用的对象,按照特定的 垃圾收集算法来实现资源自动回收的功能。当一个对象不再被引用的时候,内存回收它占领 的空间,以便空间被后来的新对象使用,以免造成内存泄露。

 7.执行 Java 程序的步骤是什么?

        编写源代码 --> 编译 --> 运行

        编译: 执行 javac 源文件.扩展名,把 java 源文件编译成字节码文件;

        字节码文件: CLASS 文件,就是 java 的字节码文件

        运行: 执行 java 字节码文件名,把字节码文件解释给对应的操作系统;

         注:如果更改了源代码,那么必须重新编译再运行;

8.JVM 的三项主要功能是什么?

        加载代码: 由类加载器(class loader)完成;

        校验代码: 由字节码校验器(bytecode verifier)完成;

        执行代码: 由运行时解释器(runtime interpreter)完成;

9.goto 是不是 Java 关键字?

        goto 不是关键字,是 Java 的保留字; const 和 goto 是 java 的保留字。

10.列举常用关键字?

关键字的特征: 都是小写字母

用来定义数据类型的关键字:

class         用来定义类         interface         用来定义接口         enum         用来定义枚举

byte          字节类型             short               短整型                     int             整数类型

long          长整型                 float               单精度浮点类型      double       双精度浮点类型

char          字符类型             boolean          布尔类型                 void           空类型

注: 类和接口都是数据类型,它是引用数据类型 用来定义数据类型值的关键字:

true         真值         false         假值         null         空值

用来流程控制的关键字:

if             定义单分支语句         if  else         定义双分支         if   else   if         定义多分支

switch    定义开关语句             case           定义开关语句的每一个分支

default   定义开关语句默认选项        while         用来定义while 循环 

do while 用来定义 do whie 循环         for 用来定义 for 循环         

break         打断,破坏,用来结束整个循环体或打断 switch 的贯穿性

continue     用来跳过本次循环,执行后续循环         return         定义方法返回值

用于定义访问控制修饰符的关键字:

private         私有的         protected         受保护的         public         公共的

用来定义类、函数、变量修饰符的关键字:

abstract         用来定义抽象类或抽象方法         final         用来定义常量、常量方法、常量类;

static         静态的         synchronized         定义同步的

用来定义类和类关系的关键字:

extends         定义继承关系         implements         

定义实现关系 实例相关关键字:

new         实例化对象         this         当前对象的指针        super         父对象的指针

instanceof         判断对象是否属于某个类的实例

用于异常的关键字:

try         用于捕获异常         catch         用于处理异常         finally         无论是否有异常,都执行

throw         用来抛出异常         throws         用来声明异常

用于包的关键字:

package         定义包         import         导包

11.变量的分类及区别?

分类:

        局部变量 定义在方法内部或语句块内部;

        成员变量 定义在方法外部,类内部;

        静态变量 定义在方法外部,类内部,由 static 修饰;

区别:

        局部变量没有初始值,必须先赋值才能使用;成员变量和静态变量都有默认的初始值;

        局部变量通过变量名调用;成员变量通过对象调用;静态变量既可以通过对象调用,也可以通过类名调用;

        局部变量在栈内存; 成员变量在堆内存;静态变量在方法区;

        局部变量的生命周期: 与方法共存亡;成员变量的生命周期: 与对象共存亡;静态变量的生命周期: 与类共存亡;

        局部变量不能被 访问控制修饰符 及  static  所修饰;成员变量/静态变量被public,private,static 等修饰符所修饰。成员变量/静态变量和局部变量都能被 final 所修饰;

12.Java 的基本数据类型有哪些? String 是不是基本数据类型 ?        

        八种基本数据类型:byte、short、int、long、float、double、boolean、char

        String 不是基本数据类型,它是引用类型

13.char 类型的变量能存放汉字吗?

        可以,因为 java 采用 Unicode 编码。

14.Java 数据类型转换?

        自动类型转换: 容量小的类型自动转换为容量大的数据类型。顺序是: byte、 short(char)、int、long、float、double

        强制类型转换: 将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换 符(()),但可能造成精度降低或溢出。

        byte、short、char 类型参与运算,直接转换为 int 类型参与运算。

        大类型和小类型进行运算,得到的肯定是大类型。

15.一个".java"源文件中是否可以包括多个类(不是内部类)? 有什么限制?

        一个 Java 源文件可以包含多个类,只能有一个 public 修饰的类;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值