这里我想简单介绍一下发展史:
汇编和c
我大学学习的电气,简单学习了一下汇编语言,还是比较有意思,就是感觉等贴近于机器,很多东西繁琐而且记不住。我觉着这可能就是c语言的发明了,他继承了汇编语言更贴近于硬件,运行效率极快效率很高,大学的时候参加全国电子大赛的时候,做的单片机这放后面就是用的c,但是我并不精通,因常常困扰我的就是指针,以及内存的管理(当然对于那些大佬,那确实很不错,完全放任不管的,你自己安排就很不错)是很麻烦的,而且这些问题编译是发现不了的,只有运行的时候才能知道(因为没有给你分配内存,你自己管理)
C++添加一些面向对象的,但感觉也是很难的,需要一些底层的知识,当然我也相信,无论学习什么语言我都需要对那些底层进行清晰透彻的了解!!!
java
因此我们需要重新建立一种语言
1.语法有点像c
2.没有指针和内存管理:这对于我们这些小白可太好了,当然我们学到最后也一定需要了解JVM这个怎么管理内存,这样才好对于复杂问题进行更加深入的理解
3.真正的可移植性,这方面其实我不太深入理解(我这个自己的学习笔记,当然也存在自己的局限性,要是能对别人有帮助那就再好不过,要是误导了就罪过了)我觉得就像上面说的,我们不像c或者c++这样对内存进行管理,每个电脑的配置和环境都不一样,CPU也不一样,当然可移植能力就是不一样,但是交给了jvm这个虚拟机进行处理,那么就可以实现不同的操作系统,不同的CPU都可以实现相同的结果。换句话说,java的程序都跑在jvm这个虚拟机上面,真正实现了跨平台跨操作系统!!!
4.高质量的库,这就是体现了他的生态好了,那么多大佬写好的库,让你去使用,这很舒服,就像很python喜欢觉得简单,不就是库很多写好了调用就行
因此我要总结一下java的特性和优势
1.简单性:没有指针和内存分配就很简单,哈哈哈!
2.面向对象:后面我还要写一篇专门的,还没学到,其实就是模拟人的思维,它是一个编程思维不是一个技术先写一类再new一个对象,只需要对其进行操作就行。简单来说就是,我要是吃饭的人,我就先写好吃饭的人要干什么,点菜吃饭喝酒,那么这些特征写在一个类中,最后new一个对象就可以进行调用了;同样的道理,你是后厨的,你要炒菜切菜端菜什么的,你也写好一个类最后new一下就好是不是很方便。(就像洗衣机,你扔进去(new一个对象),然后按钮就是调用里面的特征,对象.什么特征。)
3.可移植性:write once,run anywhere!有了虚拟机就可移植性。这就是在window上面的写得程序,可以在Linus运行,这就是那些服务器不都是用Linus写,就很方便哦!
4.高性能:这个高性能我的理解就是你能不能最大化利用计算机,之所以那些c/c++适合于用于硬件和游戏这种,就是因为他的对于计算机处理很恰如其分,而jvm这种还是稍微欠缺一点,但是随着硬件设备越来越完善,最后其实应该差不多(只是我的简单理解)!!!
5.分布式:相反的就是中心化,git就是很好的体现,有一个远程的仓库,自己也有一个属于本地的仓库,这个词后面应该还会遇到,到时候再根据这个分布式详细的介绍一篇。
6.动态性,这好像和之后的反射有关,反射又和后面的底层框架有关,不懂哈哈哈后面再说!
7.多线程:后面网络编程里面需要好好使用!
8.安全性:就是哈哈哈你不处理内存,你就不会把计算机搞崩溃哈哈哈