java的语言特点
Java语言特点:
- 简单性
- 面向对象
- 平台无关性【可运行于不同的平台】
- 稳健性
- 安全性
- 可移植性
- 高性能
- 多线程
- 编译和解释性
- 分布性
1.面向对象
尽管Java是基于C++的,但是相比之下,Java是一种更“纯粹”的面向对象程序设计语言。
面向对象其实是现实世界模型的自然延伸,世间万物都可以看作为对象。对象之间通过消息相互作用,现实世界中任何实体都以归纳成为某类事物,也因此任何对象都是某一类事物的实例,如果说传统的过程式编程语言是以过程为中心以算法为驱动的话,面向对象的编程语言则是以对象为中心以消息为驱动。用公式表示,过程式编程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。
面向对象语言都支持三个概念:封装,多态和继承,Java也不例外。现实世界中的对象均有属性和行为,映射到计算机程序上,属性则表示对象的各个字段数据,行为表示对象的方法(方法的作用是处理数据或同外界交互)。所谓封装,就是用一个自主式框架把对象的数据和方法联在一起形成一个整体。可以说,对象是支持封装的手段,是封装的基本单位。Java语言的封装性较强,因为Java无全程变量,无主函数,在Java中绝大部分成员是对象,只有简单的数字类型、字符类型和布尔类型除外。而对于这些类型,Java也提供了相应的对象类型以便与其他对象交互操作。
Alan Kay曾总结了第一个成功的面向对象语言,同时也是Java所基于的语言之一Smalltalk的五个基本特征:
1 万物皆对象。将对象视为奇特的变量,它可以存储数据,除此之外,你还可以要求它在自身上执行操作。理论上讲,你可以抽取待求问题的任何概念概念化构件(狗,建筑物,服务等),将其表示为程序中的对象。
2 程序时对象的集合,他们通过发送消息来告知彼此所要做的。要想请求一个对象,就必须对该对象发送一条消息。更具体地说,可以把消息想象为对某个特定对象的方法的调用请求。
3 每个对象都有自己的由其它对象所构成的存储。换句话说,可以通过创建包含现有对象的包的方式来创建新类型的对象。因此,可以在程序中构件复杂的体系,同时将其复杂性隐藏在对象的简单性背后。
4 每个对象都拥有其类型。按照通用的说法,“每个对象都是某个类(class)的一个实例(instance)”,这里“类”就是“类型”的同意词。每个类最重要的区别于其他类的特性就是“可以发送什么样的消息给他”。
5 某个特定类型的所有对象都可以接收同样的消息。这是一句意味深长的表述,比如因为“圆形”类型的对象同时也是“几何形”类型的对象,所以一个“圆形”对象必定能够接受发送给“几何形”对象的消息。这意味着可以编写“几何形”交互并自动处理所有与几何形性质相关的事物的代码
2. 简单性
Java 语法是 C++ 语法的一个“ 纯净” 版本。这里没有头文件、 指针运算(甚至指 针语法)、结构、 联合、操作符重载、 虚基类等。如果你了解 C++ 就会发现可以轻而易举地转换到 Java语法。
?
?
3. 分布式
Java 有一个丰富的例程库, 用于处理像 HTTP 和 FIT 之类的 TCP/IP 协议。Java 应用 程序能够通过 URL 打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。
4. 健壮性
Java 编译器能够检测许多在其他语言中仅在运行时才能够检测出来的问题。
5. 安全性
从一开始,Java 就设计成能够防范各种攻击,其中包括:
(1)运行时堆栈溢出。 如蠕虫和病毒常用的攻击手段。
(2)破坏自己的进程空间之外的内存。
(3) 未经授权读写文件。
6. 体系结构中立性
编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码, 只要有 Java 运行时系统, 这些编译后的代码可以在许多处理器上运行。
7. 可移植性
在 Java 中,数据类型具有固定的大小, 这消除了代码移植时令 人头痛的主要问题。 二进制数据以固定的格式进行存储和传输, 消除了字节顺序的困扰。字 符串是用标准的 Unicode 格式存储的。
8. 解释性
Java 解释器可以在任何移植了解释器的机器上执行 Java 字节码。由于链接是一 个增量式且轻量级的过程, 所以, 开发过程也变得更加快捷, 更加具有探索性。
9. 高性能
字节码可以(在运行时刻)动态地翻译成对应运行这个应用的特定 CPU 的机 器码。
10. 多线程
多线程可以带来更好的交互响应和实时行为。
11. 动态性
Java 与 C 或 C++ 相比更加具有动态性。它能够适应不断发展 的环境库中可以自由地添加新方法和实例变量, 而对客户端却没有任何影响。在 Java 中找出运行时类型信息十分简单。
java零基础视频推荐
https://www.bilibili.com/video/BV1qL411u7eE?from=search&seid=8830483804040564676&spm_id_from=333.337.0.0