Article View: cn.bbs.comp.lang.java
Article #21572Java �Ǵ�ֵ���Ǵ����� zz
From: ����è->�ú�ѧϰ...
Date: Thu, 27 Nov 2003 17:12
Date: Thu, 27 Nov 2003 17:12
229 lines
14553 bytes
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
[m[1;31m�� ��Դ:����ˮ˼Դ bbs.sjtu.edu.cn��[FROM: 211.80.91.3][m
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!SJTUShow 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