提问

首先抛出问题吧:Java为什么需要基本类型?

最开始遇到这个问题的场景不记得了,但是一查之下,发现一个问题:Java既然是面向对象的,宣称一切都是对象,为什么还有基础类型。

先上结论

为了性能+惯性

解决过程

先理解下java的数据构成:java的基本数据类型有八种

简单点就是,基本数据类型+引用型数据类型。

接下来查查为啥还要基本数据类型呢?

因为这样子,性能上的追求。

那么进一步,为啥栈要比堆快呢?其实这个就是个博弈,要灵活性(堆,动态分配内存空间),就要舍弃速度;要速度(栈,速度快,严格限制进出方式),就要牺牲灵活性。

具体看这里:栈和堆的区别是什么? 为什么说栈的速度快,堆的速度慢?

但是java发展这么多年,想现在这点速度差别应该不算什么事儿了吧,为啥还有。

仔细查查看,发现还是一开始出现的这个东西,一直沿用了下来呗,让面向对象的代码中,出现了一丝丝的不和谐。

最后说下装箱和基本类型:

  • 基本类型都有对应的装箱类型,但声明的时候看声明情况判断是否是对象:
int a = 0; // 基本类型
Integer b = 1; //自动装箱
Integer c = new Integer(3); // 对象声明
  • 可以自动装箱不代表就是基本类型,比如
String str = "str";

Java为什么需要基本类型的更多相关文章

  1. 详解Java 8中Stream类型的“懒”加载

    在进入正题之前,我们需要先引入Java 8中Stream类型的两个很重要的操作: 中间和终结操作(Intermediate and Terminal Operation) Stream类型有两种类型的 ...

  2. Java笔记10-Object包装类型字符串

    提纲: 1.java.lang.0bject中常用方法介绍 2.基本类型对应的包装类型的介绍 以及基本类型和包装类型之间的相互转换 3.java.lang.String 字符串处理类 java.lan ...

  3. Java中的Bigdecimal类型运算

    Java中的Bigdecimal类型运算 双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更小的数进行运算和处理.Java在java.math包中提 供的API类BigD ...

  4. java获取获得Timestamp类型的当前系统时间。以及java.util.date 、java.sql.Date之间的转换

    java获取取得Timestamp类型的当前系统时间java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = new T ...

  5. Java Hour 50 日期类型

    Plan List: 1 Java 中的日期类型 2 mysql 相关 3 java code style 鉴于本问题太过普通,所以参考文章满大街都是,因此本文内容基本为转载和验证. java.sql ...

  6. java获取获得Timestamp类型的当前系统时间

    java获取取得Timestamp类型的当前系统时间java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = new T ...

  7. [原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点,在hibernate 中 java类型 与sql类型之间的对应关系,Java 时间和日期类型的映射,Java 大对象类型 的 映射 (了解),映射组成关系

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  8. java获取获得Timestamp类型的当前系统时间。

    java获取获得Timestamp类型的当前系统时间.   java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = n ...

  9. java 中的原始类型与原始封装类型

    Java   提供两种不同的类型:引用类型和原始类型(或内置类型).比如:Int是java的原始数据类型,Integer是java为int提供的封装类.Java为每个原始类型提供了封装类,常见的原始与 ...

  10. 理解Java中的字符串类型

    1.Java内置对字符串的支持: 所谓的内置支持,即不用像C语言通过char指针实现字符串类型,并且Java的字符串编码是符合Unicode编码标准,这也意味着不用像C++那样通过使用string和w ...

随机推荐

  1. jQuery动态效果

    1.一号店首页 2.淘宝网购物车

  2. ro多层的事务处理失败的困惑

    现象: 用 :: ::'' 在客户端用上面的语句取得数据,然后修改数据,通过RO的web service提交数据失败: 用 -- ::-- ::'‘ 在客户端用上面的语句取得数据,然后修改数据,通过R ...

  3. 【Codeforces 229B】Planets

    [链接] 我是链接,点我呀:) [题意] [题解] 设dis[i]表示到达i号传送器的最早时刻. 显然,虽然有那么多的出发时刻的限制,但我们还是越早到越好的. 因为你到得越早,出发的时间肯定不会比到达 ...

  4. oracle 单独开始一个事物的写法 。

    SET TRANSACTION NAME 'Update salaries'; SAVEPOINT before_salary_update; UPDATE employees SET salary= ...

  5. spring-boot-starter-actuator监控接口详解

    spring-boot-starter-actuator 是什么 一句话,actuator是监控系统健康情况的工具. - 怎么用? 1. 添加 POM依赖 <dependency> < ...

  6. spring boot @Transactional事物处理

    spring boot 添加事物使用 @Transactional注解 简单使用 在启动类上方添加 @EnableTransactionManagement注解 使用时直接在类或者方法上使用 @Tra ...

  7. 洛谷 P1535 游荡的奶牛

    P1535 游荡的奶牛 题目描述 Searching for the very best grass, the cows are travelling about the pasture which ...

  8. [Cypress] Get started with Cypress

    Adding Cypress to a project is a simple npm install away. We won’t need any global dependencies beyo ...

  9. 打破传统天价SAP培训,开创SAP师徒之路,经验丰富的老顾问带徒弟 qq群150104068

    SAP领航社区,开设了一个导师性质的师徒圈子,类似大学导师带研究生,导师给学生安排课题.分配任务.分享资料,让学生自学提高.我们的教学方法是以自学为主.辅导为辅助,在实践中积累经验掌握原理.主要方向A ...

  10. Git与SVN区别 \git学习

    http://blog.csdn.net/w13770269691/article/details/38705473/ https://git-scm.com/book/zh/v2