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

    2019-02-17 00:37:30
    一、参数传递的分类。这节课学习了Java中的一个重要的基础内容,就是参数传递参数传递在很多时候都有着十分重要的作用,首先先来看一下Java的相关数据类型(需要将基本数据类型和引用类型都牢记): 1.基本数据...

    一、参数传递的分类。这节课学习了Java中的一个重要的基础内容,就是参数传递。参数传递在很多时候都有着十分重要的作用,首先先来看一下Java的相关数据类型(需要将基本数据类型和引用类型都牢记):

    1.基本数据类型:
    (每一种基本类型都对应有一个封装类)
    byte、short、int、long、boolean、float、double、char一共8种
    Byte、Short、Integer、Long、Boolean、Float、Double、Character

    2.引用类型:类、抽象类、接口
    Class、abstract class、interface
    不管是你自己定义的类,还是Java给你提供的类,本质上都是属于引用类型,他们本身都继承有一个共同的父类。

    因此Java中的所有类(class、abstract class)都有一个共同的父类:Object。就算定义的某个类已经继承了一个父类,但只要他的父类没有继承的父类,就会默认继承Object父类。正因为这样,可以说所有的类都直接或间接的继承有父类Object。
    举个简单的例子:

    Public claa UNStudent extends Student {
    }
    Public class Student extends People {
    }
    Public class People {
    }
    

    在这个事例中,表面上看,UNStudent类继承Student类,Student类继承People类,而People类没有继承的类;但实际上,UNStudent的父类是Student,Student的父类是People,People的父类是Object,同时,在整个继承链上,所有的子类都可以称为是Object父类的子类。

    二、值传递
    值传递适用于Java的基本数据类型8种情况。除此以外,有一个特殊的类——String,他本身是一个类,但在这种传参的情况下和基本数据类型是一致的。
    举一个形象的例子:拿身份证去复印,复印后,得到身份证+复印件,此时如果把复印件上内容改掉,和原件当然没关系;如果把原件上的内容改掉,复印件上的内容可能会变也可能不变,在复印之前改就会变,在复印之后改就不会变。
    这个例子就说明了,把变量中的数据拷贝一份,传入到另一个变量中,这时候就是两个独立的变量了,我们对任何一个进行修改,对另外一个不会产生影响。

    public class Test {
    
    	 public static void main(String[] args) {
     	   int a = 5;
        	fun(a);
        	System.out.println(a);
    	 }
    
    	Public  static void fun(int a) {
        	a += 1;
    	}
    }
    

    //输出的结果是5

    三、引用传递
    引用传递适用于Java的引用数据类型。除此以外,需要格外注意的是,数组也是属于引用数据类型。简单两个例子,
    int a = new int [10];
    int b = new int [] {1,2,2,3,3};

    注意,虽然String也是类,本应该属于引用传递,但是String类除外。

    对于引用传递来说,对象名中存储的是对象在堆内存中的首地址,而不是具体的值;传递时就是把对象名中的首地址,拷贝一份传入到另一个对象名(变量)中,此时两个或者n多个对象名中存储的地址就是一致的,不管用任意的哪一个对象名去修改他所指向对象的属性或方法,其他的对象名也会跟着改变,因为他们通过地址指向的变量是同一个,而不像值传递时改变一个对其余的对象没有影响。

    Public class Test {
    
    	Public static void main(String args[] ) {
    
    	Student stu1 = new Student("小朋友", 60);
    	Student stu2 = new Student();
    	
    	stu2.name = "初中生";
    	stu2.score = 80;
    
    	System.out.println(stu1.toString());
    	System.out.println(stu2.toString());
    
    	stu2 = stu1;
    	stu1.name = "张三";
    
    	System.out.println(stu1.toString());
    	System.out.println(stu2.toString());
    	}
    }
    

    对相关内容做一个注释:Student stu1:声明一个对象名,叫做stu1
    = : 把内存空间的首地址赋给stu1
    new : 不是用来定义一个新的Student类对象,而是开辟内存空间,内存空间的大小根据Student类来决定
    Student(“小朋友”,60):将Student类中的属性和方法,写入到内存中,把”小朋友”,60数值赋给属性,在内存中形成一个对象。

    展开全文
  • Mybatis参数传递规则

    2021-01-25 20:36:40
    Mybatis参数传递规则 1.单值传参 void deleteObject(String name) Mybatis的源码中要求单值传参,取值时通过下标的方式取值(取值的参数名可以随意) 2.多值传参 void deleteObject(String name,String sex) ...

    Mybatis参数传递规则

    1.单值传参

    void deleteObject(String name)
    

    Mybatis的源码中要求单值传参,取值时通过下标的方式取值(取值的参数名可以随意)

    2.多值传参

    void deleteObject(String name,String sex)
    

    Mybatis高版本的源码中做了规定,自动将多值转换成单值(封装成Map集合,K-V结构),上例中封装为map(“name”,name),map(“sex”,sex)

    3.在映射配置文件中,根据参数传递格式,采用对应的方式变量
    1).单值传参 Array类型 collection=“array”
    List类型 collection=“list”

    @RequestMapping("delete")
        public SysResult deleteItem(Long[] ids) {
            itemService.deleteItem(ids);
            return SysResult.success();
        }
    
      <delete id="deleteItem">
            delete from tb_item where id in (
                <foreach collection="array" item="id" separator=",">
                    #{id}
                </foreach>
                )
        </delete>
    

    2).单值传参 map集合 collection=“map中的key”

    @RequestMapping("{status}")
        public SysResult reshelfItem(@PathVariable Integer status, /*@Param("ids")*/ Long[] ids) {
            itemService.updateItemStatus(status, ids);
            return SysResult.success();
        }
    
        <update id="updateItemStatus">
            update tb_item set status=#{status},updated=now() where id in (
            <foreach collection="ids" item="id" separator=",">
                #{id}
            </foreach>
            )
        </update>
    
    展开全文
  • java 参数传递规则

    2020-08-02 16:31:02
    java 参数传递规则 java所有的参数传递都是传递的副本,变量所代表的值的副本! 副本的概念就是副函数 他会复制一个副本地址指向原函数传来的对象地址 他如果不改变地址那么他的改变会影响到原函数中的值 如果改变了...

    java 参数传递规则

    java所有的参数传递都是传递的副本,变量所代表的值的副本!

    副本的概念就是副函数 他会复制一个副本地址指向原函数传来的对象地址 他如果不改变地址那么他的改变会影响到原函数中的值 如果改变了地址的指向位置(如创建一个新的对象)则它的改动对原函数没有影响(其中String比较特殊因为他创建后就不能改变值了 所以在副本中改变他的值相当于改变了的地址指向 所以不会影响原函数)

    比如你在

    package practiseBase;
    
    public class ObjectParaDeliver {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		String a="22";
    		StringBuffer buffer = new StringBuffer("adsada");
    		Person person = new Person("Zhao", 10);
    		test(a,buffer,person);
    		System.out.println(a+"\n"+buffer+"\n"+person.getAge()+person.getName());
    	}
    	
    	public static String test(String a,StringBuffer  b,Person p){
    		
    		a="111";
    //		p.setAge(14);	如果注释去掉 结果就是14
    		p = new Person("li", 9);
    		b=new StringBuffer("1231");
    		return a;
    		
    	}
    }
    
    

    结果

    22
    adsada
    10Zhao
    
    展开全文
  • java参数传递规则

    2020-10-13 13:38:02
    java参数传递规则 java的所有的传递方式其实都是值传递,为什么这个说,请看下面 1对于8种基本数据类型,这个不必多说,妥妥的值传递 2对于对象 大家肯定会说,这个传递的是引用,其实这个引用就是对象的...

                                                                         java参数传递规则

            java的所有的传递方式其实都是值传递,为什么这个说,请看下面

            1对于8种基本数据类型,这个不必多说,妥妥的值传递

             2对于对象

             大家肯定会说,这个传递的是引用,其实这个引用就是对象的实际值,对象就是一个引用,引用对应的那片内存空间存储的东西则是对象的内容,但是对象的值可以理解为是一串磁盘的地址,对象在进行方法参数传递的时候,实际就是把值(磁盘地址)传递给了方法,这样子的话方法里面改了这片地址里面的值之后,把地址传递出去并不会改变对象对应的存储的磁盘地址,但是这片地址里面的东西会被改掉,所以我们会看到对象里面的属性或者内容变了

         3对于字符串

          字符串其实存在于元空间常量池,其实字符串默认就是final类型,不可变的,那么我们将string作为方法参数传递的时候,同样是值传递,将元空间常量池里的这个字符串的地址传递出去了,同样传递不会改变原字符串变量的值(磁盘地址),当我们在方法里面改了这个字符串,其实是创建一个新的字符串,所以原字符串的值不变。

         如

         public class a{

             string a = value1;

              public void test(String a){

              a = value2;

              }

     

         main(){

         system.out.print(a) //还是value1 

         }

         }

    展开全文
  • string类参数传递规则

    2018-04-26 23:46:40
    字符串参数传递规则:字符串作为参数传递,不符合引用数据类型的规则。即对传进来的值做修改后,不会影响原来的值。(正常情况下,引用数据类型在传递参数时,传的是地址,即形参实参指向同一地址,形参变化会导致实参...
  • 函数调用时参数传递规则

    千次阅读 2018-03-09 09:44:58
    ARM函数调用时参数传递规则 之前在学习如何在C语言中嵌入汇编时有了解到C语言之前的参数调用是使用寄存器 R0传递第一个参数, R1传递到第二个.. 一直到R3传递第四个参数. 但是 实际上有时可能传递的参数非常多,...
  • public void test() { int a = 1; String tobePass = "before";... 标签:java,void,after,private,参数传递,stu,beCopy,规则,flg 来源: https://blog.csdn.net/u010029439/article/details/94461012
  • java语言参数传递介绍Java不只是一种编程语言,它是一个完整的平台,拥有庞大的库,将诸如图形绘制、Socket连接、数据库存取等复杂操作进行了最大程度的简化。下面是小编分享的java语言参数传递介绍,一起来看一下吧...
  • ARM函数调用时参数传递规则 之前在学习如何在C语言中嵌入汇编时有了解到C语言之前的参数调用是使用寄存器 R0传递第一个参数, R1传递到第二个.. 一直到R3传递第四个参数. 但是 实际上有时可能传递的参数非常多,...
  • 函数参数传递规则

    2020-10-30 23:01:49
    # 位置参数,关键字参数(含有‘=’则为关键词参数),可变位置参数(*为可变位置参数),可变关键字参数(** 为可变关键字参数) def printinfo(arg1,arg2 = 2 ,*args, **vardict): "打印任何传入的参数" print("输出...
  • 函数参数传递规则(一)

    千次阅读 2013-11-21 00:12:19
    1、函数参数传递规则  函数接口的两个要素是参数和返回值,c中传递方式:值传递和地址传递(即指针传递);c++中:值传递,地址传递和引用传递。  规则一:不论是函数的原型还是定义,都要明确写出每个参数的...
  • ARM中函数参数传递规则

    千次阅读 2009-12-27 13:36:00
    ARM中函数参数传递规则: ARM中函数参数传递规则和X86不同。ARM规则是:当参数在4个以内时使用r0-r3寄存器分别传递1-4号参数。当参数个数超过4时,前4个参数保存在r0-r3寄存器中;后面的参数反向压入堆栈。即最后一...
  • ARM参数传递规则

    2019-09-16 07:56:02
    1. r0,r1,r2,r3,在调用函数时,用来存放前4个函数参数和返回值,r4-r11,r14,在调用函数时必须保存这些寄存器到堆栈当中。如果函数的参数多于4个,则多余参数存放在堆栈当中,即sp,sp+4,sp+8,…依次类推。 2. 函数...
  • 0x80系统调用的参数传递规则

    千次阅读 2014-06-27 09:05:52
    系统调用的参数传递规则: 传递给系统调用的参数则必须按照参数顺序依次存放到寄存器ebx,ecx,edx,esi,edi中,当系统调用完成之后,返回值存放在eax中; A.当系统调用所需参数的个数不超过5个的时候,执行"int$0x80"指令...
  • java方法里参数的传递分为基本数据类型和一用数据类型,首先说明...接下来我们分别讲述基本数据类型和引用数据类型:基本数据类型的方法参数传递不会改变实参的值:1 packagecom.heima.work.demo;23 public classM...
  • 1、声明一个参数具有默认值...---无参数传递直接调用函数,则为:你好,python--(hello) ---有参数传递时,如:hello('小明')--结果为:你好,小明 2、默认参数调用 def sum(a=1,b=2,c=3)  sum_abc=a+b+c 无
  • Java 只有一种参数参数传递规则: 基于值的传递! */ import java.util.Arrays; public class Demo02 { public static void main(String[] args) { Koo koo = new Koo(); int a = 5; ko
  • int 0x80系统调用的参数传递规则

    千次阅读 2014-03-20 21:26:40
    系统调用的参数传递规则: 传递给系统调用的参数则必须按照参数顺序依次存放到寄存器ebx,ecx,edx,esi,edi中,当系统调用完成之后,返回值存放在eax中; A.当系统调用所需参数的个数不超过5个的时候,执行"int$0x80"指令时...
  • python的函数调用参数传递规则: 由于python是动态语言,变量赋值实际上是把值绑定到名字上,内在并没有地址、指针什么的概念,(虽然可以验证两个变量是不是同一个地址的值)所以对变量的传递仍就是传值...
  • 首先,也是最重要的一条:Java程序设计语言总是采用值传递。在值传递中,最重要的就是要理解副本这个概念。Java中所有的对象都是存储在堆中的。接下来,直接上代码:1.首先是Employee类,为测试辅助类。package ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,824
精华内容 1,129
关键字:

参数传递规则