JAVA 和 C/C++的区别
1.运行过程的不同。 JAVA 源程序经过编译器编译成字节码文件, 然后由 JVM解释执行。 而 C++/C 经过编译、 链接后生成可执行的二进制代码。 因此 C/C++的执行速度比 JAVA 快。
2.跨平台性。 JAVA 可以跨平台, 而 C++/C 不可以跨平台。
3.JAVA 没有指针, C++/C 有指针。
4.JAVA 不支持多重继承, 但是可以同时实现多个接口来达到类似的目的。
C++支持多重继承。
5.JAVA 不需要对内存进行管理, 有垃圾回收机制。 C/C++需要对内存进行显
示的管理。
6.JAVA 不支持运算符重载。 C/C++支持运算符重载。
7.JAVA 中每个数据类型在不同的平台上所占字节数固定的, 而 C/C++则不
然。
JAVA 的优点
1.跨平台。 JAVA 语言可以“一次编译, 到处运行” 。 跨平台的含义: 无论是在 windows 平台还是在 Linux 平台对 Java 程序进行编译, 编译后的程序都可以在其他平台上运行。 编译器会把 JAVA 代码编译成字节码文件, 然后在 JVM 上解释执行, 由于字节码与平台无关, 因此, JAVA 可以很好地跨平台执行。
2.垃圾回收机制。
3.去掉了 C++中难以理解的东西, 比如指针和运算符重载。
4.具有较好的安全性。 比如 JAVA 有数组边界检测, 但是 C/C++里面没有。
1.同一个.java 文件中是否可以有多个 main()方法?
每个类中都可以定义 main()方法, 但只有用 public 修饰的类且与文件名相
同的类中的 main()方法才可以作为整个程序的入口方法。
2.JAVA 中的类和成员的访问控制
类的访问控制: 可以用 public 和不含 public 的来修饰
成员的访问控制:例如有一个类1,如果定义了另一个类2,在类2中创建了类1的实例,如果此时需要在类2中用类1的成员变量或方法,(一般通过实例对象.属性 实例对象.成员方法)那么便是访问了类1的成员。
访问修饰符 | 同一个类 | 同一个包 | 不同的包的子类 | 不同包的非子类 |
---|---|---|---|---|
public | * | * | * | * |
protected | * | * | * | |
默认 | * | * | ||
private | * |
3.final finally finalize 的区别。
final 可以用来修饰类, 变量和方法
1.当一个类被 final 修饰的时候, 表示该类不能被继承。 类中方法默认被
final 修饰。
2.当 final 修饰基本数据类型的变量时, 表示该值在被初始化后不能更改;
当 final 修饰引用类型的变量时, 表示该引用在初始化之后不能再指向
其他的对象。
注意: final 修饰的变量必须被初始化。 可以在定义的时候初始化, 也可
以在构造函数中进行初始化。
3.当 final 修饰方法时, 表示这个方法不能被子类重写。
finally 的用法:
finally 是异常处理的一部分, 只能用在 try-catch 语句中, 表示这段代码
一般情况下, 一定会执行。 经常用在需要释放资源的情况下。
finalize 的用法:
它是 Object 类的一个方法, 在垃圾回收器执行时会调用被回收对象的
finalize()方法。
4.泛型的好处?
(1)泛型的本质就是“参数化类型”,或者说可以将类型当作参数传递给一个类或者是方法。
(2)在编译的时候检查类型安全, 确保只能把正确类型的对象放入集合中; 消除强制类型转换
创建集合时就指定集合元素的数据类型, 该集合只能保存其指定类型的元素,避免使用强制类型转换。
(3)泛型擦除
Java 编译器生成的字节码是不包含泛型信息的, 泛型类型信息将在编译处理时被擦除, 这个过程即类型擦除。 类型擦除可以简单的理解为将泛型 java 代码转换为普通 java 代码, 只不过编译器更直接点, 将泛型 java 代码直接转换成普通java 字节码。
类型擦除的主要过程如下:
一.将所有的泛型参数用其最左边界(最顶级的父类型) 类型替换。
二.移除所有的类型参数
5.你知道的开源软件有哪些?
1.JDK
2.Eclipse
3.Tomcat
4.MySQL