- Java 不提供指针来直接访问内存。
- java的类不支持多继承,c++支持
- java有自动内存管理机制(GC),不需要程序员手动释放无用内存
- java是跨平台的,c++不是。
- java只支持方法重载,C++支持方法重载和操作符重载
- 实现Java程序跨平台运行的核心是JVM虚拟机
- 所有的 .java 源文件首先会编译成 .class 字节码文件,字节码不能直接与操作系统交互。在运行时JVM通过类加载器加载字节码,将字节码转换成目标机器码交给本地系统去执行。
- 所以不同的环境下安装不同的JVM,可以使同一个.class文件在不同的环境下运行。
- 解释型语言:运行程序的时候才翻译,解释型语言每执行一次就要翻译一次,效率比较低。
- 编译型语言:编译性语言写的程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,因为翻译只做了一次,所以执行效率高。
- 面向对象是一种基于面向过程的、“万物皆对象”的编程思想。
- 在编程思路上,面向对象要首先抽象出类、属性及其方法,然后通过实例化类、执行方法来完成功能。
- 面向对象具有封装性、继承性、多态性。
- 面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题。面向对象会先抽象出对象,然后用对象执行方法的方式解决问题。
- 都具有封装性,但是面向过程封装的是功能,而面向对象封装的是数据和功能。
- 面向对象具有继承性和多态性,而面向过程没有继承性和多态性
多态分为:
- 编译时多态,主要体现是方法的重载
- 运行时多态,主要体现是方法的重写
要实现多态需要做两件事:
- 一是子类继承父类并重写父类中的方法
- 二是父类的引用指向子类对象
1.函数式接口:有且只有一个抽象方法,但可以有多个非抽象方法的接口。
2.Lambda 表达式:使用 Lambda 表达式可以使代码变的更加简洁,会省略很多代码,允许把函数作为参数传递进方法中。只要方法的参数是函数式接口都可以用 Lambda 表达式。
3.Stream流:它不存储数据,而是按照特定的规则对数据进行处理
7.Java8相比与7的优化可以讲讲 HashMap 底层数据结构的优化



