Java中的基本类型与非基本类型

Posted qfjavabd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的基本类型与非基本类型相关的知识,希望对你有一定的参考价值。

技术图片

  概述

  Java号称一切皆为对象,此话不假,但是尚需知道Java中的对象分两种类型:基本类型和非基本类型。

  基本类型

  基本类型就是那些最常用的类型,例如:boolean/char/byte/short/int/long/float/double,这些类型有个特点,就是变量直接存储值。举个栗子:int num=100;,变量num中存储的值就是100。

  非基本类型

  那啥是非基本类型呢,从字面就可以理解,除了基本类型之外的都是非基本类型了。非基本类型有个显著特点就是初始化的时候一般需要使用new来创建一个对象。

  例如:String name=new String(Tom);。注意因为String字符串类型太常用了,Java为该类型做了一个语法糖:例如String name=Tom,可以使用等号简化new操作,但是String类型依然是非基本类型。

  非基本类型跟基本类型的本质区别,在于非基本类型变量存储的不是值,而是引用。

  例如String name=new String(Tom);,首先有一个字符串Tom在内存上一个位置存储好,然后name变量保存的是一个指示该位置的引用“。注意该引用不一定是一个真实的内存物理地址,也可以是一个物理地址的代号,Java虚拟机只要能通过该引用找到这个位置就好了。

  内存的不同位置

  实际上,基本类型和非基本类型对象的存储位置也是有区别的,基本类型对象存储于“堆栈”中,而非基本类型对象存储于“堆”中。

  大家需要了解的是,“堆栈”更加靠近寄存器,所以速度更快,但是空间也就更小。而“堆“速度稍微慢点,但是空间更大。“堆栈”和“堆”都是内存的一块区域。

  还有一点Java是一门语言,具体如何执行还要靠虚拟机实现,所以上述堆”和堆栈“说法也不一定100%如此,比如某个大牛非要实现一个虚拟机,让基本类型存储到堆上,也未尝不可…一顿操作猛如虎,这段话只是提供一个假设,目前应该还是按上述逻辑在执行的。

?

 

以上是关于Java中的基本类型与非基本类型的主要内容,如果未能解决你的问题,请参考以下文章

Java中的基本类型和包装类

java笔记java中的基本数据类型和引用数据类型,及其区别

Java中的基本数据类型和引用数据类型的区别

java中的基本数据类型都有哪些

java中基本类型可以转成引用类型吗?可以的话写出方式,提高悬赏谢谢

java中的基本数据类型