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的特点的更多相关文章

  1. 从synchronized和lock区别入手聊聊java锁机制

    写这篇文章之前,我去百度了一下啥叫锁,百度百科上写道:置于可启闭的器物上,以钥匙或暗码开启.确实我们一般理解的锁就是门锁,密码锁,但是在计算机科学中,锁又是啥,说实话,这个问题我也思考了很久,也没法很 ...

  2. 16.10.18学到的Java知识

    1. 突然间发现自己忘了关于自增自减运算符放在变量前后的区别是什么了? 于是乎,我查了资料. 如果只对自变量进行加1或减1的时候,放在前面和后面都是没有区别的. 但是,如果自增自减运算符使用在需要赋值 ...

  3. 深入浅出 Java Concurrency (2): 原子操作 part 1

    转:http://www.blogjava.net/xylz/archive/2010/07/01/324988.html 从相对简单的Atomic入手(java.util.concurrent是基于 ...

  4. Java的三种代理模式简述

    本文着重讲述三种代理模式在java代码中如何写出,为保证文章的针对性,暂且不讨论底层实现原理,具体的原理将在下一篇博文中讲述. 代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下, ...

  5. 理解java的三种代理模式

    代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下,实现对目标对象的功能扩展. 比如有个歌手对象叫Singer,这个对象有一个唱歌方法叫sing(). 1 public class ...

  6. Java多线程(四) —— 线程并发库之Atomic

    一.从原子操作开始 从相对简单的Atomic入手(java.util.concurrent是基于Queue的并发包,而Queue,很多情况下使用到了Atomic操作,因此首先从这里开始). 很多情况下 ...

  7. 理解 Java 正则表达式怪异的 \\ 和 \\\\,让您见怪不怪

    本文链接 https://unmi.cc/understand-java-regex-backslash/, 来自 隔叶黄莺 Unmi Blog Java 语言里的几大变革,一为 jdk1.4 引入的 ...

  8. 《深入浅出 Java Concurrency》——原子操作

    part1 从AtomicInteger開始 从相对简单的Atomic入手(java.util.concurrent是基于Queue的并发包.而Queue.非常多情况下使用到了Atomic操作.因此首 ...

  9. 浅析java线程和OS线程的关系

    探究java线程和OS线程之间的联系 一.准备工作 1.查看linux创建线程的方法    man pthread_create 根据man的配置可知,pthread_create会创建一个线程,这个 ...

随机推荐

  1. ubuntu 构建 deb 安装包

    源码包下载:http://mirrors.163.com/ubuntu/ 编译工具安装: apt-get install dpkg-dev 以openvswitch为例: wget http://mi ...

  2. SVG的引入历程

    直接引入编辑器会报错 Google: typescript svg cannot find module找到 这个网址 我放到了 shims-vue.d.ts 里面 declare module &q ...

  3. Java多线程_阻塞队列

    1.什么是阻塞队列       我们知道,PriorityQueue.LinkedList这些都是非阻塞队列.在我们使用非阻塞队列的时候有一个很大问题,它不会对当前线程产生阻塞,那么在面对类似消费者- ...

  4. Hadoop 2.6.1 集群安装配置教程

    集群环境: 192.168.56.10 master 192.168.56.11 slave1 192.168.56.12 slave2 下载安装包/拷贝安装包 # 存放路径: cd /usr/loc ...

  5. 3d相册展示

    示例代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta ...

  6. 前端 的一些css的写法

    攒一下小技巧 1.select 默认提示但是不显示在选择列表中 <option selected="selected" disabled="disabled&quo ...

  7. antdv时间选择a-date-picker设置日期可选范围(近一周、近半月、近一月等) - moment.js

    Vue->Template: <a-date-picker v-model="value" :disabled-date="disabledDate" ...

  8. mysql图形化工具基本操作

    一.DataType 常见的数据类型: - `int` 整数 - `varchar(len)` 字符串 - `tinyint(1)`布尔值 二.设置字段的特殊标识 - `PK`(`Primary Ke ...

  9. 焦大:seo思维光年(上)检索的价值观

    http://www.wocaoseo.com/thread-55-1-1.html 检索的价值观是什么?最近很多人咨询我这个问题,因为在百度上根本找不到相关的资料,其实这个东西也是我自己总结的,比如 ...

  10. c#值类型引用类型第一章

    概要 本篇文章主要简单扼要的讲述值类型和引用类型更进阶的理解和使用.如果希望更多的了解和技术讨论请记得看文章末尾,望各位看官多多支持多多关注,关注和支持是我更新文章的最大动力.在这里谢谢大家.温馨提示 ...