Java语言发展史
Java语言特性
1.
简单性
Java语法是
C++
语法的一个
“
纯净版本
”
,相当于对
C++
做了一个减法。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等等。不仅如此,Java
开发环境远远超出大多数其他编程语言的开发环境。
2.
面相对象
什么是面向对象?
在Java
的世界里,一切皆对象
。比如:人、狗、手机、电脑等都是对象。所谓面相对象,就是依靠对象之间的交互来完成事情,比如:人用手机网上购物,狗吃骨头...
Java的面向对象特性与
C++
旗鼓相当,与
C++
的主要不同点在于多重继承。在
Java
中,取而代之的是更简单的接口概念。而且与C++
相比,
Java
提供了更丰富的运行时自省功能。
3.
分布式
(
微服务
)
Java有丰富的例程库,用于处理像
HTTP
和
FTP
之类的
TCP/IP
协议。
Java
应用程序能够通过
URL
打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。
4.
健壮性
Java与
C++
最大的不同在于
Java
采用的指针模型可以消除重写内存和损坏数据的可能性(对于曾经花费几个小时来检查由于指针bug
而引起内存冲突的人来说,一定很喜欢
Java
的这一特性)。不仅如此,
Java
编译器能够检测许多在其他语言中仅在运行时才能够检测出来的问题。
5.
安全性
Java适用于网络
/
分布式环境。为了达到这个目标,在安全性方面投入了大量的精力。使用
Java
可以构建防病毒、防篡改的系统
从一开始,
Java
就设计成能够防范常见的各种攻击:
运行时堆栈溢出。蠕虫和病毒常用的攻击手段。
破坏自己进程空间之外的内存。
未经授权读写文件
6. 体系结构中立
Java编译器通过生成与特定计算机体系结构无关的字节码指令来实现
这一特性
。

7.
可移植性
与C/C++
不同,
Java
规范中没有
“
依赖具体实现的地方
”
。
基本数据类型的大小以及有关运算都做了明确的说
明
。例如,
Java
中的
int
永远是
32
位的整数,而在
C/C++
中,
int
可能是
16
位整数、
32
位整数,也可能是编译器提供商指定的其他大小。在Java
中,数据类型具有固定的大小,这消除了代码移植时令人头疼的主要问题。
8.
解释性
Java为了实现与平台无关,自己维护了一套基于栈架构的指令集,
Java
源代码经过编译之 后,字节码文件中的指令就是按照自己的指令集来组织的,但是在具体硬件环境中运行时,系统并不能识别,因为Java
程序在执行时,Java
解释器会逐条的将字节码文件中的指令翻译成
CPU
的指令集。
9.
高性能
边解释边执行,垃圾会说等导致了Java
代码运行效率偏低,近年来
JVM
也在不断的优化,比如:
JIT(
即时编译器)
,热点代码探测,让
Java
程序的执行效率大幅提高,在有些场合不亚
C/C++
。
10.
多线程
Java在当时很超前。它是第一个支持并发程序设计的主流语言。多线程可以带来更好的交互响应和实时行为。并发程序设计绝非易事,但是Java
在这方面表现出色,可以很好的管理这个工作。
JDK、JRE、JVM之间的关系
JDK(Java Development Kit):Java
开发工具包,提供给
Java
程序员使用,包含了
JRE
,同时还包含了编译
器
javac
与自带的调试工具
Jconsole
、
jstack
等。
JRE(Java Runtime Environment):Java
运行时环境,包含了
JVM
,
Java
基础类库。是使用
Java
语言编写程
序运行的所需环境。
JVM
:
Java
虚拟机,运行
Java
代码

注释基本规则
单行注释://
注释内容(用的最多)
多行注释:/*
注释内容
*/
(不推荐)
文档注释: /**
文档注释
*/
(常见于方法和类之上描述方法和类的作用
)
,可以被
javadoc
工具解析,生成一套以网页文件形式体现的程序说明文档
注意:
1.
多行注释不能嵌套使用
2.
不论是单行还是多行注释,都不参与编译,即编译之后生成的
.class
文件中不包含注释信息。
标识符
在程序中由用户给类名、方法名或者变量所取的名字。
要求
标识符中可以包含:字母、数字以及 下划线和
$
符号等等。
注意:标识符不能以数字开头,也不能是关键字,且严格区分大小写。