`
myhongkongzhen
  • 浏览: 93874 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

對JAVA引用的一點理解

    博客分类:
  • J2EE
 
阅读更多

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  

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    谈谈对Java多态性的一点理解

    多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中...

    java 经典面试题30道

    答: = =是操作符号,对于基本类型来说比较的是值,对于引用类型来说,比较的是引用,也可以理解为内存地址。而equals方法是属于超类Object的方法,其实默认情况下也是用==比较,只是很多类重写了equals这个方法,...

    java初学者必须理解的6大问题

    问题一:我声明了什么!  String s = "Hello world!";  许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不...比较好理解的一点是:

    Java初学者都必须理解的六大问题

    比较好理解的一点是:  int a=10;  int b=10;  则a==b将是true。  但不好理解的地方是:  String a=new String("foo");  String b=new String("foo");  则a==b将返回false。  根据前一帖说...

    java六大必须理解的问题-来自网络少许有误(非常适合初学者).doc

    比较好理解的一点是: int a=10; int b=10; 则a==b将是true。 但不好理解的地方是: String a=new String("foo"); String b=new String("foo"); 则a==b将返回false。 根据前一帖说过,对象变量其实是一个...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    然 new 运算符返回对一个对象的引用,但与 C、C++中的指针不同,对象的引用是指 向一个中间的数据结构,它存储有关数据类型的信息以及当前对象所在的堆的地址, 而对于对象所在的实际的内存地址是不可操作的,这就保证...

    Java语言的科学与艺术(国外计算机科学经典教材)

    本书使用传记简介、引用以及哲学片段来突出计算的历史和理性背景,着重强调算法和问题解决,而今天的初级教科书通常忽略了这一点。 内容简介 自1995年首次发布以来,Java编程语言作为一种教学语言变得日益重要,现在...

    Java的六大问题你都懂了吗

    比较好理解的一点是:根据前一帖说过,对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身。a和b都使用了new操作符,意味着将在内存中产生两个内容为"foo"的字符串,既然是"两个",它们自然...

    Java 向下转型的意义

     其实向上转型和向下转型都是很重要的,可能我们平时见向上转型多一点,向上转型也比较好理解。  但是向下转型,会不会觉得很傻,我是要用子类实例对象,先是生成子类实例赋值给父类引用,在将父类引用向下强转...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    详解python中的 is 操作符

    大家可以与Java中的 == 操作符相互印证一下,加深一下对引用和对象的理解。原问题: Python为什么直接运行和在命令行运行同样语句但结果却不同,他们的缓存机制不同吗? 其实,高票答案已经说得很详细了。我只是再...

    【02-数据类型与运算符】

     •通俗一点,你可以把变量理解成容器,它可以装数据。 使用Scanner获取键盘输入  •使用Scanner类可以很方面地获取用户的键盘输入,Scanner是一个基于正则表达式的文本扫描器,它可以从文 件、输入流、...

    javascript中的 object 和 function小结

    于是乎简单整理了下面的一些概念性的东西,方便学习和理解,会结合一点 java面向对象的知识加以说明。 先了解几个概念: 1.首先 Object 在 ECMAScripe 中是指什么,在 ECMAScripe 中有5种简单数据类型:Undefined,...

    socket编程集萃

    事实上网络编程简单的理解就是两台计算机相互通讯数据而已,对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了,Java SDK提供一些相对简单的Api来完成这些工作。Socket就是其中之一,...

    Maven2 的新特性.7z

    Maven 无疑是相当成功的,这一点从越来越多的开源项目开始使用 Maven 就可以看出。Maven 取得成功的原因很简单:在简化构建脚本的同时,功能并没有缩水,反而有所增强;提供汇集项目信息的工具,并以相当友好的方式...

    JSP结合JavaBean生成静态页面示例

    1、为什么要做:节省不停操作数据库的开支,减少解析JSP页面的...为了简便,你这里就可以采用数据库,当然你要全部采用静态页面也可以,可能操作就复杂一点,不过,如果你能够完整理解这个示例,那其它的都不是问题。

    c#学习笔记.txt

    看完了前面几段,我的朋友提出了不同的意见:C#不是Java的Clone,它只是长得有些像Java而已,其实面向对象、中间语言什么的也不是什么新玩意儿,非Sun独创,有文为证:华山论剑:C#对Java。另外他对我上一集中说...

    hibernate3.04中文文档.chm

    符合Java习惯的关系数据库持久化 目录 前言 1. 翻译说明 2. 版权声明 1. 在Tomcat中快速上手 1.1. 开始Hibernate之旅 1.2. 第一个持久化类 1.3. 映射cat 1.4. 与Cat同乐 1.5. 结语 2. Hibernate入门 ...

    Tcl_TK编程权威指南pdf

    此外,在Xerox PARC工作,那里有许多语言和系统上的专家,我不得不强迫自己去理解Tcl/Tk的长处和弱点。我的许多同事都在他们的项目中采用了Tcl和Tk,但是他们也很快指出了它的缺点。因此,我就总结了一套编程技巧以...

    asp.net知识库

    我对J2EE和.NET的一点理解 难分难舍的DSO(一) InternalsVisibleToAttribute,友元程序集访问属性 Essential .NET 读书笔记 [第一部分] NET FrameWork的Collections支持 .NET的反射在软件设计上的应用 关于跨程序集...

Global site tag (gtag.js) - Google Analytics