从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会创建一个线程,这个 ...
随机推荐
- 第六篇 Scrum冲刺博客
一.会议图片 二.项目进展 成员 已完成情况 今日任务 冯荣新 购物车列表,购物车工具栏 博客撰写 陈泽佳 静态结构 自定义图片组件,提交功能 徐伟浩 协助前端获取数据 协助前端获取数据 谢佳余 未完 ...
- C言语--冒泡排序
/* 冒泡排序,从小到大 */ include<stdio.h> int main(void) { int i; int t; int p; int val; int a[6]; for( ...
- 【HttpRunner v3.x】笔记 ——1. 环境安装
一.环境说明 HttpRunner 是一个基于 Python 开发的测试框架,可以运行在 macOS.Linux.Windows 系统平台上.笔者使用的是windows系统,所以后续都是基于windo ...
- Weights and Measures (贪心+dp)
I know, up on top you are seeing great sights, But down at the bottom, we, too, should have rights. ...
- C#发送邮件三种方法,Localhost,SMTP,SSL-SMTP
C#发送邮件三种方法,Localhost,SMTP,SSL-SMTP 通过.Net FrameWork 2.0下提供的“System.Net.Mail”可以轻松的实现,本文列举了3种途径来发送: 1. ...
- 从架构到部署,全面了解K3s
Kubernetes无处不在--开发者的笔记本.树莓派.云.数据中心.混合云甚至多云上都有Kubernetes.它已然成为现代基础设施的基础,抽象了底层的计算.存储和网络服务.Kubernetes隐藏 ...
- python应用 曲线拟合 01
双指数函数 待拟合曲线为 y(x) = bepx + ceqx import matplotlib.pyplot as plt x = ([0.05, 0.1, 0.15, 0.2, 0.25, 0. ...
- Effective Objective-C 的读书笔记
本文主要是摘录了 <Effective Objective-C 2.0>一书中提到的编写高质量iOS 代码的几个方法. 1 熟悉Objective -C 1.1 OC 起源 OC 为C语言 ...
- 登录SQL Server服务器时的服务器名称
在本地访问Microsoft SQL Server 2008服务器时,首先就是要填写正确的服务器名称.经测试,该名称可以有多种写法,具体如下: 写法一: X\sqlexpress(X即计算机名) 写法 ...
- elo system
今天了解了一下游戏中的PVP模块的实现,大多数的游戏都使用到了ELO算法,刚开始的时候并不清楚这个算法是做什么的,对此开始大量查找有关于ELO算法的资源,功夫不负有心人,总算找到一些有用的资源了. 先 ...