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

Wesley13
• 阅读 597

一、前言

众所周知Java是一种强类型语言,在Java语言中,Java的数据类型一共分为两大类,分别为基本数据类型引用数据类型,其中基本数据类型细分小类可分为整数类型、浮点类型、字符类型、布尔类型这四小类。

二、基本数据类型和引用数据类型

1. 基本数据类型

只有8种,可按照如下分类 :

  • 整数类型: long、int、short、byte
  • 浮点类型: float、double
  • 字符类型: char
  • 布尔类型: boolean

No.

数据类型

大小/位

可表示数据范围

默认值

1

byte(字节型)

8

-128~127

0

2

short(短整型)

16

-32768~32767

0

3

int(整型)

32

-2147483648~2147483647

0

4

long(长整型)

64

-9223372036854775808~9223372036854775807

0

5

float(单精度)

32

-3.4E38~3.4E38

0.0

6

double(双精度)

64

-1.7E308~1.7E308

0.0

7

char(字符)

16

0~255

‘\u0000’ (其实就是一个空格)

8

boolean(布尔)

-

true或false

false

2. 引用数据类型

引用数据类型非常多,大致包括:类Class、 接口类型Inteface、 数组类型Array、 枚举类型Enum、 注解类型、 字符串型

例如,String类型就是引用类型。
简单来说,所有的非基本数据类型都是引用数据类型。

三、基本数据类型和引用数据类型的区别

1. 存储位置区别

a). 基本变量类型

  • 在方法中定义的非全局基本数据类型变量的具体内容是存储在栈中的,基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上的。

b). 引用变量类型

  • 只要是引用数据类型变量(类class、接口interface、数组array),其变量或者对象的具体内容信息都是存放在堆中的,而栈中存放的是其具体内容所在内存的引用地址
    Tips : 通过变量地址可以找到变量的具体内容,就如同通过房间号可以找到房间一般

    public class Main{

    public static void main(String[] args){

       //基本数据类型
       int i=1;
       double d=1.2;
       
       //引用数据类型
       String str="helloworld";
    

    } }

c)内存划分:

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

2. 传递方式区别

a. 基本变量类型

  • 方法中定义的非全局基本数据类型变量,调用方法时作为参数是按数值传递的

    //基本数据类型作为方法参数被调用 public class Main{

    public static void main(String[] args){

       int msg = 100;
       System.out.println("调用方法前msg的值:\n"+ msg);    //100
       fun(msg);
       System.out.println("调用方法后msg的值:\n"+ msg);    //100
    

    } public static void fun(int temp){

       temp = 0;
    

    } }

  • 内存空间
    Java中的基本数据类型和引用数据类型的区别

b. 引用变量类型

  • 引用数据类型变量,调用方法时作为参数是按引用传递的

    //引用数据类型作为方法参数被调用

    class Book{

    String name;
    double price;
    
    public Book(String name,double price){
    
    
    
        this.name = name;
        this.price = price;
    }
    public void getInfo(){
    
    
    
        System.out.println("图书名称:"+ name + ",价格:" + price);
    }
    
    public void setPrice(double price){
    
    
    
        this.price = price;
    }
    

    }

    public class Main{

    public static void main(String[] args){

       Book book = new Book("Java开发指南",66.6);
       book.getInfo();  //图书名称:Java开发指南,价格:66.6
       fun(book);
       book.getInfo();  //图书名称:Java开发指南,价格:99.9
    

    }

    public static void fun(Book temp){

       temp.setPrice(99.9);
    

    } }

调用时为temp在栈中开辟新空间,并指向book的具体内容,方法执行完毕后temp在栈中的内存被释放掉

  • 内存空间
    Java中的基本数据类型和引用数据类型的区别
    Java中的基本数据类型和引用数据类型的区别

四、参考

文章来自: https://www.cnblogs.com/maskwolf/p/9972982.html

本文同步分享在 博客“Thinkingcao”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
菜园前端 菜园前端
12个月前
你了解JavaScript中的数据类型区分吗
原文链接:常见的ES5数据类型分为基本数据类型、引用数据类型两种。包含字符串、数字、对象、数组、函数、布尔值、空值、未知。基本数据类型String类型(字符串)javascriptvarname'xiaoming'Number类型(数字)javascrip
Wesley13 Wesley13
2年前
Java对象的浅拷贝和深拷贝&&String类型的赋值
Java中的数据类型分为基本数据类型和引用数据类型。对于这两种数据类型,在进行赋值操作、方法传参或返回值时,会有值传递和引用(地址)传递的差别。浅拷贝(ShallowCopy):①对于数据类型是基本数据类型的成员变量,浅拷贝会直接进行值传递,也就是将该属性值复制一份给新的对象。因为是两份不同的数据,所以对其中一个对象的该成员变量值进行修改,
Stella981 Stella981
2年前
JavaScript的深拷贝和浅拷贝
一、数据类型数据分为基本数据类型(String,Number,Boolean,Null,Undefined,Symbol)和对象数据类型。、1.基本数据类型的特点:直接存储在栈(stack)中的数据2.引用数据类型的特点:存储的是该对象在栈中引用,真实的数据放在堆内存里。引用数据类型在栈中存储了指针,该指针指向堆中该实
可莉 可莉
2年前
06_java之类概述
01引用数据类型\_类A:数据类型a:java中的数据类型分为:基本类型和引用类型B:引用类型的分类a:Java为我们提供好的类,比如说:Scanner,Random等。b:我们自己创建的类,按照类的定义标准,可以在类中包含多个方法与属性,来供我
Wesley13 Wesley13
2年前
Java之基本数据类型
本文章分为四个部分:1、基本数据类型的介绍2、类型转换3、装箱和拆箱4、有道练习5、增:编码的那点事儿_\基本数据类型的介绍_Java有8种基本数据类型,其中有
Wesley13 Wesley13
2年前
Java int与Integer的区别
int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别:int是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象1.Java中的数据类型分为基本数据类型和复杂数据类型int是前者而integer是后者(也就是一个类);因此在类进行初始化时int类的变量初始为0.而Integer的变量则初始化为n
Stella981 Stella981
2年前
JVM调优总结一
数据类型   Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,cha
Wesley13 Wesley13
2年前
JAVA基本类型和引用类型
一、基本数据类型java中一共分为8种基本数据类型:byte、short、int、long、float、double、char、boolean,其中byte、short、int、long是整型。float、double是浮点型,char是字符型,boolean是布尔型。二、引用类型j
Wesley13 Wesley13
2年前
Java基础(二)数据类型
  数据类型主要分为基本类型和引用类型两大类。  一、基本类型  1.基本类型又分为数值类型和boolean类型,  (1)数值类型包括浮点数类型、整数类型和字符类型  整型                                          浮点型(初始化时需要加f或d)  字符类型  byte    
Stella981 Stella981
2年前
JVM调优总结(一)基本概念
数据类型Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。    基本类型:保存原始值,即:他代表的值就是数值本身;    引用类型:保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引