专栏首页Android开发实战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、引用数据类型

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

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

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

1、存储位置

基本变量类型

  • 在方法中定义的非全局基本数据类型变量的具体内容是存储在栈中的

引用变量类型

  • 只要是引用数据类型变量,其具体内容都是存放在堆中的,而栈中存放的是其具体内容所在内存的地址

ps:通过变量地址可以找到变量的具体内容,就如同通过房间号可以找到房间一般

public class Main{
   public static void main(String[] args){
       //基本数据类型
       int i=1;
       double d=1.2;

       //引用数据类型
       String str="helloworld";
   }
}

2、传递方式

基本变量类型

  • 在方法中定义的非全局基本数据类型变量,调用方法时作为参数是按数值传递的 //基本数据类型作为方法参数被调用 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; } } 引用变量类型
  • 引用数据类型变量,调用方法时作为参数是按引用传递的
//引用数据类型作为方法参数被调用

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在栈中的内存被释放掉

有不对的地方请指正

本文分享自微信公众号 - 喘口仙氣(gh_db8538619cdd),作者:Anymarvel

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android避免内存溢出(Out of Memory)

    强引用:强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。 当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误...

    Anymarvel
  • Android内存管理(垃圾回收算法相关)

    给对象添加一个引用计数器,每当有一个地方引用它的时候,计数器的值就加1;当引用失效的时候,计数器的值就减1;任何时刻计数器为0的对象是不可能再被引用的。

    Anymarvel
  • Android内存管理(JVM 、DVM(dalvik) 、ART简单介绍)

    本文不对JVM 、DVM(dalvik) 、ART这三者做具体的分析。只是从内存管理的角度来介绍下三者的区别和联系。

    Anymarvel
  • 第十九节:Java基本数据类型,循环结构与分支循环

    byte -> short,char -> int -> long float -> double long -> double int -> float

    达达前端
  • Python数据类型

    内置的包括数字、字符串、布尔、列表、元组、字典、Bytes、集合这些常用的以及一些不太常用的数据类型。而自定义的,一般以类的形式,根据需要组合以上内置类型成为独...

    汤贤
  • Windows数据类型

     WORD:16位无符号整形数据 DWORD:32字节无符号整型数据(DWORD32) DWORD64:64字节无符号整型数据 INT:32位有符号整型数据类型...

    lpxxn
  • 死磕Java之Java数据类型的来龙去脉

    数据类型可以分为基本数据类型(8个)和引用数据类型(3个)。 具体可以参考如下图所示:

    TrueDei
  • JavaScript七大数据类型说明

    使用typeof操作符返回数据类型字符串,数据的类型首字母大写,返回的字符串是小写,浏览器所看到的所以元素都是字符串包含typeof返回的类型也是类型字符串,返...

    十月梦想
  • Java中如何使用引用数据类型中的类呢?

    --------------------------------------- Java中数据类型的分类:   基本数据类型:4类8种。byte、short、...

    黑泽君
  • SQL Server 数据类型

    数据类型是数据的一种属性,表示数据信息的类型,任何一种计算机语言都定义了自己的数据类型。当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或多...

    阳光岛主

扫码关注云+社区

领取腾讯云代金券