🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.lang.java
Article #21572

Java �Ǵ�ֵ���Ǵ����� zz

#21572
From: ����è->�ú�ѧϰ...
Date: Thu, 27 Nov 2003 17:12
229 lines
14553 bytes
Java �Ǵ�ֵ���Ǵ�����
����: �߳ǿ��� (2002-04-18)
����: �߳ǿ�ջ
----------------------------------------------------------------------------
----
1. �������ǰ�ֵ���ݵ�
����Java �����IJ����Ǽ����͵�ʱ���ǰ�ֵ���ݵ� (pass by value)����һ������
����ͨ��һ���򵥵�������˵����
/* �� 1 */
/**
 * @(#) Test.java
 * @author fancy
 */
public class Test {
    public static void test(boolean test) {
        test = ! test;
        System.out.println("In test(boolean) : test = " + test);
    }
    public static void main(String[] args) {
        boolean test = true;
        System.out.println("Before test(boolean) : test = " + test);
        test(test);
        System.out.println("After test(boolean) : test = " + test);
    }
}
��������
Before test(boolean) : test = true
In test(boolean) : test = false
After test(boolean) : test = true
�������ѿ�������Ȼ�� test(boolean) �����иı��˴������IJ����ֵ�������������
Դ�������?û��Ӱ�죬���� main(String[]) ������� test ����û��Ӱ�졣��˵��
�����������Ǽ����͵�ʱ���ǰ�ֵ���ݵġ��Բ�����ʽ���ݼ����͵ı���ʱ��ʵ
�����ǽ������ֵ����һ��������������ģ���ô�ڷ�������������ô�ı���ֵ��
������ֻ�ı��˿�����ֵ������Դֵ��
2. ʲô������
����Java �Ǵ�ֵ���Ǵ����ã�������Ҫ���ڶ���Ĵ����ϣ���Ϊ Java �м�����û��
���á���Ȼ�������ᵽ���������������Ϊ�˸����������⣬���DZ���Ҫ֪��������
ʲô��
�����򵥵�˵��������ʵ������һ����������ֻ��߱��� (alias)��һ���������ڴ���
������һ��ռ���������ݣ���ݶ���Ĵ�С���������Ҫռ�õĿռ��СҲ���ȡ���
�ʶ����ʱ�����Dz���ֱ���Ƿ��ʶ������ڴ��е���ݣ�����ͨ������ȥ���ʡ�����
Ҳ��һ��������ͣ����ǿ��԰�������Ϊ���� C ������ָ��Ķ�������ָʾ�˶�������
���еĵ�ַ����ֻ�������Dz��ܹ��۲쵽�����ַ������ʲô��
����������Ƕ����˲�ֹһ������ָ��ͬһ��������ô��Щ�����Dz���ͬ�ģ���Ϊ��
��Ҳ��һ��������ͣ���Ҫһ�����ڴ�ռ������档�������ǵ�ֵ����ͬ�ģ���ָʾͬ
һ���������ڴ����λ�á�����
String a = "Hello";
String b = a;
�������a �� b �Dz�ͬ���������ã�����ʹ������������������������ǡ������ǵ�
ֵ��һ��ģ���ָ��ͬһ������ "Hello"��Ҳ���㻹���ò���ֱ�ۣ���Ϊ String ����
��ֵ�����Dz��ɸ�ĵ� (�� b = "World"; b = a; ����������Ǹı��� "World" ��һ
�����ֵ�����Ǹı���������� b ��ֵʹָ֮������һ�� String ���� a)����ô����
�� StringBuffer ����һ�����ӣ�
/* �� 2 */
/**
 * @(#) Test.java
 * @author fancy
 */
public class Test {
    public static void main(String[] args) {
        StringBuffer a = new StringBuffer("Hello");
        StringBuffer b = a;
        b.append(", World");
        System.out.println("a is " + a);
    }
}
��������
a is Hello, World
������������� a �� b �������ã����ı��� b ָʾ�Ķ����ֵ��ʱ�򣬴���������
����a ��ָʾ�Ķ����ֵҲ�ı��ˡ����ԣ�a �� b ��ָ��ͬһ�����󼴰� "Hello" 
��һ�� StringBuffer ����
��������������������Ҫ�㣺
1. ������һ��������ͣ������˶������ڴ��еĵ�ַ���������ͼ���������ƽʱ��˵��
���������Ҳ������ʵ��(����)��
2. ��ͬ�����ÿ���ָ��ͬһ�����󣬻��仰˵��һ����������ж�����ã�����������
�ı�����
3. ��������δ��ݵ���
�������ڶ���Ĵ��ݣ�������˵�����������ǰ�ֵ���ݵġ��͡����ǰ����ô��ݵġ���
������˵�����и��ĵ��?�������Ƕ�û�дӱ�����ȥ�����������ڲ��������ۡ�
������Ȼ���������Ѿ�֪����������ʲô��������ô���ڲ���������һ�¶������Dz���
����δ��ݵġ���������һ������Ϊ��
/* �� 3 */
/**
 * @(#) Test.java
 * @author fancy
 */
