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

Posted 棉花糖灬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

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

以上是关于java笔记java中的基本数据类型和引用数据类型,及其区别的主要内容,如果未能解决你的问题,请参考以下文章

java中的引用数据类型是啥意思?

java中的引用数据数据类型是怎样的?

Java学习笔记之:java引用数据类型之字符串

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

Java学习笔记三——数据类型

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