值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。
引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。
下面举例说明:
传值---传递基本数据类型参数
public class PassValue{
static
void exchange(int a, int b){//静态方法,交换a,b的值
int temp;
temp
= a;
a = b;
b = temp;
}
public static void
main(String[] args){
int i = 10;
int j =
100;
System.out.println("before call: " + "i=" + i + "\t" + "j = " +
j);//调用前
exchange(i,
j); //值传递,main方法只能调用静态方法
System.out.println("after
call: " + "i=" + i + "\t" + "j = " +
j);//调用后
}
}
运行结果:
before call: i = 10 j =
100
after call: i = 10 j = 100
说明:调用exchange(i,
j)时,实际参数i,j分别把值传递给相应的形式参数a,b,在执行方法exchange()时,形式参数a,b的值的改变不影响实际参数i和j的值,i和j的值在调用前后并没改变。
引用传递---对象作为参数
如果在方法中把对象(或数组)作为参数,方法调用时,参数传递的是对象的引用(地址),即在方法调用时,实际参数把对对象的引用(地址)传递给形式参数。这是实际参数与形式参数指向同一个地址,即同一个对象(数组),方法执行时,对形式参数的改变实际上就是对实际参数的改变,这个结果在调用结束后被保留了下来。
class
Book{
String name;
private folat price;
Book(String
n, float ){ //构造方法
name = n;
price =
p;
}
static void change(Book a_book, String n, float
p){ //静态方法,对象作为参数
a_book.name = n;
a_book.price
= p;
}
public void
output(){ //实例方法,输出对象信息
System.out.println("name: " + name +
"\t" + "price: " + price);
}
}
public class
PassAddr{
public static void main(String [] args){
Book b =
new Book("java2", 32.5f);
System.out.print("before
call:\t"); //调用前
b.output();
b.change(b, "c++", 45.5f); //引用传递,传递对象b的引用,修改对象b的值
System.out.print("after
call:\t"); //调用后
b.output();
}
}
运行结果:
before call: name:java2 price:32.5
after call: name:c++ price:45.5
说明:调用change(b,"c++",45.5f)时,对象b作为实际参数,把引用传递给相应的形式参数a_book,实际上a_book也指向同一个对象,即该对象有两个引用名:b和a_book。在执行方法change()时,对形式参数a_book操作就是对实际参数b的操作。
Java引用数据类型
时间: 2024-10-12 15:24:02
Java引用数据类型的相关文章
Java学习笔记之:java引用数据类型之字符串
package com.hgd.study; /** * 引用数据类型之字符串 * * 栈空间:存放的是比较小的数据,包含基本数据类型和字符串,变量名 * 堆空间:存放的是引用数据类型 * @author HuTiger * */ public class ReferenceTypesString { public static void main(String[] args) { int i =100;//声明一个整型,并初始化 //在java中字符串将作为引用数据类型 String name
java引用数据类型在方法中的值传递
package org.jimmy.autosearch20180821.test; public class TestStringArr { public static void main(String[] args) { String[] strArr = new String[]{ "1", "2" }; System.out.println(strArr[0]); test(strArr); System.out.println(strArr[0]); te
java引用数据类型(类)
1 引用数据类型分类 类的类型分两种 1)Java提供好的类,如Scanner类,Random类等,这些已存在的类中包含了很多的方法与属性,可供开发者使用.(类的变量是属性) 2)开发者自己创建的类,按照类的定义标准,可以在类中包含多个方法与属性,来供开发者使用. 注意: 类的变量就是属性 类中只能定义变量和方法 2自定义数据类型 在Java中,将现实生活中的事物抽象成了代码.可以使用自定义的数据类型(类)来描述(映射)现实生活中的事物. 类,是引用数据类型,自定义类也是一种数据类型. 自定义类
java学习手札(3) java基本数据类型和引用数据类型
java的基本数据类型有八种,每一种都对应一种引用数据类型. java基本数据类型:1)数值型 byte 1个字节 范围-128--127(计算方法 -2^(字节数*8-1)--2^(字节数*8-1)-1) short 2个字节 范围 -2^15--2^15 - 1 int 4个字节 范围 -2^31--2^31-1 long 8个字节 范围 -2^63--2^63-1 定义时通常加一个f 2)布尔类型 boolean 1个字节 true 或 false通常用于判断
Java基础之路(一)下--引用数据类型之数组
上次我们说了java的基础数据类型,今天我们就来说一下引用数据类型中的数组. 什么是数组 数组:存储在一个连续的内存块中的相同数据类型(引用数据类型)的元素集合. 数组中的每一个数据称之为数组元素,数组中的元素以索引来表示其存放的位置,索引(下标)从0开始. 数组的定义 第一种方式:类型[] 数组名; 如 int[] nums; 第二种方式:类型数组名[]; 如 int nums[]; 大多数Java程序员喜欢使用第一种风格,因为它把数据类型int[],和变量名num分开了. 数组的初始化 J
java中的引用数据类型
java数据类型图: ┏数值型━┳━整数型:byte short int long ┏基本数据类型━━┫ ┗━浮点型:float double ┃ ┣字符型:char 数据类型╋ ┗布尔型:boolean ┃ ┏类(class) ┗引用数据类型━━╋接口(interface) ┗数组(array)java的数据类型分基本数据类型(原始数据类型)和引用数据类型:1.基本八大类,图中可以很清楚的看到:这种类型的数据变量在声明之后java就会立刻分配给他内存空间.如:short a; java会在可使
JAVA中分为基本数据类型及引用数据类型
一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值0 int:整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647,默认值0 long:长整型,在内存中占64位,即8个字节-2^63~2^63-1,默认值0L float:浮点型,在内存中占32位,即4个字节,用于存储带小数点的数
Java数据类型(基本数据类型和引用数据类型)
Java数据分为基本数据类型和引用数据类型.其中基本数据类型有4类8种. 基本数据类型:类似于普通的值 引用数据类型:传递的是内存的地址 对于引用类型来说,声明只会分配一个引用,指向null, 当你想使用的时候不能直接引用,必须实例化之后才能使用.否则,会引起空指针exception. 基本数据类型: Java数据类型(基本数据类型和引用数据类型),布布扣,bubuko.com
JAVA中分为基本数据类型和引用数据类型区别
一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值0 int:整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647,默认值0 long:长整型,在内存中占64位,即8个字节-2^63~2^63-1,默认值0L float:浮点型,在内存中占32位,即4个字节,用于存储带小数点的数