public class Test {
    public static void test(StringBuffer str) {
        str.append(", World!");
    }
    public static void main(String[] args) {
        StringBuffer string = new StringBuffer("Hello");
        test(string);
        System.out.println(string);
    }
}
��������
Hello, World!
����test(string) ������ test(StringBuffer) ���������� string ��Ϊ������˽�
ȥ������ string ��һ�����ã���һ������ӹ���ɵġ�ǰ���ᵽ��������һ���������
�����Ҳ��Ƕ�����������ܰ����ô��ݣ��������ǰ�ֵ���ݵģ���ô���ֵ������
ʲô�أ��Ƕ���ĵ�ַ��
�����ɴ˿ɼ������Ϊ�����ʱ���ǰ�ֵ���ݵģ����𣿴?Ϊʲô�?�����ǿ���
һ�����ӣ�
/* �� 4 */
/**
 * @(#) Test.java
 * @author fancy
 */
public class Test {
    public static void test(String str) {
        str = "World";
    }
    public static void main(String[] args) {
        String string = "Hello";
        test(string);
        System.out.println(string);
    }
}
��������
Hello
����Ϊʲô�������أ���Ϊ���� str ��һ�����ã��������� string �Dz�ͬ�����ã���
Ȼ���Ƕ���ͬһ����������á�str = "World" ��ı��� str ��ֵ��ʹָ֮������һ��
����Ȼ�� str ָ��Ķ���ı��ˣ�����û�ж� "Hello" ����κ�Ӱ�죬��������
 string �� str �Dz�ͬ�����ã�str �ĸı�Ҳû�ж� string ����κ�Ӱ�죬������
������ʾ��
�����������Ʒ��˲���ֵ���ݵ�˵������ô��������Ϊ�����ʱ���ǰ����ô��ݵ�
�ˣ�Ҳ�?��Ϊ��һ�����ӵ�ȷ�ܹ�˵�����ǰ�ֵ���ݵġ�
����������⵽���Dz��������ӵ�����һ��Java �����IJ����ǰ�ʲô���ݵ�����
����𰸾�ֻ���ǣ����ǰ�ֵ����Ҳ�ǰ����ô��ݣ�ֻ�Dz����ﲻͬ�����Ҳ�Ͳ�ͬ��

4. ��ȷ����ֵ���Ǵ����õ�����
����Ҫ��ȷ�Ŀ�������������Ҫ�����Ϊʲô��������һ�����⡣
����ʵ���ϣ�������Դ�� C������ Java��
����C ��������һ��������ͽ���ָ�룬���ǽ�һ�������Ϊ����ݸ�ij�������ʱ
�򣬾������ַ�ʽ����ֵ�����Ǵ�ָ�룬���ǵ���𣬿�����һ���򵥵�����˵����
/* �� 5 */
/**
 * @(#) test.c
 * @author fancy
 */
