zoukankan      html  css  js  c++  java
  • 4-2.值传递

               

    package property;
    public class ValueTest {
    
        private String field;
        
        public static void main(String[] args) {
            /*
             * 
             * -----------------方法参数-----------------
             * 
             * 按值调用:表示方法参数接受的是调用者提供的值
             * 按引用调用:................................................提供的变量地址
             * 
             * Java是值传递
             * 
             * 对象引用和值引用
             * 
             * 对象引用是按照值传递的
             * 
             */
    
            /*
             * 值引用
             * 
             * Java程序设计是按值引用,方法得到是所有参数值的一个拷贝,并不能修改传递给他的参数变量的内容
             * 
             * 执行步骤:
             * 1.x被初始化a的值的一个拷贝                         
             * 2.x*5 =10 ,a的值仍是2                                         
             * 3.方法结束后x变量不再使用
             */                   
    
            int a = 2;
            method1(a); 
            System.out.println("a=="+a);
            
            String b = "a";
            method2(b);
            System.out.println("b=="+b);
            
            String c = new String();
            c = "c";
            method2(c);
            System.out.println("c=="+c);
            
            /*
             * String类型不是基本数据类型为什么不能改变值:新开辟一块内存
       * String是final修饰的
       * 先拷贝x的一份对象变量为y,方法内给拷贝变量赋值,赋值操作是新开辟一片内存空间,引用赋值给y,x的引用并没有改变
             */
            String x = "5";
            method(x);
            System.out.println("x--->"+x);
            /*
             * 方法参数有两种类型:
             * 1.基本数据类型
             * 2.对象引用
             * 
             * 一个方法不能修改一个基本数据类型的参数,下面看对象引用
             */
            
            
           /*
            * 对象引用
            * 
            * 1.拷贝一份va的值赋给x,这是对象引用,指向同一个对象
            * 2.x.field="ss";
            * 3.结束后x不再使用,va继续指向原来的对象,值改变
            */
            
             ValueTest va =  new ValueTest();
             va.setField("aa");
             method3(va);
             System.out.println(va.getField());  
            
             /*
              * 1.分别拷贝一份对象变量赋值
              * 2.x,y指向对象交换,但是v1,v2没变
              * 3.结束后x,y不再使用了
              */
    
    
             ValueTest v1 = new ValueTest();
             v1.setField("v1");
             ValueTest v2 = new ValueTest();
             v2.setField("v2");
             method4(v1, v2);
             System.out.println(v1.getField()); 
             System.out.println(v2.getField()); 
             
        }
        
        private static void method(String y){
            y= "6";
        }
        
        private static void  method1(int x){
            x = 5*x;
            System.out.println("x=="+x);  
        }
    
        private static void  method2(String x){
            x = "aaa";
            System.out.println("x=="+x);  
        }
    
        private static void method3(ValueTest x){
            x.field = "ss";
            System.out.println(x.getField()); 
        }
        
        private static void method4(ValueTest x,ValueTest y){
            ValueTest temp = y;
            y = x;
            x = temp;
        }
        
        
        
        public String getField() {
            return field;
        }
    
        public void setField(String field) {
            this.field = field;
        }
        
    }
  • 相关阅读:
    hashlib对密码进行加密
    django中model的choices字段
    django在表发生变化后需执行命令
    djangopost请求报错:Forbidden (CSRF token missing or incorrect.)
    阻止浏览器自动填入账号和密码
    django表的models的参数及含义
    django设置静态文件
    Django的admin管理工具设置中文
    径向渐变
    文档对象的获取
  • 原文地址:https://www.cnblogs.com/lxh520/p/8134578.html
Copyright © 2011-2022 走看看