1.你知道java语言的特性吗?

author author     2022-12-04     359

关键词:


从这节起写下我看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的动态性依靠反射机制、类加载、动态编译、脚本引擎等技术,个人对这点理解不是很深,后期可以钻研一下。

有时候孤独是好事,一个人要多长本事,多看世界,多走些路,把时间花在正事上,变成自己打心底喜欢的那种人。


java8新特性你知道java8为什么要引入lambda表达式吗?(代码片段)

写在前面这是一道真实的面试题,一个读者朋友出去面试,面试官竟然问他这样一个问题:你说说Java8中为什么引入Lambda表达式?引入Lambda表达式后有哪些好处呢?还好这个朋友对Java8早有准备。不过,如果是看文章的你出去面... 查看详情

你知道java是世界第一的秘密吗?

...了解了。Java从1995年诞生到现在已经21年了,他的辉煌你知道吗?Java一直在改变你的生活!傲居语言排行榜榜首Java在TIOBE上的位置TIOBE编程语言社区排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于互联网... 查看详情

重学设计模式——你真的面向对象了吗?(代码片段)

...c;许多开发者也嗤之以鼻:都什么年代了,谁还不知道面向对象。重学设计模式后,请回答,你真的面向对象了吗?你真的了解面向对象吗一般情况下,我们会将面向对象的特性分为四大特性,分别是&#... 查看详情

java这些冷知识你知道吗?

1)jvm有很多种,其实jvm是一个标准,sun做的那个叫hotspot,作者就是后来v8的作者larsbak,其他公司也做过jvm,其中做得比较好的有bea的jrockit,其他的包括ibm的r9,apple的jvm等在内,都做得不行,所以jvm主要是整合淘汰掉这些做得... 查看详情

天天写sql,这些神奇的特性你知道吗?(代码片段)

摘要:不要歪了,我这里说特性它不是bug,而是故意设计的机制或语法,你有可能天天写语句或许还没发现原来还能这样用,没关系我们一起学下涨姿势。本文分享自华为云社区《【云驻共创】天天写SQL,... 查看详情

你知道java的四种引用类型吗(代码片段)

从大一自学Java已经两年了,自觉已经可以独当一面,(其实远远不足),最近一直在看书。关于java四种引用类型,我也是刚了解,特此记下!在Java中提供了四个级别的引用:强引用,软引用,弱引用和虚引用。在这四个引用类... 查看详情

java8新特性(值得学习)

...知名的互联网公司经常会被面试官问,你了解java8吗?你知道它的一些新特性吗?好像似乎成了一面面试官必问的一道题目。这篇博文,只是简答的介绍了一下新特性,同学们还得自己实际操作,深入了解,最好能实际应用到项... 查看详情

身为初学java的你,这些ide的优缺点你都知道吗?

...头。那么,身为初学Java的你,它们的优缺点你都知道吗?本文小千就列举6款常用的IDE的优缺点,看看哪一个更适合你。1:eclipse这是应用比较广泛的一款针对于 查看详情

仿伊对梵高相亲交友系统特性以及构成基础,你了解吗?

仿伊对相亲社交开发语言1、后台:PHP语言框架:thinkphp2、系统:linux数据库:mysql3、Android端语言:JavaIOS端语言:OC4、APP前端原生开发,无框架源码开源,支持二次开发,根据客户不同应用场景需求,定制个性化解决方案。社交产... 查看详情

4.27

...件和二进制文件?如何编程操作这两种文件?不明白,不知道,不晓得2.4学了C语言,你知道什么叫面向过程吗?它解决问题的方法是什么?不知道,过程2.5在C语言里面,什么是模块?你写过多个源文件的程序吗?include,写过2.6学了C... 查看详情

线程八大基础核心五(线程相关方法一)(代码片段)

...和使用场景说清楚,需要用两篇文章进行分享#考考你1.你知道wait/notify/notifyAll方法的作用吗?2.你知道notify与notifyAll方法的区别吗?3.你知道sleep方法的作用吗?4.你知道wait与sleep方法的区别吗?5.你知道join方法的作用吗?6.你知... 查看详情

python的坑--你知道吗?(代码片段)

python的坑--你知道吗?1.列表的坑坑的地方是:因为列表用pop之后,后面的索引都会自动减一#列表的坑之一list1=[‘python‘,‘java‘,‘php‘,‘c‘,‘c++‘,‘c#‘,‘ruby‘]#将索引为奇数的元素删除[‘java‘,‘c‘,‘c#‘]list2=[]foriteminlis... 查看详情

c++14的这些新特性,你都知道吗?(代码片段)

文章目录语言特性变量模板泛型lambda放宽constexpr的限制二进制字面量数位分隔符函数返回值类型推导库特性make_uniqueshared_timed_mutex和shared_lockinteger_sequenceexchangequoted本文仅介绍C++14中的一些比较重要的特性。语言特性变量模... 查看详情

c++14的这些新特性,你都知道吗?(代码片段)

文章目录语言特性变量模板泛型lambda放宽constexpr的限制二进制字面量数位分隔符函数返回值类型推导库特性make_uniqueshared_timed_mutex和shared_lockinteger_sequenceexchangequoted本文仅介绍C++14中的一些比较重要的特性。语言特性变量模... 查看详情

初学java的步骤你知道吗转载

  Java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要... 查看详情

c++20的这些新特性,你都知道吗?(代码片段)

文章目录语言特性三路比较运算符范围for中的初始化语句和初始化器constevalconstint概念(concepts)约束协程模块库特性formatosyncstreamspanendianjthreadsemaphorelatchbarrier位运算库ranges语言特性三路比较运算符三路比较运算符表达式... 查看详情

c++20的这些新特性,你都知道吗?(代码片段)

文章目录语言特性三路比较运算符范围for中的初始化语句和初始化器constevalconstint概念(concepts)约束协程模块库特性formatosyncstreamspanendianjthreadsemaphorelatchbarrier位运算库ranges语言特性三路比较运算符三路比较运算符表达式... 查看详情

java8中你可能不知道的一些地方之接口默认方法实战(代码片段)

Java8已经发布很久,是自java5(2004年发布)之后Oracle发布的最重要的一个版本。其中包括语言、编译器、库、工具和JVM等诸多方面的新特性,对于国内外互联网公司来说,Java8是以后技术开发的趋势。这里主要讲解在开发中几个... 查看详情