JAVA语言的优点?
- 纯面向对象的语言
- 平台无关
- 提供了各种内库,更重要的是提供了垃圾回收器
- 提供了对Web开发的支持
- 去除了C++语言中许多难以理解的特征
JAVA和C++的区别?
JAVA是由C++语言改进并重新设计而来的。
- JAVA是解释性语言,C++是编译性语言
- JAVA支持跨平台执行,C++不能
- JAVA是面向对象的语言,不能定义全局函数和全局变量;C++是面向过程的语言,可以定义全局函数和全局变量
- JAVA不支持多重继承,但是引入了接口,可以继承多个接口;C++可以多重继承
- JAVA提供了垃圾回收器,不需要开发人员去管理内存的分配;C++需要开发人员手动释放内存
- JAVA不支持运算符重载,不支持指针,不支持强制类型转换;C++支持
Main函数的定义?
- 保证main()方法的返回值为void,并且有static与public关键词修饰
- 不能用abstract关键词来修饰,其他的关键词都可以
- 与文件名相同的类的main函数才能作为整个程序的入口方法
如何在main方法前执行代码?
静态块在类加载的时候就会被调用,利用静态块可以在main函数之前执行代码。
JAVA程序初始化的顺序?
- 父类的静态变量、静态块
- 子类的静态变量、静态块
- 父类的非静态变量、非静态代码块、构造函数
- 子类的非静态变量、非静态代码块、构造函数
JAVA的作用域?
变量的类型:成员变量、静态变量、局部变量
成员变量的作用域:
作用域 | 当前类 | 同一package | 子类 | 不同package |
public | 1 | 1 | 1 | 1 |
private | 1 | 0 | 0 | 0 |
protected | 1 | 1 | 1 | 0 |
default | 1 | 1 | 0 | 0 |
一个JAVA文件是否可以定义多个类?
可以定义多个类,但是最多一个类被public修饰,并且类名与文件名相同。
构造函数?
- 不能有返回值(也不能为void)
- 有默认的无参构造函数,但是如果定义了别的构造函数,编译器就不会再创建默认的构造函数了
- 构造函数不能被继承,但是能够被重载
- 子类可以通过super关键词来显示调用父类的构造函数
clone方法的作用?
- JAVA除了在处理基本数据类型(int/char/double)采用的是按值传递,其他都是采用按引用传递。
- 想要使用A对象创建B对象,如果使用=创建,按引用传递,就相当于都指向了一个地址;使用clone函数,(Obj b=(Obj)a.clone())按值传递,两个对象指向的就是不同的地址。
- 浅复制和深复制
浅复制:使用clone函数函数后,会将复制对象的基础数据类型值复制过来
深复制:想要将其他类型变量复制过来,需要调用每个变量的clone方法,完成深复制。o.birth=(Date)a.getBirth().clone()
什么是反射机制?
反射机制允许程序在运行时进行自我检查,并且允许对其内部的成员进行操作。
功能:得到一个对象所属的类;获取一个类的所有成员变量和方法;在运行时创建对象;在运行时调用对象的方法。
动态创建对象:
Class c=Class.forName(“Sub”);
Base b=(Base)c.newInstance();
Package的作用
- 不同package的类可以存在相同的名字
- 对类按功能进行分类,使项目的组织更加清晰