从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会创建一个线程,这个 ...
随机推荐
- 2.Oracle数据库安装教程
一.准备安装 基本都是按部就班. 使用的OS版本:OEL4 安装程序路径: /mnt/Oracle11g_linux_x86_64/database 创建用户 使用的.bash_profile 修改的 ...
- MySQL最全存储引擎、索引使用及SQL优化的实践
1 MySQL的体系结构概述 整个MySQL Server由以下组成 :Connection Pool :连接池组件Management Services & Utilities :管理服务和 ...
- SparkStreaming支持的业务场景
目前而言SparkStreaming 主要支持以下三种业务场景: ➢ 无状态操作:只关注当前的DStream中的实时数据.例如:只对当前DStream中的数据做正确性校验.(下一条与上一条数据无关) ...
- CSS动画实例:移动的眼珠子
适当地利用CSS的box-shadow可以构造图形,然后可以对构造的图形添加动画效果.下面我们通过移动的眼珠子.圆珠一二三.一分为四.四小圆旋转扩散等实例来体会box-shadow属性在动画制作中的使 ...
- 第一篇 Scrum冲刺博客
一.Alpha任务认领 冯荣新 任务 预计时间 搜索框 0.5h 首页轮播图 0.5h 分类导航 2h 商品列表 2h 商品详情轮播图 0.5h 商品底部工具栏 1h 购物车列表 1.5h 购物车工具 ...
- windows server 2008 r2 环境下,实现域名和IP同时都能访问一个网站
有时候,用域名访问能得到一个页面,用IP地址访问也可以得到一个页面,比如 www.baidu.com 和 61.135.169.125 都可以打开百度页面.一开始要实现这种功能,还真有点不知所措,想了 ...
- failed to resolve org.junit.platform
IDEA提示:failed to resolve org.junit.platform,如下图 方法一:修改Maven镜像 D:\Program Files\apache-maven-3.6.3-pc ...
- 硬盘网盘U盘全部可以丢掉了,这个设备可以让你享受随身带着几个T的感受
前言 有小伙伴问我,你怎么老写技术类文章,能不能写点别的. 其实我兴趣挺广泛的,早年还有机会做个游戏博主,可惜最近2年金盆洗手了.戒了手游,ns和ps4都在吃灰.能完整玩完的游戏屈指可数.但是对于折腾 ...
- ABP VNext实践之搭建可用于生产的IdentityServer4
一.前言 用了半年多的abp vnext,在开发的效果还是非常的好,可以说节省了很多时间,像事件总线.模块化开发.动态API进行远程调用.自动API控制器等等,一整套的规范,让开发人员更方便的集成,提 ...
- 【Maven】Mac操作系统下安装配置maven环境变量
1.下载maven 下载地址:http://maven.apache.org/download.cgi 2.解压设置maven本地地址解压后 我放在 /Users/david/developer/ap ...