1.面向过程和面向对象的区别
1.面向过程的性能比较高。因为面向对象的编程在类调用的时候需要实例化,比较浪费资源,开销比较大,所以在对性能有要求的时候比如单片机、嵌入式开发、linux/unix的时候需要用面向过程。但是面向对象的编程容易维护、易复用、易扩展
2.面向对象易维护、易复用、易扩展。由于面向对象具有封装、多态、继承特性使得它具有低耦合性,系统独立性较强,容易维护等。性能较低。
2.Java语言特点
1.简单易学
2.面向对象(封装、继承、多态)
3.平台无关性
1)Java平台是指运行在各个终端(PC端、移动端等)的系统软件
2) 平台无关性是指在机器与编译程序之间有一层抽象(JVM)来实现平台的无关的,java源代码通过java编译器生成java字节码,通过java虚拟机中的解释器将java字节码翻译成特定机器可理解的机器码,然后在特定机器上运行。编译程序只需要面向虚拟机,生成虚拟机可理解的代码,然后运用虚拟机的解释器转换成特定机器可理解的机器码。
4.java安全性。java安全性主要是指java字节码和虚拟机的安全性:源文件编译成java字节码(.class文件)遵循着一定的格式;对于保障.class的安全准确执行,虚拟机的安全性是很可靠的。
5.java可靠性。
6.支持多线程。(C++语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行程序设计,java语言提供了多线程支持)
7.支持网络编程且很方便(本身就是为了简化网络编程设计的)
8.编译与解释并存。
3.JVM、JDK和JRE
1.JVM就是java虚拟机,是连接机器与编译程序的一层抽象,他是运行java字节码的,使用相同的字节码给出相同的结果。
1)java字节码就是java虚拟机可理解的代码.class文件,它不面向任何特定的处理器,只面向虚拟机。
2)JVM加载器首先加载字节码文件,通过解释器逐行进行解释执行,速度慢些。有些方法和代码经常被调用,引入JIT编译器(运行时编译),JIT完成第一次编译时就将字节码对应的机器码保存下来,下次就可以直接运用。
2.JDK是Java Development Kit,它拥有JRE所拥有的一切,还有编译器(javac)和工具(javadoc和jdb),它能创建和编译程序
3.JRE 是 Java运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java虚拟机(JVM),Java类库,java命令和其他的一些基础构件。但是,它不能用于创建新程序。
java和C++的区别
1.都是封装、继承、多态的
2.java不提供指针来直接访问内存,访问内存更安全
3.java的继承是单继承的,C++是多继承的;但是java的接口是可多继承的
4.java含有自己的内存管理机制,不需要释放无用内存