-
2019-07-05 14:46:06
先来看一道题:
5. 下列语句正确的是
A. 形式参数可被字段修饰符修饰
B. 形式参数不可以是对象
C. 形式参数为方法被调用时真正被传递的参数
D. 形式参数可被视为local variable正确答案是:D
A: 对于形式参数只能用final修饰符,其它任何修饰符都会引起编译器错误。但是用这个修饰符也有一定的限制,就是在方法中不能对参数做任何修改。 不过一般情况下,一个方法的形参不用final修饰。只有在特殊情况下,那就是:方法内部类。 一个方法内的内部类如果使用了这个方法的参数或者局部变量的话,这个参数或局部变量应该是final。
B:方法的参数列表指定要传递给方法什么样的信息,采用的都是对象的形式。因此,在参数列表中必须指定每个所传递对象的类型及名字。想JAVA中任何传递对象的场合一样,这里传递的实际上也是引用,并且引用的类型必须正确
C:形参的值在调用时根据调用者更改,实参则用自身的值更改形参的值(指针、引用皆在此列),也就是说真正被传递的是实参
D: local variable是一个局部变量,形参和局部变量一样都不能离开方法。都只有在方法内才会发生作用,也只有在方法中使用,不会在方法外可见
形式参数:方法中声明的参数
实际参数:方法中定义的参数
如果形式参数是基本类型,形式参数的改变,不影响实际参数
如果形式参数是引用类型,形式参数的改变,直接影响实际参数
经典例子:
public class ArgsDemo { public static void main(String[] args){ int a = 10; //基本类型 int b = 20; System.out.println("a:"+a+",b:"+b); //10,20 change(a,b); System.out.println("a:"+a+",b:"+b); //10,20 int[] arr = {1,2,3,4,5}; //引用类型 change(arr); System.out.println(arr[1]); //4 } public static void change(int a,int b) { System.out.println("a:"+a+",b:"+b); //10,20 a = b; b = a + b; System.out.println("a:"+a+",b:"+b);//20,40 } public static void change(int[] arr) { for(int x=0; x<arr.length; x++) { //如果数组的元素值是偶数,就变为以前的2倍。 if(arr[x]%2==0) { arr[x]*=2; } } } }
java中基本类型传递的事值,引用类型传递的是地址
更多相关内容 -
实际参数列表和形式参数列表长度不同
2021-02-28 14:26:06^ 需要: 没有参数 找到: String 原因: 实际参数列表和形式参数列表长度不同 解决方案:60分 这个“public void Test(String dt) throws IOException”只是Test类中的一个方法,不是构造函数。 正确的调用...class ButtonDemo2 extends JFrame//输出结果窗口
{
public static final int WIDTH=1000;
public static final int HEIGHT=680;
public String rlt=””;
JFrame overGUI;
ButtonDemo2(String jg2)
{
overGUI=new JFrame(“测试系统”);
overGUI.setSize(WIDTH,HEIGHT);
overGUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screenSize=kit.getScreenSize();
int width=screenSize.width;
int height=screenSize.height;
int x=(width-WIDTH)/2;
int y=(height-HEIGHT)/2;
overGUI.setLocation(x,y);
Panel p=new Panel();
Container conPane=getContentPane();
overGUI.add(conPane);
conPane.setBackground(Color.WHITE);
conPane.setLayout(new FlowLayout());//采用FlowLayout布局
this.setLayout(null);
JLabel jl=new JLabel(“测试结果如下:”);
JTextArea j2=new JTextArea (12,30);
JButton retheck=new JButton(“再测”);
JButton repint=new JButton(“打印结果”);
JButton redBut=new JButton(“关闭”);
conPane.add(jl);
conPane.add(j2);
conPane.add(retheck);
conPane.add(repint);
conPane.add(redBut);//在窗口添加Red按钮
j2.setVisible(true);
j2.setBounds(158,160,730,320);
j2.setFont(new Font(“宋体”, Font.BOLD, 16));
GregorianCalendar gc1=new GregorianCalendar();
String s8=”**************************************************\n”;
String ss=”祝福您!\n”;
String ssn=gc1.get(Calendar.YEAR)+”年”+(gc1.get(Calendar.MONTH)+1)+”月”+gc1.get(Calendar.DATE)+”日”+
gc1.get(Calendar.HOUR_OF_DAY)+”时”+gc1.get(Calendar.MINUTE)+”分”;
j2.setText(ButtonDemo.jg+jg2+s8+ss+ssn); //传递参数jg2,与添加字符串连接,并在文本域中输出
jl.setBounds(360,20,300,36);//这是控制标签位置;
jl.setFont(new Font(“宋体”, Font.BOLD, 28));//控制文本字体,那个20就是大小选择,可以改变的
retheck.setBounds(380,520,80,30);
repint.setBounds(500,520,100,30);
redBut.setBounds(640,520,80,30);
overGUI.setVisible(true);
overGUI.setResizable(false);
rlt=j2.getText().toString();
Test input=new Test(rlt); retheck.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)//实现接口处理事件的方法
{
Boolean bp0=e.getActionCommand().equals(“再测”);
if(bp0)//是“下一步”按钮事件
{
overGUI.dispose();
ButtonDemo beginGUI1=new ButtonDemo();
}
else{}
}
});
redBut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)//实现接口处理事件的方法
{
Boolean bp=e.getActionCommand().equals(“关闭”);
if(bp)//是“下一步”按钮事件
{overGUI.dispose();
}
else{}
}
});
}
}
class Test {
public void Test(String dt) throws IOException {
File file = new File(“d:\1.txt”);
FileOutputStream fos=new FileOutputStream(file);
OutputStreamWriter dw=new OutputStreamWriter(fos);
dw.write(dt);
dw.flush();
dw.close();
}
}
— javac(编译) —
java:1108: 错误: 无法将类 Test中的构造器 Test应用到给定类型;
Test input=new Test(rlt);
^
需要: 没有参数
找到: String
原因: 实际参数列表和形式参数列表长度不同
解决方案:60分
这个“public void Test(String dt) throws IOException”只是Test类中的一个方法,不是构造函数。
正确的调用语法是:
Test input=new Test();
input.Test(rlt);
或直接new Test().Test(rlt);
-
C语言当中的实际参数及形式参数
2019-04-02 14:23:10形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(也就是分配内存单元),所以叫形式参数.形式参数当函数调用完成之后就自动销毁了.因此形式函数只有在函数中有效. 在面的Swap函数中...首先我们来定义一个函数,使其可以交换两个整形变量的内容.
#include <stdio.h> #include <stdlib.h> void Swap(int x, int y){ int tmp; tmp = x; x = y; y = tmp; } int main(){ int num1 = 10; int num2 = 20; Swap(num1,num2); printf("num1 = %d,num2 = %d\n",num1,num2); }
程序运行结果如下
我们不是定义了一个函数,要将num1与num2的值进行交换吗?为什么num1与num2的值没有发生变化呢?这就涉及到了C语言中函数的参数问题.
函数的参数
实际参数(实参):实参是真实传给函数的参数,实参可以是常量,变量,表达式,函数等.但无论实参是那种类型的量,在进行函数调用时,他们都必须要有确定的值,以便于将这些值传送给形参.
形式参数
形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(也就是分配内存单元),所以叫形式参数.形式参数当函数调用完成之后就自动销毁了.因此形式函数只有在函数中有效.
在面的Swap函数中的参数x,y都是形式参数,在main函数中传给Swap的num1,num2是实际参数.
我们可以来看一下上述Swap(a,b)的等价代码int x = a; int y = b; int tmp = x; x = y; y = tmp;
我们可以理解为函数的形参是实参的一份拷贝.
代码修改如下#include <stdio.h> #include <stdlib.h> void Swap(int* x,int* y){ int tmp = *x; *x = *y; *y = tmp; } int main(){ int num1 = 10; int num2 = 20; Swap(&num1,&num2); printf("num1 = %d,num2 = %d",num1,num2); system("pause"); return 0; }
传值调用:
函数的形参与实参分别占有不同内存块,对形参的修改不会影响实参.传址调用:
传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式.这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量. -
找不到接受实际参数的位置形式参数
2021-12-06 14:44:091、检查路径是否包含空格特殊转义字符等,加上“”或者\转义 2、windows下powershell和cmd使用命令行有所不同 我使用powershell的copy命令提示 改用linux语法的cp就行了1、检查路径是否包含空格特殊转义字符等,加上“”或者\转义
2、windows下powershell和cmd使用命令行有所不同
我使用powershell的copy命令提示
改用linux语法的cp就行了
-
java 实际参数列表和形式参数列表长度不同
2021-05-11 21:54:55报错 PageVO类 终于找到错误了 ... PageVO类的构造方法已经指定了,有参的构造方法,所以PageVO类没有无参的构造方法,在PageVO<...这行代码位置,我new了一个无参的构造方法,但是实际PageVO类默认的无参的... -
python之函数传递,形式参数和实际参数
2020-07-25 21:41:46指的是将实际参数的值复制给形式参数一份,由被调用函数使用参与被调函数的运算,在这个过程中,实际参数的数值不会发生变化,而形式参数从产生、到最后的消失除将实际参数的值复制给形式参数这一个联系外,二者没有... -
Java错误原因: 实际参数列表和形式参数列表长度不同
2020-12-16 16:05:12<p><img alt="" height="386" src="https://img-ask.csdnimg.cn/upload/1608105728544.png" width="616" /></p> <p><img alt="" height="581" src=... 想请教一下报错的原因和解决的方法</p> -
Lombok报: @Builder 实际参数列表和形式参数列表长度不同
2020-12-28 08:24:12错误信息 E:\workspace\tvbox\pxwxm-model\pxwxm-tvbox-model\src\main\java\com\puxinwangxiao\mobile\model\tvbox\SysUserEntity.java:7 java: 无法将类 ... 需要: 没有参数 找到: java.lang.Long,java.lang -
函数的参数(实际参数和形式参数)
2019-09-12 13:00:27形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效。 void... -
java中形式参数和实际参数的理解
2019-08-24 21:27:371.形式参数:就是调用的方法中需要输入的参数。 eg. public static void add(int x,int y){ int c; c=x+y; System.out.println©; } 这个为自己构建一个方法,其中参数x和y就是形式参数,切记这里的变量c,它是变量,... -
Java学习笔记15. 形式参数与实际参数
2018-02-22 13:18:02参数可以分为形式参数和实际参数。在实际调用方法的时候使用的参数就是实际参数,而在被调用时才临时分配内存的参数是形式参数。 可以这么理解,方法在被调用前只是一个蓝图。只有在被调用的时候才把这个蓝图变成一... -
解决:@Builder报错实际参数列表和形式参数列表不同
2020-12-07 10:59:57问题一: 实体类加入@Builder注解后无参构造器不适用 解决:将定义的无参构造器上方加上 @Tolerate ...加入@Builder注解,运行时提示实际参数列表和形式参数列表不同 解决:加入Lombok的 @AllArgsConstructor 注解 ... -
java错误 实际参数列表和形式参数列表长度不同
2019-09-11 00:02:06public BZL() { //无参数的构造方法 } public BZL(String name, int age) { //有参数的构造方法 this.name = name; this.age = age; } public String getName() { //Getter/Setter方法 return ... -
形式参数和实际参数的区别
2018-07-31 18:04:51形式参数:就是在定义函数或过程的时候命名的参数。通俗讲就是一个记号。2 实际参数:就是在执行时,调用函数或过程时,传递给函数或过程的参数。通俗讲就是实际值。3 参数嘛,就是一个可变量,它随着使用者的不同而... -
编译报错:实际参数列表和形式参数列表长度不同 解决方法
2020-06-04 17:38:09项目中Service和dao层是分开俩个模块放的,在Service层中的方法本来俩个参数,增加到4个参数以后,在编译打包时候报错:实际参数列表和形式参数列表长度不同。 应该把Service层的项目maven install一下就可以,但是... -
MAVEN中编译时出现 实际参数列表和形式参数列表长度不同
2020-07-22 21:06:20因为是用maven分开几个jar来存放service,controller还有dao之类的, 在添加了新的参数到service后, 需要重新maven install。 -
C语言形式参数传递的两种方式
2018-10-22 20:06:15C语言中实际参数(实参)与形式参数(形参)之间的传递方式有传值和传地址两种函数调用方式。 1.直接传值。 直接传值,在fun函数里面改变a,b的值,不会改变主函数里面a,b的值。 #include<stdio.h>... -
Python基础:函数:形式参数,实际参数,默认参数,动态参数
2019-01-25 22:05:25'''形式参数与实际参数''' # 例子一 def add(a, b): # a和b被称为形式参数 print(a+b) add(1,2) # 1和2为实际参数 add(b=1, a=3) # 为a和b指定参数 # 例子二 def info(name, age, address, sex... -
java中形式参数改变,实际参数会发生变化吗
2018-11-28 14:14:45java中,基本数据类型传递的是值,引用数据类型传递的是地址 经典例题一个 class Demo ... 基本类型:形式参数的改变对实际参数没有影响。 引用类型:形式参数的改变直接影响实际参数。 -
Set-Location : 找不到接受实际参数“Files\Java\jdk-14.0.2”的位置形式参数 解决办法
2020-12-30 11:56:25管理员命令cmd中,因为路径包含空格,所有识别不了,加上双引号就可以了 -
Windows10下fc命令显示”Format-Custom : 找不到接受实际参数“b.txt”的位置形式参数。
2020-11-16 20:35:12在洛谷问了问,就是因为WIn10下的PowerShell窗口和cmd不一样,启动cmd就行了。 qaq -
什么是形式参数?什么是实际参数
2017-04-01 11:00:431 形式参数:就是在定义函数或过程的时候命名的参数。通俗讲就是一个记号。2 实际参数:就是在执行时,调用函数或过程时,传递给函数或过程的参数。通俗讲就是实际值。3 参数嘛,就是一个可变量,它随着使用者的... -
cd Program Files (x86) 或报错 Set-Location : 找不到接受实际参数“Files”的位置形式参数。
2021-05-04 11:28:12win10系统 **问题1:**无法cd Program Files (x86) **问题2:**cd Program Files报错 :Set-Location : 找不到接受实际参数“Files”的位置形式参数。 解决: 在Program Files (x86)两边加上英文双引号"",如图: -
JAVA 中方法的形式参数类型
2018-09-12 15:57:48形式参数: 基本类型 引用类型: 类名(需要该类的对象) 抽象名(需要该抽象类的子类对象) 接口(需要该接口的实现对像) /* * 形式参数: * 基本类型 * 引用类型: * 类名... -
报错Set-Location : 找不到接受实际参数“Files\Anaconda1\install\Scripts”的位置形式参数。
2020-06-06 07:49:46在使用powershell安装某些包时会出现Set-Location : 找不到接受实际参数“Files\Anaconda1\install\Scripts”的位置形式参数。这样的报错: 解决办法: 在Program Files 两边加上英文双引号"",如图: ok,解决 ..... -
什么是形式参数,什么是实际参数,它们的区别和各自的定义是什么
2016-11-15 15:31:05int max(int a, int b) ...此处的a,b就是形式参数,形参的作用域只在函数max内有效,max外不识别,在函数运行的时候并不给形式参数分配内存; 当我们在其他函数中(如main函数)调用max函数时,如 result