Java数据类型以及区别

本文深入解析Java中的八种基本数据类型及其特点,包括byte、short、int等,同时阐述引用类型的特性,如类、接口、数组等。文章还对比了基本数据类型与引用数据类型在存储位置和传递方式上的差异,帮助读者理解并正确选择使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一, 数据类型

1.基础类型

JAVA中一共有八种基本数据类型,分别是:byte、short、int、long、float、double、char、boolean。

1、byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。

2、short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。

3、int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。

4、long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。

5、float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。

6、double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。

7、boolean:只有true和false两个取值。

8、char:16位,存储Unicode码,用单引号赋值。

2.引用类型

1.引用类型 由类型的实际值引用(类似于指针)表示的数据类型。如果为某个变量分配一个引用类型,则该变量将引用(或“指向”)原始值。不创建任何副本。
2.引用数据类型非常多,大致包括:
类、 接口类型、 数组类型、 枚举类型、 注解类型、 字符串型
例如,String类型就是引用类型。

ps:其实除了基本数据类型之外,其他的都可以称为引用类型

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

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在栈中的内存被释放掉
在这里插入图片描述

个人如何选择使用

  • 如果要表示整数就使用int,表示小数就使用double;
  • 如果要描述日期时间数字或者表示文件(或内存)大小用long;
  • 如果要实现内容传递或者编码转换使用byte;
  • 如果要实现逻辑的控制,可以使用booleam;
  • 如果要实现逻辑的控制,可以使用booleam;
  • 如果按照保存范围:byte < int < long < double;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值