java开发工程师笔试基础知识(一)

Java语言的优点

  • Java为纯面向对象的语言。Everything is boject。
  • 平台无关性。一次编译,到处运行。java 为解释性语言,无论在Windows 还是linux上编译,由编译器编译的“中间代码”都会在Java 虚拟机(jvm)上解释执行,具有良好的跨平台,可移植性。
  • Java 提供了很多内置的类库,简化开发人员的程序设计工作。
  • 提供了对Web应用的开发支持。
  • 具有良好的安全性和健壮性。提供防止恶意代码攻击的安全机制(数组边界检测和Bytecode校验等),java的强类型机制、垃圾回收器、异常处理和安全检查机制使得java语言编写的程序由很好的健壮性。
  • 去除了C++语言中难以理解、容易混淆的特性。例如头文件、指针、单元、运算符重载、虚拟基础类、多重继承等。
    PS:Java语言是由 C++语言改进并重新设计而来的

Java与C/C++的异同

同:

  • java 与C++ 都是面向对象语言,都使用了面向对象思想(封装、继承、多态等),都有很好的可重用性。

异:

  • Java 为解释性语言,源代码经过编译器编译为字节码,然后由JVM解释执行;而C/C++ 为编译型语言,源代码经过编译和连接后生成可执行的二进制代码。因此java的运行速度比C/C++慢,但是C/C++不能跨平台。
  • java为纯面向对象语言,除基本数据类型外(int、float等)所有类型都是类。C++兼具面向对象和面向过程编程的特点,可以定义全局变量和全局函数,但是java语言中不存在全局变量和全局函数。
  • 与C/C++比,java没有指针。
  • java不支持多重继承,但是可以通过接口实现多继承的目的。C++支持多继承。
  • C++需要开发人员管理内存分配(包括申请与释放)(把释放资源的代码放在析构函数中),而java提供垃圾回收器来实现垃圾自动回收(自动调用对象的finalize()方法释放无用对象的内存)。
  • C++支持运算符重载,java不支持。
  • C++支持预处理(头文件、宏定义等),java不支持(但import机制类似预处理)。
  • C++支持默认函数参数,java不支持默认函数参数。
  • C/C++支持goto语句,但java不提供goto语句,但是java中goto是保留关键字。
  • java 不支持自动强制类型转换,必须由开发人员显式强制类型转换。C/C++支持自动强制类型转换,这会导致程序的不安全。
  • java的平台无关性,使得每种数据类型都分配固定长度,如int 总是32位,而C/C++同一个数据类型在不同的平台上会分配不同的字节数。
  • java提供对注释文档的内建支持,酸麻文件也可以包含他们自己的文档。
  • java 包含一些标准库,完成特定任务,而C++ 依靠一些非标准的、由其他厂商提供的库。

为什么需要public static void main(String[] args) 这个方法?

此为java程序的入口方法,JVM在运行程序时,会首先查找main()方法。static表明main()方法是一个静态方法,即代码是存储在静态存储区,只要类被加载后,就可以使用该方法而不需要通过实例化对象来访问,可以通过 类名.方法() 方式访问,字符串数组参数args为开发人员在命令行状态下与程序交互提供了一种手段。

如何实现在main()方法执行前输出"Hello World"?

程序运行时最先加载的是main()方法,但是并不一定是程序运行时第一个被执行的模块。
java开发工程师笔试基础知识(一)_第1张图片
运行结果为:
Hello World1
Hello World2

Java程序的初始化顺序是怎样的?

  • 实例化对象时,对象所在类的成员变量先于所在类的构造函数初始化。
  • 静态对象(变量)优先于非静态对象对象(变量)初始化,其中,静态对象(变量)只初始化一次,非静态对象(变量)可能会初始化多次。
  • 父类优先于子类初始化。
  • 成员变量定义的顺序进行初始化。
  • 执行顺序:父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量、父类非静态代码块、父类构造函数、子类非静态变量、子类非静态代码块、子类构造函数。

Java中的作用域有哪些?

  • 类的成员变量的作用范围与类的实例化对象的作用范围相同。
  • 被static修饰的成员变量是静态变量或全局变量,静态变量不依赖特定的实例,被所有实例共享。只要一个类被加载,JVM就会给类的静态变量分配存储空间,可以通过类名和变量名来访问静态变量。java开发工程师笔试基础知识(一)_第2张图片

一个Java文件中是否可以定义多个类?

可以,但是最多只能有一个类被public修饰,并且这个类的类名与文件名必须相同。

你可能感兴趣的:(Java开发工程师笔试知识)