精华内容
下载资源
问答
  • Java传递参数

    2013-07-29 20:04:19
    切记,java是值传递 如果在一个函数A中,用了B函数,想用B函数改变A函数中的属性,则可以package com.lee.explore; public class TestVars { public void a(){ int a = 0; this.b(a); //值传递无法改变 ...

    切记,java是值传递

    如果在一个函数A中,用了B函数,想用B函数改变A函数中的属性,则可以

    package com.lee.explore;
    
    public class TestVars {
    
    	public void a(){
    		int a = 0;
    		this.b(a);
    		//值传递无法改变
    		System.out.println(a);
    		
    		//对象传递可以
    		TestVarA aa = new TestVarA();
    		this.c(aa);
    		System.out.println("对象传递: " + aa.getA());
    	}
    	public void b(int a){
    		a = 2;
    	}
    	public void c(TestVarA aa){
    		aa.setA(32);
    	}
    	public static void main(String[] args) {
    		TestVars t = new TestVars();
    		t.a();
    	}
    
    }
    class TestVarA{
    	int a = 0;
    
    	public int getA() {
    		return a;
    	}
    
    	public void setA(int a) {
    		this.a = a;
    	}
    	
    }

    用对象。



    展开全文
  • java 传递参数的两种方式

    万次阅读 多人点赞 2015-10-19 15:39:28
    Java中没有指针,所以也没有引用传递了,仅仅有值传递不过可以通过对象的方式来实现引用传递 类似java没有多继承 但可以用多次implements 接口实现多继承的功能  值传递:方法调用时,实际参数把它的值传递给对应...

     

    Java中没有指针,所以也没有引用传递了,仅仅有值传递不过可以通过对象的方式来实现引用传递 类似java没有多继承 但可以用多次implements 接口实现多继承的功能

     

      值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。

      引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。

     

           a.传递值的数据类型:八种基本数据类型和String(这样理解可以,但是事实上String也是传递的地址,只是string对象和其他对象是不同的,string对象是不能被改变的,内容改变就会产生新对象。那么StringBuffer就可以了,但只是改变其内容。不能改变外部变量所指向的内存地址)。
        b.传递地址值的数据类型:除String以外的所有复合数据类型,包括数组、类和接口 
    值传递的例子:
    package com.other.test;
    
    public class Test {
    	public static void change(int i, int j) { 
    		int temp = i; 
    		i = j; 
    		j = temp;
    	} 
    
    	public static void main(String[] args) { 
    		int a = 3; 
    		int b = 4; 
    		change(a, b); 
    		System.out.println("a=" + a); 
    		System.out.println("b=" + b);
    	}
    }
    
    

    输出的结果是 a=3 b=4,传递的值并不会改变原值
     
    引用传递的例子:(数组)
    package com.other.test;
    
    public class Test {
    	public static void change(int[] counts) { 
    		counts[0] = 6; 
    		System.out.println(counts[0]);
    	} 
    
    	public static void main(String[] args) { 
    		int[] count = { 1, 2, 3, 4, 5 }; 
    		change(count);
    		System.out.println(count[0]);
    	} 
    }

    输出结果是6 6 也就是引用的值改变了原来的值
     
    引用传递的例子:(对象)
     
    定义一个A对象:
     
    package com.other.test;
    
    public class A {
    	int i = 0;
    }


    对上边对象操作的类:

     

     

    package com.other.test;
    
    public class Test {
    	public static void add(A a) { 
    		//a = new A();   ①
    		a.i++;
    	} 
    
    	public static void main(String args[]) { 
    		A a = new A(); 
    		add(a); 
    		System.out.println(a.i );
    	} 
    }
    


    当把①注解掉时,输出的结果是1,当①没有注解是是0,原因是 a =new A();构造了新的A对象就不是传递的那个对象了。

     

    看看String的情况:

     

    package com.other.test;
    
    public class Test {
    	String str = new String("old"); 
    	char[] ch = { 'a', 'b', 'c' }; 
    	public static void main(String args[]) { 
    		Test ex = new Test(); 
    		ex.change(ex.str, ex.ch); 
    		System.out.print(ex.str + " and "); 
    		System.out.println(ex.ch);
    	} 
    
    	public void change(String str, char ch[]) { 
    		str = "new"; 
    		ch[0] = 'd';
    	}
    }


    输出的结果的是 old and dbc也就是传递String并不会改变原值,而是创建了一个新值。 ch[]就是一个简单的数组的传递。

     

    ( 对象包括对象引用即地址和对象的内容)

    String 比较特别,看过String 代码的都知道, String 是 final的。所以值是不变的。 函数中String对象引用的副本指向了另外一个新String对象,而数组对象引用的副本没有改变,而是改变对象中数据的内容. 
      对于对象类型,也就是Object的子类,如果你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是如果你把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。 
      Java参数,不管是原始类型还是引用类型,传递的都是副本(有另外一种说法是传值,但是说传副本更好理解吧,传值通常是相对传址而言)。 
      如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。如果在函数中改变了副本的值不会改变原始的值.
      如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是改变了地址中的值,那么在函数内的改变会影响到传入的参数。如果在函数中改变了副本的地址,如new一个,那么副本就指向了一个新的地址,此时传入的参数还是指向原来的地址,所以不会改变参数的值。

    关注我,获取400个的赚钱金点子,轻松开启副业生涯

    美团招聘,有意向的私信我

    岗位名称:美团到家事业群-外卖技术部-JAVA高级工程师
    职级要求:P2-3~P3-2

    岗位职责:
    - 负责上单业务系统的开发工作,深入理解业务痛点,通过技术手段满足并促进业务快速发展需要;
    - 参与系统需求分析与设计,快速响应业务需求,负责完成核心代码编写,接口规范制定;
    - 参与解决项目中的重难点问题,针对复杂业务模型能够给出合理的解决方案;

    岗位基本要求:
    - 参与过大型复杂分布式互联网系统的设计,要求有复杂业务的开发经验和较强的逻辑/概率思维能力,善于分析、归纳、描述、沟通和解决问题;
    - 本科及以上学历,扎实的计算机基础,4年及以上工作经验,长期使用Java及开源框架进行项目开发,并有一定的项目管理经验;
    - 深入使用Java,熟悉掌握常用的Java类库及框架,如多线程、并发处理、I/O与网络通讯等,对Java虚拟机有较深了解;
    - 擅长使用开源框架,在某个领域内对开源框架有一定的审美,做过选型研究,解读过部分或者全部源码,掌握实现原理;
    - 精通 MySQL 应用开发,熟悉数据库原理和常用性能优化技术,以及 NoSQL,Queue 的原理、使用场景以及限制;
    - 研究过 http 协议、搜索引擎、缓存、jvm 调优、序列化、nio、RPC 调用框架等,并且有相关实践经验;
    - 有强烈的责任心和团队合作精神,良好的抗压能力,心态积极,能主动融入团队;

    具备以下者优先:
    - 参与过相关系统建设;
    - 有高并发系统经验;
    - 参与过开源工作;
    - 有代码洁癖、有极客精神;

    展开全文
  • Java 传递参数时,传递一个变量快还是传递一个实体类? 分享|2011-10-23 00:19beleebilly11|浏览 645 次 List<xx> list= ss.get(1);//直接传一个数实例化一个实体类Test t= new Test();t.setId(1);List <...

    Java 传递参数时,传递一个变量快还是传递一个实体类?

    2011-10-23 00:19beleebilly11 | 浏览 645 次
    List<xx> list= ss.get(1);//直接传一个数

    实例化一个实体类
    Test t= new Test();
    t.setId(1);
    List <xx>list =ss.get(t);

    这两种方式那种快,条件是get()方法需要传递的参数比较少。
    哪种快求解?为什么?
    2011-10-23 00:30 提问者采纳
     
    传递实体类参数是传址调用
    传基础类型参数是传值调用
    传址调用要快于传值调用
    传值调用会先申请一块空间将参数的值存起来,以便调用
    所以方法调用不能对实参做出任何修改
    传址调用得到参数时直接使用指向的内存地址,少了分配空间的这一步
    方法可以对地址所指向的数据进行修改
    所以传址调用速度快
    可以百度一下 传值调用快还是传址调用快

    转载于:https://www.cnblogs.com/caer/p/5683525.html

    展开全文
  • java传递参数的两种方式

    千次阅读 2018-03-21 21:09:54
    Java中没有指针,所以也没有引用传递了,仅仅有值传递不过可以通过对象的方式来实现引用传递 类似java没有多继承 但可以用多次implements 接口实现多继承的功能  值传递:方法调用时,实际参数把它的值传递给对应...
    Java中没有指针,所以也没有引用传递了,仅仅有值传递不过可以通过对象的方式来实现引用传递 类似java没有多继承 但可以用多次implements 接口实现多继承的功能

      值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。

      引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。

           a.传递值的数据类型:八种基本数据类型和String(这样理解可以,但是事实上String也是传递的地址,只是string对象和其他对象是不同的,string对象是不能被改变的,内容改变就会产生新对象。那么StringBuffer就可以了,但只是改变其内容。不能改变外部变量所指向的内存地址)。
        b.传递地址值的数据类型:除String以外的所有复合数据类型,包括数组、类和接口 
    值传递的例子:
    1. package com.other.test;  
    2.   
    3. public class Test {  
    4.     public static void change(int i, int j) {   
    5.         int temp = i;   
    6.         i = j;   
    7.         j = temp;  
    8.     }   
    9.   
    10.     public static void main(String[] args) {   
    11.         int a = 3;   
    12.         int b = 4;   
    13.         change(a, b);   
    14.         System.out.println(”a=” + a);   
    15.         System.out.println(”b=” + b);  
    16.     }  
    17. }  
    package com.other.test;
    
    public class Test {
        public static void change(int i, int j) { 
            int temp = i; 
            i = j; 
            j = temp;
        } 
    
        public static void main(String[] args) { 
            int a = 3; 
            int b = 4; 
            change(a, b); 
            System.out.println("a=" + a); 
            System.out.println("b=" + b);
        }
    }
    
    

    输出的结果是 a=3 b=4,传递的值并不会改变原值

    引用传递的例子:(数组)
    1. package com.other.test;  
    2.   
    3. public class Test {  
    4.     public static void change(int[] counts) {   
    5.         counts[0] = 6;   
    6.         System.out.println(counts[0]);  
    7.     }   
    8.   
    9.     public static void main(String[] args) {   
    10.         int[] count = { 12345 };   
    11.         change(count);  
    12.         System.out.println(count[0]);  
    13.     }   
    14. }  
    package com.other.test;
    
    public class Test {
        public static void change(int[] counts) { 
            counts[0] = 6; 
            System.out.println(counts[0]);
        } 
    
        public static void main(String[] args) { 
            int[] count = { 1, 2, 3, 4, 5 }; 
            change(count);
            System.out.println(count[0]);
        } 
    }

    输出结果是6 6 也就是引用的值改变了原来的值

    引用传递的例子:(对象)

    定义一个A对象:

    1. package com.other.test;  
    2.   
    3. public class A {  
    4.     int i = 0;  
    5. }  
    package com.other.test;
    
    public class A {
        int i = 0;
    }

    对上边对象操作的类:

    1. package com.other.test;  
    2.   
    3. public class Test {  
    4.     public static void add(A a) {   
    5.         //a = new A();   ①  
    6.         a.i++;  
    7.     }   
    8.   
    9.     public static void main(String args[]) {   
    10.         A a = new A();   
    11.         add(a);   
    12.         System.out.println(a.i );  
    13.     }   
    14. }  
    package com.other.test;
    
    public class Test {
        public static void add(A a) { 
            //a = new A();   ①
            a.i++;
        } 
    
        public static void main(String args[]) { 
            A a = new A(); 
            add(a); 
            System.out.println(a.i );
        } 
    }
    

    当把①注解掉时,输出的结果是1,当①没有注解是是0,原因是 a =new A();构造了新的A对象就不是传递的那个对象了。

    看看String的情况:

    1. package com.other.test;  
    2.   
    3. public class Test {  
    4.     String str = new String(“old”);   
    5.     char[] ch = { ‘a’‘b’‘c’ };   
    6.     public static void main(String args[]) {   
    7.         Test ex = new Test();   
    8.         ex.change(ex.str, ex.ch);   
    9.         System.out.print(ex.str + ” and ”);   
    10.         System.out.println(ex.ch);  
    11.     }   
    12.   
    13.     public void change(String str, char ch[]) {   
    14.         str = ”new”;   
    15.         ch[0] = ‘d’;  
    16.     }  
    17. }  
    package com.other.test;
    
    public class Test {
        String str = new String("old"); 
        char[] ch = { 'a', 'b', 'c' }; 
        public static void main(String args[]) { 
            Test ex = new Test(); 
            ex.change(ex.str, ex.ch); 
            System.out.print(ex.str + " and "); 
            System.out.println(ex.ch);
        } 
    
        public void change(String str, char ch[]) { 
            str = "new"; 
            ch[0] = 'd';
        }
    }

    输出的结果的是 old and dbc也就是传递String并不会改变原值,而是创建了一个新值。 ch[]就是一个简单的数组的传递。

    ( 对象包括对象引用即地址和对象的内容)

    String 比较特别,看过String 代码的都知道, String 是 final的。所以值是不变的。 函数中String对象引用的副本指向了另外一个新String对象,而数组对象引用的副本没有改变,而是改变对象中数据的内容. 
      对于对象类型,也就是Object的子类,如果你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是如果你把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。 
      Java参数,不管是原始类型还是引用类型,传递的都是副本(有另外一种说法是传值,但是说传副本更好理解吧,传值通常是相对传址而言)。 
      如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。如果在函数中改变了副本的值不会改变原始的值.
      如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是改变了地址中的值,那么在函数内的改变会影响到传入的参数。如果在函数中改变了副本的地址,如new一个,那么副本就指向了一个新的地址,此时传入的参数还是指向原来的地址,所以不会改变参数的值。

    展开全文
  • 传递:8中基本数据类型和String 引用传递(地址传递):除String以外的所有复合数据类型,包括数组、类和接口
  • Java传递参数无法赋值

    2014-03-26 11:16:30
    为什么这样无法给pointer赋值,我debug看变量g.adjList[i}.firstedge明明不为null,但是整个循环下来pointer一直都是null,没有赋值成功请问这个什么回事? Graph是我定义的图的数据结构.firstedge的类型也是EdgeNode ...
  • String data = new String(req.getParameter("data").getBytes("ISO-8859-1"), "UTF-8");
  • 想后台传递一个对象用JSON.stringify()转换成json对象,如果对象含有%,java后台获得的是null,怎么办?
  • 大争论:Java传递参数

    2007-01-28 17:05:00
    当你问大多数程序员Java是传值还是传引用的...(2)Java传递所有参数都使用传值方式。只有第二个答案是正确的。理解传值和传引用的区别的关键是要记住,当你向一个方法传递一个对象时,Java没有把对象放入堆栈,它只是
  • postgresql对传入的参数类型匹配相当严格 如select * from user where id = #id# 假设id类型为numeric,而传入的id为string的话postgresql就会报错: --- Cause: org.postgresql.util....
  • java中的参数传递(只有值传递没有引用传递

    万次阅读 多人点赞 2019-07-31 19:25:14
    Java中只有传值调用(值传递),没有传址调用(址传递或者引用传递)。所以在java方法中改变参数的值是不会改变原变量的值的,但为什么改变引用变量的属性值却可以呢?请看下面的解答。 java中的数据类型 Java中...
  • Java参数传递

    2016-04-05 19:34:45
    java参数传递
  • java传递String参数

    2016-03-31 16:30:02
    java传递String参数不会改变原String参数,此处传递的是copy package numCombine; public class NumComberAll { public static void main(String[] args) { // TODO Auto-generated method stub ...
  • java参数传递

    2018-04-26 21:15:34
    java参数传递方式当一个对象被当作参数传递到一个方法后,在此方法内可以改变这个对象的属性,那么这里到底是值传递还是引用传递? 答:是按值传递Java 语言的参数传递只有按值传递。当一个实例对象作为参数传递...
  • 最近使用Spring 的 RestTemplate 工具类请求接口的时候发现参数传递的一个坑,也就是当我们把参数封装在Map里面的时候,Map 的类型选择。 使用RestTemplate post请求的时候主要可以通过三种方式实现 1、调用...
  • java 枚举 参数传递

    千次阅读 2020-01-21 17:10:22
    java 枚举 参数传递 具体问题是这样的,JAVA定义一个枚举(如 RED、BLUE、GREEN)对象,初始值为RED,作为一个方法的参数传入,在方法中对该枚举对象进行修改(修改为BLUE),在调用该方法后,该对象还是为RED,...
  • 这里就要说到java 传递参数的两种方式:值传递与引用传递. 1.值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。 2.引用传递:也称为传地址。方法调用时...
  • C++参数传递java参数传递对比
  • Java参数传递方式

    2014-08-14 08:45:05
    Java参数传递
  • Java参数传递问题

    2015-07-22 18:46:06
    Java参数传递问题
  • JAVA 参数传递

    千次阅读 2013-11-21 13:51:01
    网络上有太多关于JAVA参数传递是传值还是传引用的讨论,其实大多是概念不清,混淆视听。从程序运行的角度来看,参数传递,只有传值,从不传递其它的东西。只不过值的内容有可能是数据,也有可能是一个内存地址。  ...
  • 然后联想到java,java传递参数是通过什么方式呢?是值传递还是引用传递? 在网上查阅资料知:java传递参数只有值传递。当参数为普通类型时,传递的是值;当参数为引用类型时,传递的是对象的引用(即地址),都是...
  • java参数传递

    2013-06-06 09:32:33
    java参数传递对于新手来说是一个难点,尤其是不知道而去百度的时候,更是搜出很多结果, java中究竟是传值还是传址(传引用) 导致新手们越来越迷糊.甚至很多老鸟都说不出所以然. 我的意见是java中只有传值;  值...
  • java参数传递,字符串做参数传递情况

    万次阅读 多人点赞 2018-08-23 14:13:50
    java参数传递,字符串做参数传递情况 首先明确的一点就是在java中只有值传递!只有值传递!理论依据来自《think in java》。接下来就是具体说明为何java只有值传递。 因为java中有基本类型和引用类型两种...
  • Java方法参数传递

    2016-12-27 09:59:57
    按值调用(call by value)表示方法接收的是调用者提供的值。 按引用调用(call by ...Java总数采用按值调用,方法得到的是所有参数值的一个拷贝,方法不能修改传递给它的任何参数变量的内容。 eg. public static void

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,104
精华内容 9,241
关键字:

java传递参数

java 订阅