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

本文摘自文章Java数据类型:基本数据类型和引用数据类型

Java 语言支持的数据类型分为两种:基本数据类型(Primitive Type)和引用数据类型(Reference Type)。

Java数据类型结构图

1. 基本数据类型

基本数据类型包括 **boolean(布尔型)、float(单精度浮点型)、char(字符型)、byte(字节型)、short(短整型)、int(整型)、long(长整型)和 double (双精度浮点型)**共 8 种。

2. 引用数据类型

引用数据类型建立在基本数据类型的基础上,包括数组、类和接口。引用数据类型是由用户自定义,用来限制其他数据的类型。引用类型还有一种特殊的 null 类型。所谓引用数据类型就是对一个对象的引用,对象包括实例和数组两种。实际上,引用类型变量就是一个指针,只是 Java 语言里不再使用指针这个说法。

3. 区别

两者有一个很重要的区别就是当作为参数被传入方法时,在该方法中对基本数据类型的改变不会影响变量原来的值,而对引用类型的改变会影响变量原来的值。这一点有点像C++,如果直接传一个变量进入函数的时候,改变的其实是这个变量的副本,而如果传入变量的地址(指针)进去的时候,就会对变量本身做出改变了。多说无益,直接看下面的例子。

package ecnu.cn;

public class MyTest {

    public static class ClassA {
        private int x;

        public int getX() {
            return x;
        }

        public void setX(int x) {
            this.x = x;
        }
    }

    public static void func(String a, int b, double c, boolean d, String[] e, ClassA f) {
        a = "9-09";
        b = 890;
        c = 678698.3432;
        d = true;
        for (int i = 0; i < e.length; i++) {
            e[i] = "feoawf";
        }
        f.setX(8970);
    }

    public static void main(String[] args) {
        String a = "1123123";
        int b = 123;
        double c = 10213.031;
        boolean d = false;
        String[] e = {"1", "2", "3", "4"};
        ClassA f = new ClassA();
        f.setX(23432);
        System.out.println("传参前各个变量的值:");
        System.out.println("String: " + a + "  int: " + b + "  double: " + c + "  boolean: " + d + "  String[]: " + e[0] + "  class: " + f.getX());
        func(a, b, c, d, e, f);
        System.out.println("\n\n传参后各个变量的值:");
        System.out.println("String: " + a + "  int: " + b + "  double: " + c + "  boolean: " + d + "  String[]: " + e[0] + "  class: " + f.getX());
    }
}

其输出为:

传参前各个变量的值:
String: 1123123  int: 123  double: 10213.031  boolean: false  String[]: 1  class: 23432


传参后各个变量的值:
String: 1123123  int: 123  double: 10213.031  boolean: false  String[]: feoawf  class: 8970

可以发现基本数据类型都没有发生变化,而引用数据类型都发生了变化。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值