专栏首页Java知己为什么Java不是纯面向对象语言?
原创

为什么Java不是纯面向对象语言?

什么是纯面向对象语言?


纯面向对象语言或完全面向对象语言是指完全面向对象的语言,它支持或具有将程序内的所有内容视为对象的功能。它不支持原始数据类型(如int,char,float,bool等)。编程语言满足七种标准可以就可以称为纯粹的面向对象语言,他们是:

  1. 封装/数据隐藏
  2. 继承
  3. 多态性
  4. 抽象化
  5. 所有预定义类型都是对象
  6. 所有用户定义的类型都是对象
  7. 对对象执行的所有操作必须仅通过对象公开的方法

正是金九银十跳槽季,为大家收集了2019年最新的面试资料,有文档、有攻略、有视频。有需要的同学可以来在公众号【Java知己】,发送【面试】领取最新面试资料攻略!

为什么Java不是纯面向对象语言?


Java支持属性1,2,3,4和6但不支持上面给出的属性5和7. Java语言不是纯面向对象语言,因为它包含以下属性:

原始数据类型例如对象

Smalltalk是一种“纯粹的”面向对象的编程语言,与Java和C++不同,因为作为对象的值和作为基本类型的值之间没有区别。在Smalltalk中,原始值,例如整数,布尔值和字符也是对象。

在Java中,我们将预定义类型作为非对象(基本类型)。

int a = 5; 
System.out.print(a);

static关键字

当我们将一个类声明为Static时,可以在不使用Java中的对象的情况下使用它。

包装类

包装类提供了将基元转换为对象和对象转换为基元的机制。在Java中,您可以使用Integer,Float等代替int,float等。我们可以在不调用其方法的情况下与对象使用算术运算符。

String s1 ="ABC"+"A";

即使使用Wrapper类也不会使Java成为纯OOP语言,因为内部它将使用Unboxing和Autoboxing等操作。因此,如果您不是用int Integer创建并对其执行任何数学运算,那么Java将仅使用基本类型int 。

public class BoxingExample  { 
	public static void main(String[] args){ 
			Integer i = new Integer(10); 
			Integer j = new Integer(20); 
			Integer k = new Integer(i.intValue() + j.intValue()); 
			System.out.println("Output: "+ k); 
	} 
} 

在上面的代码中,有两个问题,Java无法像纯OOP一样工作:

  • 在创建Integer类时,您使用的是基本类型“int”,即数字10,20。
  • 在使用加法时,Java使用原始类型“int”( jdk1.5需要拆箱操作,jdk1.5及以后添加了新特性:自动装箱和拆箱)。

“不积跬步,无以至千里”,希望未来的你能:有梦为马 随处可栖!加油,少年!

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 作为Java开发人员不会饿死的5个理由

    尽管已有20多年的历史,Java仍然是最广泛使用的编程语言之一。只需看看统计数据:根据2018年Stack Overflow开发人员调查,Java是世界上第三大...

    淡定的蜗牛
  • 每个 Java 开发人员都应该知道的 10 个基本工具

    大家好,我们已经在 2019 年的第 9 个月,我相信你们所有人已经在 2019 年学到了什么,以及如何实现这些目标。我一直在写一系列文章,为你提供一些关于你可...

    淡定的蜗牛
  • 面试官:服务器安装 JDK 还是 JRE?可以只安装 JRE 吗?

    前些日子有知友面试时被问到如题所示的问题,由于他之前没有准备到这些最最基础的知识,没有考虑过这个问题,所以被问到时竟一脸萌币,回答的不是很好。这道题主要考的是对...

    淡定的蜗牛
  • Java面经-百度新入职老哥整理这半年学习经验,面试刷题路线

    我这半个月一直在整理资料,新入职的百度的一位老哥给了我很多帮助,这篇文章很多都是来源于他的学习经历,学习路径,现在在这里把他的学习经历和面试经历分享给大家,这个...

    Java小朔哥
  • Integer、new Integer() 和 int 比较的面试题

    https://www.cnblogs.com/cxxjohnson/p/10504840.html

    java思维导图
  • 一段统计双色球历史摇奖记录里每位出现次数的代码

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.blog....

    Jerry Wang
  • 谈谈 Integer 的值缓存范围和对象大小

    int 是我们常说的整形数字,是 Java 的 8 个原始数据类型(Primitive Types,boolean、byte、short、char、int、fl...

    葆宁
  • 夯实Java基础系列2:Java基本数据类型,以及自动拆装箱里隐藏的秘密

    本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看

    黄小斜
  • Java基础--int与Integer区别

    java在最初设计的时候就提供了8种基本数据类型和对应的8种引用类型。 基本数据类型|封装类型 ---|--- byte|Byte short|Shor...

    河岸飞流
  • Flink SQL vs Spark SQL

    Spark已经在大数据分析领域确立了事实得霸主地位,而Flink则得到了阿里系的亲赖前途一片光明。我们今天会SparkSQL和FlinkSQL的执行流程进行一个...

    麒思妙想

扫码关注云+社区

领取腾讯云代金券