java关于方法参数传递的相关问题讨论

我们知道,java中定义变量的目的有两个:

1.防止被垃圾回收机制回收,毕竟如果没有明确指向真实物理内存的‘代号‘很大可能会被java垃圾回收机制当作垃圾回收。

2.便于引用,方便处理。

 1 package testp1;
 2
 3 public class Test01 {
 4     public static void replace1(int a){
 5         a = 10;
 6     }
 7     public static int replace2(int a){
 8         a = 10;
 9         return a;
10     }
11     public static void replace3(String s){
12         s = "a";
13     }
14     public static String replace4(String s){
15         s = "a";
16         return s;
17     }
18
19 public static void main(String[] args) {
20     int a = 0;
21     replace1(a);
22     System.out.println("in replace1:a="+a);
23     a = replace2(a);
24     System.out.println("in replace2:a="+a);
25     String s = "make";
26     replace3(s);
27     System.out.println("in replace3:s="+s);
28     s=replace4(s);
29     System.out.println("in replace4:s="+s);
30 }
31 }

局部变量和外部变量

在上述代码的replace1中,形参a为基本数据类型,它指向的是数字10所在的物理内存,调用该方法后并没有改变外部变量a所指向的物理地址。就会出现输出没改变变量值的结果,但是如果调用了int返回类型的方法replace2后我们发现它的值改变了,是因为我们把内部变量指向的物理地址赋值给了外部变量a,在返回值为void的引用数据类型的方法replace3中,方法的结果就是该形式参数所引用的对象a,同样只在该方法内部起作用,出了该方法,变量还是原来的引用对象,在返回类型为String的类型中,我们又让外部变量指向对象a所在的物理内存,其值当然会变化。

原文地址:https://www.cnblogs.com/g177w/p/8372045.html

时间: 2024-10-27 09:24:04

java关于方法参数传递的相关问题讨论的相关文章

Java中方法参数传递的问题

可以理解当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数,这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了.这种传递方式,我们称为参数传递.在这里,定义方法时,参数列表中的变量,我们称为形式参数. 调用方法时,传入给方法的数值,我们称为实际参数 在Java中调用方法时,如果参数是基本类型(byte/short/int/long/float/double/char/boolean)以及String类型时,形式参数的改变不影响实际参数. 以下代码在内存中发生的动作:

<Java> 类 方法 参数传递 返回值类

类 用class关键字可以传建一个类. 类中可以设置两种类型的元素:字段(有时被称为数据成员),方法(有时被称为成员函数) 字段  字段即数据成员 字段可以是任何类型的对象(可以是是引用类型,也可以是基本类型) (3) 每个对象都有用来存储其字段的空间,普通字段是不可以在对象间共享的 两个对象都各自有他们自己的字段,虽然字段是同名的,但是这两个对象对这个字段的操作都是对自己的字段的操作,不能操作另一个对象的. 但是static修饰的字段,是在对象内共享的,他只有一份空间,不管是那个对象,对这个字

Java中的参数传递

Java中方法参数传递是:值传递(Pass By Value) public class ParameterDemo{     public void changeValue1(int a){         a = 8;     }     public void changeValue2(Employee e){         e.salary = 8000;     }     public void changeValue3(Employee e){         e = new E

Java的cmd配置(也即Java的JDK配置及相关常用命令)——找不到或无法加载主类 的解决方法

Java的cmd配置(也即Java的JDK配置及相关常用命令) ——找不到或无法加载主类  的解决方法 这段时间一直纠结于cmd下Java无法编译运行的问题.主要问题描述如下: javac 命令可以正常运行,而java命令有时可以正常运行,有时却不可以,不可以的症状就是显示“找不到或无法加载主类”. 在网上找了各种资料,最终发现是因为代码里含有package语句,所以无法在cmd下运行java命令解释.class文件.而那些可以运行的文件就是因为没有使用package语句. 我这种问题的解决方法

JAVA学习--方法的参数传递

* 方法的参数传递(重点.难点)  * 1.形参:方法声明时,方法小括号内的参数  *   实参:调用方法时,实际传入的参数的值  *     * 2.规则:java中的参数传递机制:值传递机制  *   1)形参是基本数据类型的:将实参的值传递给形参的基本数据类型的变量  *   2)形参是引用数据类型的:将实参的引用类型变量的值(对应的堆空间的对象实体的首地址值)传递给形参的引用类型变量.  * 1 public class TestArgsTransfer { 2 public stati

Java方法参数传递(swap函数)(转载)

Java里方法的参数传递方式只有一种:值传递.值传递,就是将实际参数值的副本(复制品)传入方法内,而参数本身不会受到任何影响. public class PrimitiveTransferTest { public static void swap(int a,int b) { int temp=a; a=b; b=temp; System.out.println("swap方法里,a的值是"+a+";b的值是"+b); } public static void m

深入理解Java中方法的参数传递机制

形参和实参 我们知道,在Java中定义方法时,是可以定义参数的,比如: public static void main(String[] args){ } 这里的args就是一个字符串数组类型的参数. 在程序设计语言中,参数有形式参数和实际参数之分,先来看下它们的定义: 形式参数:是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数,简称"形参". 实际参数:在主调函数中调用一个函数时,函数名后面括号中的参数称为"实际参数",简称"

java面试(2)--大数据相关

第一部分.十道海量数据处理面试题 1.海量日志数据,提取出某日访问百度次数最多的那个IP. 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中.注意到IP是32位的,最多有个2^32个IP.同样可以采用映射的方法, 比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率最大 的几个)及相应的频率.然后再在这1000个最大的IP中,找出那个频率最大的IP,即为所求. 或者如下阐述(雪域之鹰)

从java main方法说开去

刚刚接触java语言时,接触的便为一个java main方法.我们知道这样程序就可以运行了,但是程序是怎么运行起来的我们却不知道. 众所周知,当执行一个java程序时,首先会启动一个JVM虚拟机进程,当程序执行完时,JVM进程则消亡.其他导致JVM进程消亡的还有以下情况: System.exit(int)方法,执行该方法时,虚拟机腿粗好.int参数为状态码,为0时,正常退出:若不为0,则异常退出. 遇到异常或错误时.若在程序过程中遇到异常时,不作处理会一直抛出异常到main函数,若main函数也