Java 知识量:11 - 45 - 220
Java有许多不同的数据类型,主要分为两大类:基本数据类型和引用数据类型。
基本数据类型(Primitive Types):
整数类型:byte,short,int,long
浮点数类型:float,double
字符类型:char
布尔类型:boolean
引用数据类型(Reference Types):
类(Class)
接口(Interface)
数组(Array)
Java基本数据类型和引用数据类型的区别主要体现在以下几个方面:
存储位置:基本数据类型直接存储在栈中,而引用数据类型存储在堆中,其引用(地址)存储在栈中。
数据操作:基本数据类型是不可变的,一旦创建就不能改变其值。而引用数据类型是可变的,可以修改其引用的对象。
生命周期:基本数据类型的生命周期与变量所在的作用域一致,当变量所在的作用域结束时,基本数据类型就会被销毁。而引用数据类型的生命周期取决于其引用的对象何时被垃圾回收。
赋值操作:基本数据类型的赋值操作是直接将值赋给变量,而引用数据类型的赋值操作是将对象的引用(地址)赋给变量。
比较操作:基本数据类型的比较操作是直接比较其值,而引用数据类型的比较操作是比较其引用的对象是否相同(即比较其地址是否相同)。
引用传递(pass by reference)是一种参数传递方式,在方法调用时,传递的是一个对象的引用(地址),而不是对象本身。这意味着在方法中对传递的引用进行的修改会影响到原始对象。
值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,传递的是一个值的副本,因此在函数中对传递的值进行的修改不会影响到原始值。
在Java中,参数传递是通过值传递实现的。当一个对象作为参数传递给一个方法时,实际上传递的是对象的引用(地址),而不是对象本身。因此,在方法中对对象进行的修改会影响到原始对象。这意味着在方法中修改传递的引用本身(例如将其指向另一个对象)不会影响到原始引用。只有在方法中修改传递的对象的状态时,才会影响到原始对象。
举个例子,假设有一个Person类和一个changeName方法,该方法接受一个Person对象作为参数并修改其name属性。在调用changeName方法后,原始Person对象的name属性也会被修改,因为传递的是Person对象的引用。但是,如果在changeName方法中尝试将传递的Person对象引用指向另一个Person对象,那么原始Person对象不会受到影响,因为传递的是引用的副本。
因此,在Java中,虽然可以通过传递对象的引用来修改对象的状态,但不能通过传递引用来修改引用的本身。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6