首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

【java】值传送和引用传递理解

2012-09-10 
【java】值传递和引用传递理解一、理解★ 当一个变量最为一个参数传入方法内部的时候,会有两种不同的传递方式:

【java】值传递和引用传递理解

一、理解

★ 当一个变量最为一个参数传入方法内部的时候,会有两种不同的传递方式:值传递和引用传递。

  ☆ 值传递的特点:不管方法内部对传进去的参数作任何改变,也不会影响方法外部的变量的值

  ☆ 引用传递的特点:方法内部对传进去的参数作的改变也会影响方法外部的变量的值

二、记忆

★ 1、基本类型(8种)的传递都是值传递

★  2、引用类型(除String外)都是引用传递(传递引用的副本)

★  3、Strng比较特殊,它虽然是引用类型,但是却是值传递

三 示例

3.1 基本类型:如 int

理解:

1、testChange:iAppoint作为参数在testChange方法中传递的是iAppoint引用的副本,指向同一地址,对副本值进行改变改变的也就是地址的中的值,iAppoint指向的是相同地址所以也是改变的

2、testNew:iAppoint作为参数在testChange方法中传递的是iAppoint引用的副本,指向同一地址,当引用的副本指向的地址更改后,无论对引用副本值做什么改变,对iAppoint本身指向的地址没有影响

3.3 String 和 StringBuffer


理解:

1、Strng是引用类型,但是却是值传递,不论值在testChange中怎么变,或者改变地址都不影响在printFirst中的值

2、StringBuffer方法中传递的是引用的副本

四、String的扩展知识(equal和==)

public class StringEqual {    public static void main(String[] args) {        new StringEqual().printFirst();    }    private void printFirst() {        String iStr = "aaa";        String iStr2 = "aaa";        String iNewStr = new String("aaa");        String iNewStr2 = new String("aaa");        System.out.println("iStr == iStr2: "+(iStr==iStr2));        System.out.println("iStr.equals(iStr2): "+(iStr.equals(iStr2)));        System.out.println("iStr == iNewStr: "+(iStr==iNewStr));        System.out.println("iStr.equals(iNewStr): "+(iStr.equals(iNewStr)));        System.out.println("iNewStr2 == iNewStr: "+(iNewStr2==iNewStr));        System.out.println("iNewStr2.equals(iNewStr): "+(iNewStr2.equals(iNewStr)));    }}
打印结果:
iStr == iStr2: true
iStr.equals(iStr2): true
iStr == iNewStr: false
iStr.equals(iNewStr): true
iNewStr2 == iNewStr: false

iNewStr2.equals(iNewStr): true

理解:

==在java中是比较引用的,即在内存中的地址。而String的equals()是比较字符串的内容。

学习地址?:http://www.51testing.com/html/68/n-816868.html

热点排行