void SwapValue(int a, int b) {
    int t = a;
    a = b;
    b = t;
}
void SwapPointer(int * a, int * b) {
    int t = * a;
    * a = * b;
    * b = t;
}
void main() {
    int a = 0, b = 1;
    printf("1 : a = %d, b = %d\n", a, b);
    SwapValue(a, b);
    printf("2 : a = %d, b = %d\n", a, b);
    SwapPointer(&a, &b);
    printf("3 : a = %d, b = %d\n", a, b);
}
��������
1 : a = 0, b = 1
2 : a = 0, b = 1
3 : a = 1, b = 0
������ҿ������ԵĿ�������ָ�봫�ݲ�����Է�����޸�ͨ�����ݽ�����ֵ����
��ֵ���ݾͲ��С�
������ Java �ɳ�������ʱ������ C ����Ա��ʼת��ѧϰ Java�����Ƿ��֣�ʹ��
���� SwapValue �ķ�����Ȼ���ܸı�ͨ�����ݽ����ļ�������͵�ֵ���������
��һ����������ܽ����Ա�����ġ��������Ǿ���������� C �����д�ֵ/��ָ��
�����⡣���� Java ��û��ָ�룬��ô���������ݱ���˴�ֵ/�����õ����⡣��ϧ��
���������� Java �н������۲���ǡ����
������������һ�����������Ŀ��ֻ��Ϊ�˸����������������ڷ��������з���ĸ�
�IJ����ֵ��ʹ֮������Ч��
����Java �У��ı�����ֵ�������������һ�֣�ʹ�ø�ֵ�š�=��ֱ�ӽ��и�ֵʹ��
�ı䣬���� 1 ���� 4���ڶ��֣�����ijЩ��������ã�ͨ��һ��;�������Ա��ݽ���
�ı䣬���� 3�����ڵ�һ���������ı䲻��Ӱ�쵽�����÷����������ݣ�����ֱ��
˵Դ��ݡ���ڶ��ַ��������෴����Ӱ�쵽Դ��ݡ�����Ϊ����ָʾ�Ķ���û�б䣬
�����Ա��ݽ��иı���ʵ�����Ǹı�ĸö���
5. ���ʵ������ swap �ķ���
������ֵ���Ǵ����õ����⣬�����Ѿ����ǽ���ˣ�����������Ȼ���ܽ������һ����
�⣺����������� int �͵ı��� a �� b������дһ���������������ǵ�ֵ��Ӧ����ô
�죿
�������ۺ�����ʧ��û�а취����ˣ�����ֻ�ܾ�������������ۣ��Ծ���ʹ�ý�
��������������
/** �� 6 */
/**
 * @(#) Test.java
 * @author fancy
 */
public class Test {
    public static void swap(int[] data, int a, int b) {
        int t = data[a];
        data[a] = data[b];
        data[b] = t;
    }
    public static void main(String[] args) {
        int[] data = new int[10];
        for (int i = 0; i < 10; i++) {
            data[i] = (int) (Math.random() * 100);
            System.out.print(" " + data[i]);
        }
        System.out.println();
        for (int i = 0; i < 9; i++) {
            for (int j = i; j < 10; j++) {
                if (data[i] > data[j]) {
                    swap(data, i, j);
                }
            }
        }
        for (int i = 0; i < 10; i++) {
            System.out.print(" " + data[i]);
        }
        System.out.println();
    }
}
�������н��(���֮һ)��
78 69 94 38 95 31 50 97 84 1
1 31 38 50 69 78 84 94 95 97
����swap(int[] data, int a, int b) �������ڲ�ʵ�����Ǹı��� data ��ָʾ�Ķ���
�ij�Ա��ݣ����������۵ĵڶ��ָı����ֵ�ķ�����ϣ�����ܹ���һ����ʹ����
�Ƶķ��������������⡣

--


�������Ĺ��������ϵ۵Ĺ��ϵۣ���ֻ��ס�Լ���һĶ��ֵء�

                                                          -----�����������ġ� 
[23��1H
�� ��Դ:����ˮ˼Դ bbs.sjtu.edu.cn��[FROM: 211.80.91.3]
Technical Details
Message-ID: <49QbIC$A4V@bbs.sjtu.edu.cn>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!cyclone.bc.net!sjc70.webusenet.com!news.webusenet.com!news.bylinux.net!news.ccie.net.cn!SJTU

Show Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB
X-Google-Thread: f6cb0,ccfc8e36611a3958,start
X-Google-Attributes: gidf6cb0,public
X-Google-ArrivalTime: 2003-11-27 09:11:03 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!cyclone.bc.net!sjc70.webusenet.com!news.webusenet.com!news.bylinux.net!news.ccie.net.cn!SJTU
From: bocoo.bbs@bbs.sjtu.edu.cn (����è->�ú�ѧϰ...)
Newsgroups: cn.bbs.comp.lang.java
Subject: Java �Ǵ�ֵ���Ǵ�����  zz
Date: 27 Nov 2003 17:12:55 GMT
Organization: ��ˮ˼Դ
Message-ID: <49QbIC$A4V@bbs.sjtu.edu.cn>
Mime-Version: 1.0
Content-Type: text/plain; charset="gb2312"
Content-Transfer-Encoding: 8bit
X-Filename: Java/M.1069953132.A
Lines: 229