精华内容
下载资源
问答
  • java重定向怎么传参

    2015-04-23 09:34:53
    ssh的重定向用注解怎么解决? 在类的上面写路径,那么,在重定向的时候参数怎么
  • JAVA方法传参分析

    2021-03-31 21:35:51
    那么java将方法的实参传递给形参具体是怎么做的呢? 下面先定义一个测试类Tese 里面只有一个fun方法 public class Test { void fun(int i){ int b =i; } public static void main(String[] args) { new ...

    Java只有值传递, 结论 大家都很清楚了.

    么java将方法的实参传递给形参 具体是怎么做的呢? 

     

    下面先定义一个测试类Tese  里面只有一个fun方法
    public class Test {
        void fun(int i){
            int b =i;
        }
        public static void main(String[] args) {
            new Test().fun(4);
        }
    }
     
    我们使用 jclasslib工具查看一下fun()函数对应的 局部变量表(本地标量表)有3个变量
     
    分别是;
    this : this 是自动添加的.里面的值是当前对象的引用
    i :形参
    b:内部的局部变量
     
    查看一下fun()函数对应的字节码 
    如下图
     
    0 iload_1 #以读取整数的形式去读取 局部变量表 下标为1的变量的值并压入到操作数栈
    1 istore_2 #把操作数栈 栈顶的数值  赋值给 局部变量表下标为2的变量
    2 return  # 返回结束函数调用
     
    从上面的字节码可以得知 
    做的操作只是 把i的值复制给b. 已经完成了把常量4 赋值给形参i的 传值操作
    传参操作并没在被调用函数的字节码里面明文显示,
    那我们现在返回去看一下调用函数 main() 做了那些操作 是不是可能传参操作在调用函数里面.
     
    main()函数字节码如下
    0 new #2 <Test>  #创建一个Test 类的对象
    3 dup             #复制操作数栈顶值,并将其压入栈顶,也就是说此时操作数栈上有连续相同的两个对象地址
    4 invokespecial #3 <Test.<init>> #调用实例初始化方法<init>:()V
    7 iconst_4  #把常数 4 压入到操作栈中
    8 invokevirtual #4 <Test.fun> #传参操作在这条指令
    11 return   # 返回结束函数调用
     
     
    invokevirtual  命令
     
        在官方文档中这样描述:
     
        假设objectref的类型为C,实际调用的方法将按照下面流程来查找:
    • 如果C包含了一个方法m的声明,该声明重写了解析出来的方法,则m为实际调用的方法,查找终止。
    • 否则:如果C有父类,则自下而上递归的在C的直接父类中执行第一步的查找。
    • 如果还没有查找到,则抛出AbstractMethodError错误。
    如果解析出来的方法有参数的话,在操作数栈上,所有的参数的值必须按照方法描述中规定的数量,类型和顺序自上而下跟在objectref后面。
    而且如果解析出来的方法不是native的,所有的参数和objectref从操作数栈中弹出。在JVM栈上为当前准备调用的方法创建一个新的栈帧。
    Objectref和所有参数被按照如下顺序作为新栈帧的局部变量,objectref占slot0,arg1占slot1(否则,如果arg1为long或double类型,则占slot1和slot2),以此类推。对于float类型参数,在存入局部变量表之前会先进行值集转换。新的栈帧成为当前栈帧,JVM的PC设置为即将调用方法的第一条指令的操作码,程序执行从第一条指令继续进行。
     
    由此可以得知java传参操作 发生在主调代码块.由命令 invokevirtual  实现
       
    展开全文
  • 大家应该都知道C语言有两种参数传递方式,...在使用java的时候有时是感觉按照值传递的,有时候感觉是按照引用传递的,那么java到底是怎么传递参数的呢? 来写个简单的事例试验一下吧  先定义几个方法来进行测试 ...

    大家应该都知道C语言有两种参数传递方式,一种是形参,一种是实参。

      形参会复制一份使用,随函数出栈销毁,传递的是值

      实参会将引用也就是指针传递过去,被调用函数参数内的变化会影响到调用函数内参数的变化,传递的是引用。

    在使用java的时候有时是感觉按照值传递的,有时候感觉是按照引用传递的,那么java到底是怎么传递参数的呢?

    来写个简单的事例试验一下吧

      先定义几个方法来进行测试

      update(){}//用来对参数进行操作

    首先是java基本数据类型

    /*
    * 4类8种基本数据类型,剩下的就是引用数据类型
    *
    * 基本
    * -布尔
    * -整型
    * -浮点
    * -字符
    * 引用
    */

    14 
    15     
    16     public void update(int value) {
    17         value++;
    18     }
    19     
    20     public void update(byte value) {
    21         value++;
    22     }
    23     
    24     public void update(short value) {
    25         value++;
    26     }
    27 
    28     public void update(long value) {
    29         value++;
    30     }
    31 
    32     public void update(double value) {
    33         value++;
    34     }
    35 
    36     public void update(float value) {
    37         value++;
    38     }
    39 
    40     public void update(char value) {
    41         value='a';
    42     }
    43 
    44     public void update(boolean value){
    45         value=!value;
    46     }

    然后是java的类数据类型

     1 public void update(TypeA value) {
     2         value.a=0;
     3 }
     4 
     5 public class TypeA {
     6     int a;
     7     
     8     public void setA(int a) {
     9         this.a = a;
    10     }
    11     
    12     @Override
    13     public String toString() {
    14         return "TypeA [a=" + a + "]";
    15     }
    16     
    17 }

    先测试一下

    1 public static void main(String[] args) {
    2         int i = 0;
    3         new Pointer().update(1);
    4         System.out.println(i);
    5     }

    其他基本数据类型代码都差不多,只是定义的类型不同,就不粘贴了

    输出结果:0

    根据上面的结果可以胡诌出来一个结论:

    java的基本数据类型是按照值传递(不对之处,请指正)

    接下里看引用数据类型

    1 public static void main(String[] args) {
    2         TypeA a = new TypeA();
    3         a.a = 123;
    4         new Pointer().update(a);
    5         System.out.println(a);
    6     }

    输出结果:TypeA [a=0]

    值得改变影响到了主函数,传递的是引用。

    java引用数据类型的传递是引用,基本数据类型的传递是值。

    如有不对之处,请多指教。

    转载于:https://www.cnblogs.com/bin-k/p/6296807.html

    展开全文
  • PHP调用Java接口传参遇到的问题

    千次阅读 2018-02-07 23:55:49
    今天在调用Java接口中发现一个问题,他们要form-data数据 我们在在php中form-data就是传数组,但是我试了怎么他们都接受不到值,我用抓包软件看Java给的demo是这样的然后用postman模拟怎么也他们也接收不到。...
    今天在调用Java接口中发现一个问题,他们要form-data数据 我们在在php中form-data就是传数组,但是我试了怎么他们都接受不到值,我用抓包软件看Java给的demo是这样的
    然后用postman模拟怎么也他们也接收不到。后来想到以前解决iOS传参问题,他们说传的也是数组(字典)类型,但是他们的也不是php所说的数组(array),他们所指的数组是raw二进制流,后来试了一下raw也不行,有点失望。
    然后试了一下content typeapplication/x-www-form-urlencoded 这个类型
    当时还停留在 application/x-www-form-urlencoded 传数组类型中,因为Java那边一直说是form-data类型,所以我就以为是数组,(做PHP久了都会有这种习惯)。后来试了这种还是不行,然后看了一下curl官方文档,发现这个传值的类型不对,应该是key=value&keys=[]这种类型,Java他们取出来的文件流都是用&拼接的,和iOS那边的data字典有着同工异曲之处,最后数组换成字符串请求成功,大功告成。
    展开全文
  • java利用方法参数传递这个问题困扰了我一天,关于java传参有三种传递方式,《java核心技术卷I》里也提到了。 1.一个方法不能修改一个基本数据类型的参数 ( 即数值型或布尔型 ),String类型也不行 。 2.一个方法...

    java利用方法参数传递这个问题困扰了我一天,关于java传参有三种传递方式,《java核心技术卷I》里也提到了。
    1.一个方法不能修改一个基本数据类型的参数 ( 即数值型或布尔型 ),String类型也不行 。
    2.一个方法可以改变一个对象参数的状态 。
    3.一个方法不能让对象参数引用一个新的对象。
    困扰我的是第三点。
    下面举个例子:
    在这里插入图片描述
    通过这个例子可以看出方法sway没有能够交换两个对象的值,这是因为方法调用传递的是地址。要想改变对象的值就必须在这个地址上操作。如下图。
    在这里插入图片描述

    展开全文
  • java中没有引用传递,...对于基本数据类型,传参传递的就是数值的副本,也就说把实参的数据复制给形参一份,不管形参怎么改变,实参是不受影响的 对于引用数据类型,传参传递的是引用的副本,也就说把引用(对象的地址)复...
  • 关于Java函数传参以及参数在函数内部改变的问题——JAVA值传递与引用最浅显的说明! 看了很多关于阐述JAVA传参到底是值传递还是引用的问题,有些说得很肤浅让人感觉似懂非懂的感觉,但是好像又能...
  • 当前端传过来的参数为 如 name ="%" mysql模糊查询会查所有,怎么解决这个问题呢就是通过转义%让mysql不当成特殊字符%,转义为"%"; /** * decode参数 * @param name * @return * @throws ...
  • ``` private void startLocation() { mLocationClient.start(); ...最后的city是我定义的 全局变量,但是这样传参 全局变量是得不到值的 ,这是在监听器的匿名内部类里传参给全局变量 该怎么办
  • xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <servlet> <servlet-name>DataServlet</servlet-name> <servlet-class&...
  • package drchen.java.day06.demo04; public class Student { // 成员变量 private String name; private int age; // Getter Setter public void setName(String name) { this.name = name; } public...
  • private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 01234) { Bundle bundle = msg.getData();...在handler里面的String 参数 怎么传出来呀
  • java单例模式传参问题

    2016-03-07 02:53:15
    用sshexec连接linux ConnBean connInfo = new ConnBean(remoteAddress, userName, password); SSHExec sshExec = SSHExec.getInstance(connInfo); 假设每次传过来的conninfo参数是变的,但是debug...这个该怎么处理?
  • public class Area { int width; int length; public static void main(String[] args) { Area ar=new Area(2,3); int areas=ar.area(); System.out.println(areas); } public int area(){ ...}
  • [code="java"] 打开界面前有个参数Aid extjs 如何通过这个参数获得tree 拿到这个树后(带checkbox的) 更改后 如何把被选中的tree id 传给action 是不是需要 loader.on什么的 怎么写 Ext.onReady(function() { ...
  • extjs代码: [code="java"] var add_guest = new Ext.Button({ text:'添加客户', iconCls : 'icon-add', ... 怎么样才能把 guest_id 和guest_name 传给action 呢?我只想用Ext.form.FieldSet.
  • 在外部类里面用Message给Handler发送了一条数据之后传给String MalformedURLException,想请教一下这里的String MalformedURLException的值如果想在Mainactivity里面调用要怎么做才能做到?就像想让其它线程也可以...
  • Java中方法的传参问题

    2021-01-05 08:40:06
    这些实参的值会怎么变呢? 首先介绍两种值传递的方式 值传递(call by value),指的是调用方法时,传入的是实参的拷贝而不是实参本身 这样做的结果是,方法改变的是实参拷贝的值,原本实参的值是不会变的 引用...
  • 在外部类A里面用handler接收了其他函数传来的消息然后放在String s 里面,现在想在主类mainactivity里面调用到这个s的值要怎么做?我已经试过把String s定义成静态方法了是不行的因为我定义的时候 public static ...
  • sql触发器 调用java Servlet地址 传参 然后我用传过来的request参数 后台重新去查 数据库表值 查询结果返回是NULL 不过我直接在服务器查一样的SQL 却能查得到数据 有大佬知道这样该怎么处理么 触发器 ![图片...
  • Java通过form-data传参调用第三方接口

    千次阅读 2020-06-03 17:18:44
    今天被PHP同事问到, 你们java中在postman通过form-data传参怎么获取不到参数? 研究后发现是在调用时,传参的方式有问题,导致无法获取到参数。那首先得先了解一下我们平时使用postman传参时的几种方式。 下面...
  • android c++这边要在点击按钮的时候传参java层,![图片说明](https://img-ask.csdn.net/upload/201710/13/1507867402_192077.png) 这样写了之后还需要做什么?不用在点击按钮的时候调用它吗?网上百度了一堆都是没...
  • strut2 中 可以在action中 将页面参数封装成对象 如果我的对象包括属性对象 的集合(List) 要怎么配置才能自动封装呢
  • 现在有个需求就是在DOS批处理里面定义几个常量,然后将这些常量传给摸个java文件,然后java文件接收后执行,请教在批处理里面怎么将参数传给java类了,多谢.......

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 155
精华内容 62
关键字:

java怎么传参

java 订阅