2012年5月31日23:06:13
對JAVA引用的一點理解
例子不完美,但卻說明問題,一直以來都以為方法的參數是形參,現在終於明白了,有些參數不是形參那麼簡單,是引用,是暗含指針操作的,果然C、C++還是要好好學習滴。。。
import java.util.ArrayList;
import java.util.List;
/**
* Hello world!
*
*/
public class App
{
public static void main(String[] args)
{
Person p = new Person();
p.setAge(30);
p.setName("Lily");
System.out.println(p);
int ar[] =
{ 3, 4, 5 };
for (int i : ar)
{
System.out.print(i + " ");
}
int j = 100;
System.out.println(j);
List<Integer> list = new ArrayList<Integer>();
list.add(123);
list.add(456);
list.add(789);
for (int i : list)
{
System.out.print(i + " ");
}
System.out.println();
System.out.println("----------------------------");
modify(p, ar, j, list);
System.out.println(p);
for (int i : ar)
{
System.out.print(i + " ");
}
System.out.println(j);
for (int i : list)
{
System.out.print(i + " ");
}
System.out.println();
}
private static void modify(Person p, int[] ar, int j, List<Integer> list)
{
p.setAge(50);
p.setName("Mary");
ar[2] = 56;
j = 3;
list.set(1, 321);
list.add(9876);
}
}
public class Person
{
private String name;
private int age;
/**
* @param name
* @param age
*/
public Person(String name, int age)
{
super();
this.name = name;
this.age = age;
}
/**
*
*/
public Person()
{
super();
// TODO Auto-generated constructor stub
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
@Override
public String toString()
{
return "Person [name=" + name + ", age=" + age + "]";
}
}
執行結果:
Person [name=Lily, age=30]
ar --> 3 ar --> 4 ar --> 5 j = 100
list -> 123 list -> 456 list -> 789
----------------------------
Person [name=Mary, age=50]
ar --> 3 ar --> 4 ar --> 56 j = 100
list -> 123 list -> 321 list -> 789 list -> 9876
分享到:
相关推荐
在Java编程语言中,函数调用...理解这一点对于编写Java程序至关重要,因为它影响到函数如何操作数据以及函数之间的相互作用。在编写涉及对象实例的函数时,开发者必须意识到这种"伪传引用"行为,以避免预期之外的结果。
### Java中的按值传递与按引用传递详解 #### 一、引言 在Java编程语言中,关于参数传递的方式一直存在两种观点:一种认为...理解这一点有助于开发者更好地把握Java中的参数传递机制,并有效地避免由此产生的潜在问题。
这一点在Java中非常重要,因为它影响到了如何处理对象的复制以及对象的生命周期等问题。 - **空引用** 如果我们声明了一个引用变量但并未给它分配任何对象,那么这个引用变量就称为“空引用”或“未初始化的引用...
### Java是传值还是传址引用 #### 一、简单类型是按值传递的 Java在处理简单数据类型(如int、boolean等)时采用的是按值传递的方式。这意味着当你将一个简单类型的值作为参数传递给一个方法时,实际上传递的是这...
Java提供了if语句和switch语句来实现这一点。if语句基于一个布尔表达式的结果决定是否执行某段代码,而switch语句则适用于多个可能的选项,提高了代码的可读性。理解并熟练运用这些条件结构,能帮助我们编写出灵活...
值传递和引用传递的概念对于理解Java中的方法调用至关重要。基本类型参数的值在方法内部的任何修改都不会影响到方法外部的原始变量。而引用类型参数虽然看起来似乎可以修改外部变量,但实际上是通过修改对象的状态来...
Java提供了多种机制来实现这一点: 1. **Wait/Notify**: `Object.wait()`和`Object.notify()`用于线程之间的简单同步。 2. **CountDownLatch**: 允许一个或多个线程等待其他线程完成一组操作。 3. **CyclicBarrier*...
Java中对象与引用对象的关系 在 Java 中,对象和引用对象的关系是一个非常重要的概念。从宏观的角度来看,对象是类的实例。...只有当我们正确地理解了对象和引用对象的关系时,我们才能正确地使用 Java 编程语言。
首先,我们要明确一点,Java的引用更接近于C++的指针,而C++的引用则是一种完全不同的机制。 在Java中,引用可以看作是对象的一个别名,它存储的是对象在内存中的地址。例如,当我们声明`A a = new A(1)`和`A b = a...
理解这一点对于深入学习Java至关重要。在Java中,基本数据类型(如int、float、char等)是按值传递的,而对象则是按引用传递的。但这并不意味着对象本身被复制,而是对象的引用被复制。 首先,我们来看基本类型的...
1. **声明Java扩展函数**:在XSLT文件中声明要调用的Java类所在的包名,并给该包名指定一个前缀,以便在XSLT中引用。 ```xml xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:java="cc.unmi.commons...
在Java编程语言中,初学者常常会遇到一些核心概念和常见问题,这些问题是每个Java开发者都需要理解和掌握的。以下就是六个关键问题的详细解释: **问题一:声明了什么?** 在Java中,当我们声明一个变量,如`String...
理解这一点对于深入掌握Java编程至关重要。 首先,让我们明确什么是值传递。当我们将基本数据类型(如int、char或boolean)的变量传递给方法时,实际传递的是这些变量的副本。这意味着在方法内部对这些副本进行的...
- **内存布局**:介绍了Java程序运行时的内存布局,包括代码段(Codeseg)、堆(heap)和栈(stack),加深了对程序运行环境的理解。 - **代码编写规范**:提出了程序格式的七条建议,如大括号对齐、代码块间隔、运算符...
Java中参数传递的方式有两种理解:值传递和引用传递,但这两种说法实际上是对同一种机制的不同角度的描述。下面将详细解释这两种理解方式。 首先,我们来看值传递的理解。在Java中,当一个对象作为参数传递给方法时...
这一点对于理解Java中方法调用的行为至关重要。 在提供的代码示例中,有两个方法:`modifyA(String b)` 和 `modifyObject(StringBuffer object)`。这两个方法试图修改传入参数的值,但它们都没有成功。原因在于Java...
提到“java 一点经验 书”,这可能是指学习Java的经验分享或书籍推荐。学习编程语言,尤其是Java,不仅需要理解语法,更需要通过实践积累经验,掌握面向对象编程的思想、异常处理、集合框架、多线程等核心概念。对于...
Java参数传递机制是编程中的重要概念...理解这一点对于避免常见的编程错误至关重要,特别是涉及到对象的状态更改时。因此,当在方法中处理对象参数时,必须谨慎操作,因为任何对对象属性的修改都会直接影响到原始对象。