当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

参数传递及内存分析

发表于: 2014-10-20   作者:梣梓cenzi   来源:转载   浏览:
摘要: 参数传递总结       要了解Java中的参数传递,首先需要了解在Java中的基本数据类型都有哪些?在Java中,基本的参数类型有8种:     byte字节型8bit、short短整型16bit、int整型32bit、long长整型64bit、float浮点型单精度32bit、double浮点型双精度64

参数传递总结
 
     要了解Java中的参数传递,首先需要了解在Java中的基本数据类型都
有哪些?在Java中,基本的参数类型有8种:
     byte字节型8bit、short短整型16bit、int整型32bit、long长整型64bit、
float浮点型单精度32bit、double浮点型双精度64bit、Boolean布尔型true
或false、char字符型16bit(字符可以存储一个汉字)。
    除了以上提及的8种基本数据类型,Java中还有引用类型,这些引用
类型包含用class、interface、abstractclass定义的类还有数组。这里举例
String类型,查看String的声明可以看到,String类型参数其实是用class
定义的一个类。
    那么在Java中参数是如何实现传递的呢?参数的传递也分为两种:
一、值传递:
    值传递适用于Java中的基本数据类型和String类型:
    如下代码:
   

 public class test(){
    public static void main(String[] args) { 
     int x = 1;//给x赋值
     int y = x;//把x的值赋给y
     y++;//对y做出改变
     System.out.println("x的值是:"+x+"    y的值是: "+y);

     String str1="张三";
     String str2="李四";
     str2=str1+"(但并非"+str1+"本人)";
     System.out.println("str1的名字:"+str1+"  str2的名字:"+str2);
 }
}

 

 

输出结果:x的值是:1  y的值是: 2
  str1的名字:张三  str2的名字:张三(但并非张三本人)

在引用类型的String进行值传递时str1、str2是两个同为String型的数据,
对两者中的任一个做改变都不会对另一个产生影响。
二、引用传递:
    引用传递适用于Java中的引用类型:
    如下代码:

public class Student(){
private String name;//名字属性
private int score;//学分属性

public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public int getScore() {
 return score;
 }
 public void setScore(int score) {
 this.score = score;
 }
 public void study(){
 score++;
 System.out.println(name+"学习中,学分是:"+score);
 }
}
 public class test(){
    public static void main(String[] args) { 
  Student stu1 = new Student();//创建一个学生类型的对象
stu1.setName("张三");//设置名字
stu.setScore(0);//初始化学分

Student stu1 = new Student();//创建一个学生类型的对象
stu1.setName("李四");//设置名字
stu.setScore(3);//初始化学分

stu1 = stu2;//赋值
//分别调用两个对象的学习方法 
stu1.study();
 stu2.study();
 }
}

 

 

输出结果:李四学习中,学分是:4
    李四学习中,学分是:5
由以上输出结果可知stu1.study();stu2.study();这两行代码所调用的都是
stu2中的Study方法;因为stu1 = stu2;把stu2 的值赋予了stu1,所以在
执行stu1.study();时实际是执行stu2.study();。
  所以在引用传递中对象中所存储的只是地址,当执行stu1 = stu2;时
stu1原有的地址被stu2的地址所取代,使用任何一个对象名来修改对
象的属性值时,另一个对象名来访问时,访问到的是改变之后的数
据。在调用Study方法时也就会调用以stu2为对象的方法。
     为更好地了解参数传递,需要了解变量和对象在内存中的存储方
式:
     内存分为栈内存和堆内存。栈内存中存储地址,名字,数据。
(正如前例中的student对象存在于栈内存中),堆内存中存储对象的属
性和方法(普通方法、构造方法)(如前例中student对象的study方法)。


 

参数传递及内存分析

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
【c++】指针参数是如何传递内存的 如果函数的参数是一个指针,不要指望用该指针去动态申请内存。如
JavaScript 变量包含两种不同类型的值,分别为基本类型值(primitive values)和引用类型值(refere
参数策略 如果函数的参数是一个指针,不要指望用该指针去动态申请内存。如下: void GetMemory(char
参数策略 如果函数的参数是一个指针,不要指望用该指针去动态申请内存。如下: void GetMemory(char
参数传递是什么? 在C的函数或是JAVA的方法中,向一个函数或方法内部传递一个参数,比如: void fun
程序例子如下: 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 void func(int *p ,
参数传递 1、什么是参数传递 参数传递就像是一个物流公司一样,要将别人的东西运送到他需要的地方。
一、概念的理解 1、参数传递:在使用函数时,要填入与函数形式参数个数相同的实际参数(有默认参数
Java中的参数传递机制一直以来大家都争论不休,究竟是“传值”还是“传址(传引用)”,争论的双方
1、JAVA中的数据类型有两大类 一是基本数据类型: a. byte 字节型 1字节 8位 取值范围(-128~127) b
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号