1.你知道Java语言的特性吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.你知道Java语言的特性吗?相关的知识,希望对你有一定的参考价值。
从这节起写下我看java核心技术卷的所思所想,纯粹是倒闭自己输出,如果觉得有什么错误,欢迎大家帮我指正哦。
说实话读了第一章的内容,并没有吸收到什么,有点像在看历史书,但大致还是把Java语言的特点讲一下。
1.简单性
相比于C语言来说,语法方面更加简单,没有烦人的指针,不需要管理内存,垃圾回收方面更是自动的,初学者只要完成基本的程序编写即可。
2.面向对象
我们知道,一般语言分为面向过程和面向对象,那么两者区别是什么呢?
前者是以问题和行为为导向,做一件事,可能分为多个步骤,那一个方法就对应一个步骤,比如买菜需要几步?
1.出门骑车去菜场
2.选菜
3.付款
4.找钱
5.拿菜
6.走路回家
这里当然是打个比方,而面向对象呢?就需要一个这样承载这个几个方法的实体,我们暂且把他叫成小明。
那么小明去买菜同样需要这几步操作,但这几个方法可以写在对象的内部,买菜通过小明这个实体去调用,但这个实体不是凭空产生的,所以就需要实例化,面向对象的开销就会比面向过程开销大一些。
那这么说来,好像面向过程更好啊?
但我们可以想象这样的场景,小明和小强都要去买菜,但一个是开车去,一个是划船去,而我们之前已经把方法写死了,是要骑车去菜场,那只能再往后加if else了,但如果是面向对象编程,我们就可以把对应的行为做个抽象,小明和小强同属于人,那就定义一个大对象Person,这两人出门,回家,都会有不同的行为,只需要继承下这个Person,方法中相同的行为就能有不同实现了,所以程序的维护性和扩展性大大增强了。
ps:继承是就是你作为人,都能跑能跳,有两只手,这就是人这个物种带给你的,你继承了这些特点。
总结就是,面向过程开销小,而面向过程维护性,扩展性好,所以硬要比较哪个好,没什么特别的意义,还得看应用场景,比如嵌入式领域,一般都使用面向过程的语言,因为内存不够嘛,而其他领域,内存充足,我们就更多考虑后期怎么维护了。
3.分布式
说实话不知道是翻译的锅还怎么样,我愣是没怎么看懂,原文讲的跟分布式有什么关系。
Java 有一个丰富的例程库,用于处理像 HTTP 和 FIT 之类的 TCP/IP 协议。Java 应用
程序能够通过 URL 打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。
如今,这一点已经得到认可,不过在 1995 年, 主要还是从 C++ 或 Visual Basic 程序连接
Web 服务器。
个人认为现在大型网站的应用都采用分布式的架构,何为分布式?就是将一个应用分布在多个服务器上,或者说一个功能一个服务器,分布式的核心主要是为了解决大流量的访问,如果网站没几个人访问,那就没什么必要搞成分布式的了。
4.健壮性与安全性
体现主要有三点,类型检查,异常处理,垃圾回收。
因为Java是强类型的语言,一旦你定义了某个类型,如果不匹配,编译或运行的时候就能检查出来,抛一些异常让你处理,而不是把程序搞坏了。而在程序运行的过程中,会创建许多对象,但他们有些只是用了一次就不再使用了,后期就会被回收,防止你的内存爆掉。
5.可移植性
这取决于强大的java虚拟机,一次编译,到处运行。不管在什么环境下,只需要同一套代码,就能以相同方式运行,学过c的都知道,c语言在linux和Windows平台下得使用两套代码运行。
6.解释型
其实Java是半编译半解释型的语言,而不是纯粹的解释型语言,这依赖于它的即时编译器,可以将执行最频繁的字节码序列翻译成机器码存储在本地,下次就不需要再编译了。
7.多线程
一般的语言其实都会引入多线程技术,用文中的话来说,你也不想中途网络卡了,界面就被冻住了吧。
8.动态性
java的动态性依靠反射机制、类加载、动态编译、脚本引擎等技术,个人对这点理解不是很深,后期可以钻研一下。
有时候孤独是好事,一个人要多长本事,多看世界,多走些路,把时间花在正事上,变成自己打心底喜欢的那种人。
以上是关于1.你知道Java语言的特性吗?的主要内容,如果未能解决你的问题,请参考以下文章
Java8新特性你知道Java8为什么要引入Lambda表达式吗?