精华内容
下载资源
问答
  • 只不过传递引用数据类型时,传递的是对象的地址,如Person p = new Person()时,把p作为参数传递时,传递的是p中保存的new的Person的地址(网上很多人把这叫做引用传递),那么在方法中对p的属性进行

    目前网络中有很多资料讲值传递和引用传递的文章,我查了许多,看得眼花缭乱,因此整理此篇文章来整理下思路和大家分享一下

    在我看来不管是传递基本数据类型和引用数据类型,都是属于值传递。只不过传递引用数据类型时,传递的是对象的地址,如Person p = new Person()时,把p作为参数传递时,传递的是p中保存的new的Person的地址(网上很多人把这叫做引用传递),那么在方法中对p的属性进行操作时,原来的p对象的属性也会跟着变化,到这里相信大家都能够明白。

    有一个个例就是String,首先要明白的是String也是一个类,下面举个例子对比一下:

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    public class Chuandi {
        public static void main(String[] args){
           Person person = new Person("张三",26);
           change(person);
            System.out.println(person.toString());
        }
        public static void change(Person p){
            p.setAge(17);
            p.setName("hiram");
            System.out.println(p);
        }
    }
    class Person{
       public String name;
        public int age;
    
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public Person() {
        }
    
        public String getName() {
            return name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "Person{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    }
    

    上面是我们平时常用的对对象调用的处理

    得到的结果为:

    Person{name='hiram', age=17}
    Person{name='hiram', age=17}



    可见方法中对对象属性的修改也改变了原有对象的属性

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    下面我们对change方法做个修改,添加p = new Person();

    public class Chuandi {
        public static void main(String[] args){
           Person person = new Person("张三",26);
           change(person);
            System.out.println(person.toString());
        }
        public static void change(Person p){
            p = new Person();
            p.setAge(17);
            p.setName("hiram");
            System.out.println(p);
        }
    }

    得到结果为

    Person{name='hiram', age=17}
    Person{name='张三', age=26}


    注意:可见在方法中对属性的修改并没有改变作为参数传递的对象的属性,因为方法中p重新指向了一个新的Person()的地址,再对p的属性做修改时,作为参数传递的Person对象的属性并不会发生改变,这就是我们平常对String对象的操作方法,只不过我们只常用String的简式声明方法String str = "java",这就相当于String str = new String("java"),这是创建一个新的String的过程,不单单是赋值的过程。

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    下面看String的例子

    public class Chuandi {
        public static void main(String[] args){
           String str = "java";
           change(str);
            System.out.println(str);
        }
        public static void change(String str){
            str = "web";//这里相当于str = new String("web"),也就类似于上面的p = new Person();
            System.out.println(str);
        }
    }
    自然而然得到的结果不一样了

    web

    java



    展开全文
  • 委托是一种动态调用方法的类型,属于引用... 委托允许将方法作为参数进行传递。 委托可用于定义回调方法。 委托可以把多个方法链接在一起。这样,在事件触发时可同时启动多个事件处理程序。 委托签名不需要与方法...

          委托是一种动态调用方法的类型,属于引用型。

    委托是对方法的抽象和封装。委托对象实质上代表了方法的引用(即内存地址)

     

    特点:

    1. 委托类似于C++函数指针,但与指针不同的是,委托是完全面向对象的,是安全的数据类型。
    2. 委托允许将方法作为参数进行传递。
    3. 委托可用于定义回调方法。
    4. 委托可以把多个方法链接在一起。这样,在事件触发时可同时启动多个事件处理程序。
    5. 委托签名不需要与方法精确匹配。
    展开全文
  • 2020-10-13

    2020-10-13 19:35:52
    对象作为参数传递的的特点是什么? 对象的参数传递传递的是对象的地址 对象初始化顺序是怎样的? 类的static字段与非static字段的区别是什么什么情况下应使用static修饰符? static字段修饰的内容可以被任何类访问...

    对象与对象引用的区别是什么?

    创建对象是直接分配给其内存空间
    声明对象引用是将对象地址传递给它,建立类似于遥控器和电视的控制关系。并没有为其分配新的内存空间。

    对象作为参数传递的的特点是什么?

    对象的参数传递传递的是对象的地址

    对象初始化顺序是怎样的?

    1. 初始化类变量(即static修饰的成员变量),并未赋值。不管写的位置在哪里,只要是类变量,系统总会先找到它进行变量初始化。
    2. 执行静态代码块和类变量定义式,两者根据写的位置来决定先后,先写先执行。其实从某种角度上看,可以把类变量定义赋值视为两部分:一部分是定义变量,一部分赋值。而这个赋值部分可以看做是一个静态代码块。两个静态代码块的执行顺序自然是看写的位置的先后了。
    3. 初始化实例变量(即未被static修饰的成员变量),并未赋值。同样的,不管写的位置在哪里,在创建对象时执行到这步时,系统总会找到它进行变量初始化。
    4. 执行构造代码块和实例变量定义赋值式,两者同样根据写的位置先后来决定执行顺序先后,同样可以按2中所写来理解。但是,这里要注意的就是构造代码块是可以调用静态变量的,实例变量定义赋值式可以看做是只对实例变量进行赋值的构造代码块。
    5. 执行构造函数。构造函数同样可以调用静态变量和实例变量。

    类的static字段与非static字段的区别是什么?什么情况下应使用static修饰符?

    static字段修饰的内容可以被类的任何对象访问,并不属于某一个类的具体对象。
    当多个类使用同一个数据时要用static修饰。

    JAVA中final修饰符都有什么作用?

    被final修饰的变量视为常量不可以被改变。

    JAVA中float[10]arr;语句正确么?

    是错误的。
    对于Java而言,定义数组时,不可以在方括号里指定数组的大小。
    正确的应为 float [] arr;

    JAVA数组元素类型为基本数据类型和引用类型时,有什么不同?

    前者数组中的元素全部为基本数据类型。
    后者存储的为对象的地址。

    展开全文
  • 3

    2020-11-29 22:18:09
    2.对象作为参数传递的特点是什么? 当基本数据类型作为参数在方法中传递时,传递的是值。而对象的传递是引用传递,即传递的是对象的地址。 3.对象初始化顺序是怎样的? 实例化一个对象时,先后构造静态成员变量,...

    2.对象作为参数传递的特点是什么?
    当基本数据类型作为参数在方法中传递时,传递的是值。而对象的传递是引用传递,即传递的是对象的地址。

    3.对象初始化顺序是怎样的?
    实例化一个对象时,先后构造静态成员变量,静态初始化块,成员变量,初始化块,构造方法。

    4.类的static字段与非static字段的区别是什么?什么情况应该使用static修饰符?
    当使用static修饰数据成员时,此时不单独属于任何一个类的具体对象,而是属于类的静态数据成员。它被保存于类的内存区的公共存储单元,所以当类的任意一个对象访问它的时候,得到的值都是一样的。当需要类的多个对象公用某个数据时,则需要使用静态数据成员。

    5.Java中的final修饰符都有什么作用?
    final修饰属性,属性为常量;当使用final时,该方法在类中不可被覆盖,此方法保证了程序的安全性于正确性。

    6.Java中 float[10]arr;语句正确么?为什么?
    应该是错误的,Java定义数组时不可以在方括号里指定数组的大小。

    7.Java数组元素类型为基本数据类型和引用类型时,有什么不同?
    前者数组中的元素全部为基本数据类型,后者存储的为对象的地址。

    展开全文
  • 第三次作业

    2020-10-13 13:22:36
    2.对象作为参数传递的特点是什么? 当基本数据类型作为参数在方法中传递时,传递的是值。而对象的传递是引用传递,即传递的是对象的地址。 3.对象初始化顺序是怎样的? 实例化一个对象时,先后构造静态成员变量,...
  • 3 2020 10 13

    2020-10-13 13:44:04
    2.对象作为参数传递的特点是什么? 当基本数据类型作为参数在方法中传递时,传递的是值。而对象的传递是引用传递,即传递的是对象的地址。 3.对象初始化顺序是怎样的? 实例化一个对象时,先后构造静态成员变量,...
  • C#委托

    热门讨论 2021-01-30 19:35:23
    委托对象实质上代表了方法的引用(即内存地址)可以理解为函数的一个包装,它使得c#中的函数可以作为参数来被传递 三.举个例子 简单理解是这样的,比如您要管您的孩子,把孩子送进了幼儿园,此时您就
  • 但通过收件地址、下单IP地址、联系电话、收货人等判断实际购买人为一人或与您有紧密关联的,且多笔订单合计购买数量超过该商品限购数量的,销售商有权取消相关订单、解除合同,小米有权基于该情形...
  • java一些常见的面试题

    2018-07-17 10:56:21
    引用传递:也成为地址传递,方法执行时会修改内存中的实际参数,方法结束后值发生改变 能否再static环境中访问非static资源 不能,因为静态的资源属于类,随着类的加载而加载到内存区中,当类加载时,此时不一定有实例创建...
  • 答: 当数组名作为参数时,传递的实际上是地址。而其他类型如int作为参数时,由于函数参数值实质上是实参的一份拷贝,被调函数内部对形参的改变并不影响实参的值。 22、数据结构和算法: A:查找: (1)二分法查找; B...
  • 在一小时内学会 C#(txt版本)

    热门讨论 2009-08-19 18:09:37
    和 C++ 一样,有一个主函数作为你程序的入口点。C++ 的主函数名为 main,而 C# 中是大写 M 打头的 Main。 类块或结构定义之后没有必要再加一个半角分号。C++ 中是这样,但 C# 不要求。 命名空间 每个类都打包于一...
  • 可以构造多个构造方法,但多个构造方法的参数表一定不同,参数顺序不同即属于不同的构造方法: public student(string name,int a){ } public student(int a,string name){ } 为两个不同的构造方法。 如果我们未给...
  • 委托可以把一个方法作为参数代入另一个方法。 委托可以理解为指向一个函数的引用。 是,是一种特殊的委托 5.override与重载的区别 答 : override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    -d,--directory:所有参数作为目录处理,而且会创建指定目录的所有主目录。 -D:创建<目的地>前的所有主目录,然后将<来源>复制至 <目的地>;在第一种使用格式中有用。 -g,--group=组:自行设定所属组...
  • 1、为什么要引入“进程” (1)进程调度属于低级处理机管理,即确定系统中哪个进程将获得CPU;而作业调度属于高级处理机管理,即确定系统中哪些作业将获得CPU。 (2)进程是一个具有一定独立功能的程序...
  • 第三个参数指明我们想要查找的错误代码的号码,第四个参数指明我们想要文本描述使用什么语言。 如果FormatMessage函数运行成功,那么错误代码的文本描述就位于内存块中,我将它拷贝到对话框底部的滚动窗口中。如果...
  • php高级开发教程说明

    2008-11-27 11:39:22
    前面提到的每一种语言代表一种解决问题的特定方法,这些问题多属于具有特殊要求的某 一特殊种类。因为这些语言集中在一个有限的应用领域内,他们的成功性也限制在这些领域。 像C和P a s c a l这样的语言变得如此流行...
  • BaseActivity是一个抽象类,有两个泛型参数,一个是ViewDataBinding,另一个是BaseViewModel,上面的ActivityLoginBinding则是继承的ViewDataBinding作为第一个泛型约束,LoginViewModel继承BaseViewModel作为第二个...
  • 迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。 1-2 面向对象的编程语言有哪些特点? 解: 面向对象的编程语言与以往各种编程...
  • 8.3 按值传递机制 304 8.4 函数声明 305 8.5 指针用作参数和返回值 307 8.5.1 常量参数 310 8.5.2 从函数中返回指针值 318 8.5.3 在函数中递增指针 322 8.6 小结 322 8.7 习题 323 第9章 函数再探 325 9.1 ...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    11.2 方法中的参数.125 11.3 静态和非静态的方法.129 11.4 方法的重载.130 11.5 操作符重载.134 11.6 小 结.137 第十二章 域 和 属 性 .139 12.1 域 .139 12.2 属 性 .143 12.3 小 结 .146 第十三...
  • C#微软培训资料

    2014-01-22 14:10:17
    11.2 方法中的参数.125 11.3 静态和非静态的方法.129 11.4 方法的重载.130 11.5 操作符重载.134 11.6 小 结.137 第十二章 域 和 属 性 .139 12.1 域 .139 12.2 属 性 .143 12.3 小 结 .146 第十三...
  • 共享存储型交换单元以存储器作为核心部件,而总线型父换单元的一 结构包括入线控制部伻、出线控制部件和总线三部分。 (2)工作方式不同。共享存储型交换单元的工作方式有两种:A.入线缓冲:B.出线缓 冲。总线型交换单元...
  • java-servlet-api.doc

    2009-10-13 19:34:17
    当客户端发出请求时,Servlet引擎传递给Servlet一个ServletRequest对象和一个ServletResponse对象,这两个对象作为参数传递到service()方法中。 Servlet也可以执行ServletRequest接口和ServletResponse接口。...
  • - 函数内部的参数arguments包含了传入的所有参数 - this,表示在这个函数内的作用域,以及prototype 理解匿名函数和闭包 匿名函数又叫拉姆达函数,主要是在把函数当值传递的时候用,或者是...
  • 解释器会初始化一个线性字节数组作为内存供wasm使用,wasm与区块链数据交互是依靠内存共享的形式,通过该字节数组进行传递。(这也是为何在Env_api设计里,很多数值的传参是offset与length的组合)Wasm的内存数组是...

空空如也

空空如也

1 2 3
收藏数 48
精华内容 19
关键字:

什么作为参数属于地址传递