从C++入手,探寻java的特点
java的特点
java语言建立在成熟的算法语言和坚实的面向对象理论的基础上,具有强大的应用系统设计能力,其具备的跨平台特型,其具备的跨平台特型、面向对象和可靠性、安全性等特点是它能够充分适应网络需要的无比可拟的优势。
java以更简单、更精炼的方式实现了C++语言的所有功能。java是当今世界信息技术的所有功能。
1.跨平台特型
跨平台特性使java应用程序可以运行在多种操作系统(Windows、UNIX等)平台上,这是java区别其它高级语言的最重要的标志。
java虚拟机中的计时器负责介绍执行字节码文件,将自己码解释成由本地操作系统支持的机器指令,解释一句,执行一句。
java虚拟机执行应用程序具有以下特点:
- 动态性:管理功能全部采用动态方式,如动态分配数组的存储空间、动态创建对象、动态链接数据库等,这些动态特性使java程序适合咋网络上运行。
- 异常处理:提供可靠的异常处理机制。
- 线程: 采用多线程方式运行,各线程独立执行,并协调一致地处理共享数据。
2.完全面向对象和简单性
java对c\c++语言的基本语法的改进说明:
- 不支持全局变量和弘替换
- 为每种数据类型分配固定长度
- 进行类型相容性检查,防止不安全的类型转换
- 不支持goto语句
- 不支持指针类型,通过引用模型实现了指针的功能。
(这个是重点,要好好理解这个特点) - 不支持结构类型,使用类代替
(没有struct,只有class) - 不支持头文件,用import来声明导入制定包中的类或接口
- 内容动态存储且自动管理,动态申请数组和对象的存储空间,自动释放空间,没有指针操作方式
java的基本语法说明:
- 为8种基本数据类型提供相应的基本数据类型包装类,使基本数据类型与类相关联,体现完全面向对象
- 将数组设计为引用类型,每个数值都有长度属性
- 不支持全局函数,所有函数都必须写在类中;
函数内不能用static声明局部变量 - 不支持友元类和运算符重载,因为友元破坏封装性
- 提供单继承机制,即一个类只有有个父类。子类不能继承父类的构造方法,但可以继承析构方法。所有成员方法都可以在运行时被覆盖,都是C++含义的虚函数;不支持多继承,提供接口,通过“单继承+接口”方式实现多继承功能
由于java使用下标形式对数组元素进行操作,则不需要使用指针;
方法采用返回值或引用类型参数返回结果,也不需要使用指针;
构造方法采用重载方式,则不需要采用参数默认值形式,避免产生歧义;
通过成员方法实现类的操作,则不需要重载运算符等;
3.可靠性
C++最大的隐患是使用指针和内容缺乏自动管理
(1)语言级别
java语言提供严密的语法规则,在编译和运行时进行严格检查,降低程序出错的可能性。
例如:boolean与int类型数据不能进行运算,数组下标不能越界,避免有效数据被覆盖。
java语言提供异常处理机制,使程序具备在运行过程中及时发现并处理运行时错误的能力。
(2)运行架构级别
java语言提供的资源回收(garbage collection)机制,对内容资源进行自动管理,跟踪程序使用的所有内容资源,自动收回不再使用的内容资源,减轻了程序员的工作量,提高了程序运行的可靠性。
4.安全性
java采用域管理方式的安全模型,无论是本地代码还是远程代码,都可以通过配置策略,设定课访问的资源域
参考《java程序设计使用教程-第5版》叶核亚编著
从C++入手,探寻java的特点的更多相关文章
- 从synchronized和lock区别入手聊聊java锁机制
写这篇文章之前,我去百度了一下啥叫锁,百度百科上写道:置于可启闭的器物上,以钥匙或暗码开启.确实我们一般理解的锁就是门锁,密码锁,但是在计算机科学中,锁又是啥,说实话,这个问题我也思考了很久,也没法很 ...
- 16.10.18学到的Java知识
1. 突然间发现自己忘了关于自增自减运算符放在变量前后的区别是什么了? 于是乎,我查了资料. 如果只对自变量进行加1或减1的时候,放在前面和后面都是没有区别的. 但是,如果自增自减运算符使用在需要赋值 ...
- 深入浅出 Java Concurrency (2): 原子操作 part 1
转:http://www.blogjava.net/xylz/archive/2010/07/01/324988.html 从相对简单的Atomic入手(java.util.concurrent是基于 ...
- Java的三种代理模式简述
本文着重讲述三种代理模式在java代码中如何写出,为保证文章的针对性,暂且不讨论底层实现原理,具体的原理将在下一篇博文中讲述. 代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下, ...
- 理解java的三种代理模式
代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下,实现对目标对象的功能扩展. 比如有个歌手对象叫Singer,这个对象有一个唱歌方法叫sing(). 1 public class ...
- Java多线程(四) —— 线程并发库之Atomic
一.从原子操作开始 从相对简单的Atomic入手(java.util.concurrent是基于Queue的并发包,而Queue,很多情况下使用到了Atomic操作,因此首先从这里开始). 很多情况下 ...
- 理解 Java 正则表达式怪异的 \\ 和 \\\\,让您见怪不怪
本文链接 https://unmi.cc/understand-java-regex-backslash/, 来自 隔叶黄莺 Unmi Blog Java 语言里的几大变革,一为 jdk1.4 引入的 ...
- 《深入浅出 Java Concurrency》——原子操作
part1 从AtomicInteger開始 从相对简单的Atomic入手(java.util.concurrent是基于Queue的并发包.而Queue.非常多情况下使用到了Atomic操作.因此首 ...
- 浅析java线程和OS线程的关系
探究java线程和OS线程之间的联系 一.准备工作 1.查看linux创建线程的方法 man pthread_create 根据man的配置可知,pthread_create会创建一个线程,这个 ...
随机推荐
- ubuntu18.04 开机定时启动任务
1,crontab 格式:M H D m d cmd == 分 时 天 月 周几 命令 参数 : crontab -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑 ...
- 【译】Database Profiling with Visual Studio
你是否在排查运行缓慢的 web 应用程序时怀疑是数据库层造成的?以前排查数据库层需要特定的工具,现在可以使用 Visual Studio 的 Performance Explorer 中的数据库分析工 ...
- 简单易懂的JS继承图解
JS继承的实现方式一共有八种.下面我们来一个一个瞅一下.注意️:文章依据个人理解,难免有问题,还望各位及时指出!!!!! 原型链继承 借用构造函数继承 组合继承 原型式继承 寄生继承 寄生组合式继承 ...
- [SCOI2013]摩托车交易 题解
思路分析 为了让交易额尽量大,显然我们需要尽量多地买入.对于每个城市,到达这个城市时携带的黄金受到几个条件的影响:之前卖出的黄金,之前能买入的最多的黄金,前一个城市到当前城市的路径上的最小边权.既然不 ...
- 前端ES6 一些面试题
1.ES5.ES6和ES2015有什么区别? ES2015特指在2015年发布的新一代JS语言标准,ES6泛指下一代JS语言标准,包含ES2015.ES2016.ES2017.ES2018等.现阶段在 ...
- 新手oracle重启、监听
有一次遇到了记录下. #su到oracle用户下 [root@localhost ~]# su - oracle #重启数据库:[oracle@localhost ~]$ sqlplus /nolo ...
- 【转】Android DrawingCache
转自:http://magiclen.org/android-drawingcache/ 日期: 2014 年 8 月 27 日 | 作者: Magic Len 開發Android的時候,在許多情況下 ...
- 使用Vagrant 后发现虚拟机磁盘空间爆满的血泪填坑记
现象: 用了几天vagrant后,发现docker 里的 Mysql5.7 服务无法启动,用docker ps 命令,发现mysql一直在反复重启, 查看mysql log 发现说磁盘空间不够, ...
- or2?Scum!(周期性求解)
链接:https://ac.nowcoder.com/acm/contest/316/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言2621 ...
- Combine 框架,从0到1 —— 4.在 Combine 中使用通知
本文首发于 Ficow Shen's Blog,原文地址: Combine 框架,从0到1 -- 4.在 Combine 中使用通知. 内容概览 前言 让通知处理代码使用 Combine 总结 ...