java研究一个简单的算法碰到这种输出,哎,以前还真没注意还能这样......

求大神指定这种运行原理叫什么?????

package org.rui.util;

import java.util.HashMap;
import java.util.Map;

public class A
{

	public static void main(String[] args)
	{
		Map<String, String> m = new HashMap<String, String>();
		Map m2 = m;
		m2.put("a", "ava");
		System.out.println(m);

		//////////////
		B b = new B();
		B b2 = b;
		b2.setId(100);
		b2.setName("abc");

		b.setId(50);

		B b3=b2;
		b3.setName("B3");
		System.out.println(b);
		System.out.println(b2);
		System.out.println(b3);

	}

}
/***
 * output:
{a=ava}
B [id=50, name=B3]
B [id=50, name=B3]
B [id=50, name=B3]
 */
package org.rui.util;

import java.util.HashMap;
import java.util.Map;

public class B
{
	private Integer id;
	private String name;

	public Integer getId()
	{
		return id;
	}

	public void setId(Integer id)
	{
		this.id = id;
	}

	public String getName()
	{
		return name;
	}

	public void setName(String name)
	{
		this.name = name;
	}

	@Override
	public String toString()
	{
		return "B [id=" + id + ", name=" + name + "]";
	}

	public static void main(String[] args)
	{

		Map m=new HashMap();
		Map m2=m;
		m2.put("m2","m2v");

	    Map<String,String> m3=null;

		System.out.println("---------------------------------");

		m3=new HashMap<String,String>();
		m3.put("m3_1", "m3v_1");
		m2.put("m2add3_1", m3);
		m2=m3;

		System.out.println("m:"+m);
		System.out.println("m2:"+m2);
		System.out.println("m3:"+m3);
		System.out.println("---------------------------------");

		m3=new HashMap<String,String>();
		m3.put("m3_2", "m3v_2");
		m2.put("m2add3_2", m3);
		System.out.println("m2xx:"+m2);
		m2=m3;

		System.out.println("m:"+m);
		System.out.println("m2:"+m2);
		System.out.println("m3:"+m3);

	}

}
/***output:
 ---------------------------------
m:{m2add3_1={m3_1=m3v_1}, m2=m2v}
m2:{m3_1=m3v_1}
m3:{m3_1=m3v_1}
---------------------------------
m2xx:{m2add3_2={m3_2=m3v_2}, m3_1=m3v_1}
m:{m2add3_1={m2add3_2={m3_2=m3v_2}, m3_1=m3v_1}, m2=m2v}
m2:{m3_2=m3v_2}
m3:{m3_2=m3v_2}

 */
时间: 2025-01-02 16:05:38

java研究一个简单的算法碰到这种输出,哎,以前还真没注意还能这样......的相关文章

利用java实现一个简单的远程监控程序

一般的远程监控软件都是用c或者c++等语言开发的,而使用java如何来实现相同的功能呢. 首先我们先介绍一下一个简单的远程监控程序的实现原理. 功能一,远程屏幕监视 (1) 必须要有监控端与被监控端,而且程序保持启动. (2) 被监控端获取本机的屏幕截屏发图给监控端. (3) 监控端在本地窗口中显示被监控端发送过来的图像. (4) (2)(3)步骤重复执行,这时在监控端即可实时监视到被监控端的桌面操作了. 功能二,远程控制 (1) 必须要有监控端与被监控端,而且程序保持启动. (2) 在监控端监

java创建一个简单的小框架frame

import java.awt.*; import javax.swing.*; public class SimpleFrameTest { public static void main(String[] args) { EventQueue.invokeLater(new Runnable(){ // 开一个线程 public void run() { SimpleFrame frame = new SimpleFrame(); frame.setTitle("记事本"); //

一个简单的算法,定义一个长度为n的数组,随机顺序存储1至n的的全部正整数,不重复。

前些天看到.net笔试习题集上的一道小题,要求将1至100内的正整数随机填充到一个长度为100的数组,求一个简单的算法. 今天有空写了一下.代码如下,注释比较详细: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Text.RegularExpressions; 6 7 namespace TestNumber 8 { 9 cl

Java写一个简单学生管理系统

其实作为一名Java的程序猿,无论你是初学也好,大神也罢,学生管理系统一直都是一个非常好的例子,初学者主要是用数组.List等等来写出一个简易的学生管理系统,二.牛逼一点的大神则用数据库+swing来做一个有界面的学生管理系统.其实都并不会太难. 今天我就先写一个简单的用List来实现学生管理系统: 首先,管理系统是针对学生对象的,所以我们先把学生对象就写出来: package bean; public class Student { String name; String studentId;

java实现一个简单的Web服务器

Web服务器也称为超文本传输协议服务器,使用http与其客户端进行通信,基于java的web服务器会使用两个重要的类, java.net.Socket类和java.net.ServerSocket类,并基于发送http消息进行通信. 这个简单的Web服务器会有以下三个类: *HttpServer *Request *Response 应用程序的入口在HttpServer类中,main()方法创建一个HttpServer实例,然后调用其await()方法,顾名思义,await()方法会在指定端口

如何设计Java框架----一个简单的例子【翻译】

原文:http://www.programcreek.com/2011/09/how-to-design-a-java-framework/ 原文和翻译都只是参考,如有不对,欢迎指正. 你可能会好奇框架是如何工作的,我会创建一个简单的框架来演示一下. 框架的目标首先,为什么我们需要框架而不是库呢?框架的目标是定义一个让开发者实现基于个性化需求的某些功能的过程,换句话说,框架定义了骨架而开发者进行填补. 简单的框架在下面的例子中,前三个类是框架的一部分,第四个类是该框架的客户端代码. Main.j

Java实现一个简单的缓存方法

缓存是在web开发中经常用到的,将程序经常使用到或调用到的对象存在内存中,或者是耗时较长但又不具有实时性的查询数据放入内存中,在一定程度上可以提高性能和效率.下面我实现了一个简单的缓存,步骤如下. 创建缓存对象EntityCache.java public class EntityCache {   /**    * 保存的数据    */   private Object datas;   /**    * 设置数据失效时间,为0表示永不失效    */   private long time

java实现一个简单的计数器

package com.fengunion.sf; import org.junit.platform.commons.util.StringUtils; import java.util.HashMap;import java.util.Map;import java.util.Random; public class CountUtil { private static Map<String, Integer> map = null; static { map = new HashMap&

利用java实现一个简单的链表结构

定义: 所谓链表就是指在某节点存储数据的过程中还要有一个属性用来指向下一个链表节点,这样的数据存储方式叫做链表 链表优缺点: 优点:易于存储和删除 缺点:查询起来较麻烦 下面我们用java来实现如下链表结构: 首先定义节点类: 复制代码package LinkTest;/** 链表节点类 @author admin */public class Node {private int value;//存储数据private Node next;//下一个节点/** 定义构造器 @param vlau