首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java基础数据类型和引用类型的区别

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

作者头像
Anymarvel
发布2020-07-25 16:41:16
1.8K0
发布2020-07-25 16:41:16
举报
文章被收录于专栏:Android开发实战Android开发实战

一、数据类型

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

有不对的地方请指正

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 喘口仙氣 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、数据类型
    • 1、基本数据类型
      • 2、引用数据类型
      • 二、基本数据类型和引用数据类型的区别
        • 1、存储位置
        • 2、传递方式
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档