`

jdk6.0从入门到精通-----chapter2--参数传递,Map的用法

阅读更多
java只有值传递,传递的是存储在栈中的值,对基本数据类型,传递的 是本身,对对象类型,因为栈中存储的是对象的引用,真正的对象是存储在堆里的,所以传递的其实是对象的引用。

值传递的例子
package parameterpass;

import java.util.ArrayList;

public class ValuePass {
	public static void main(String[] args) {
		System.out.println(Thread.currentThread().getName());
		StackTraceElement e[] = Thread.currentThread().getStackTrace();
		for (int i = 0; i < e.length; i++) {
			System.out.println("线程"+e[i]);
		}
		System.out.println(Thread.getAllStackTraces()); //打印出所有线程

		ArrayList<Integer> arr = new ArrayList<Integer>();
		arr.add(0, 78); //装箱
		int b = arr.get(0); //拆箱
		System.out.println("b=" + b); 
		
		
		int a = 0;
		new ValuePass().test(a);
		System.out.println("a=" + a); // a=0

	}

	private void test(int b) {
		b = 1;
	}
}


引用传递的例子
package parameterpass;

import cloneObject.Student;

public class ReferencePass//引用传递,java只有值传递,值存储在栈里,对基本类型,存值,引用类型存放地址
{
  public static void main(String[] args)
  {
    Student student=new Student();
    student.id="0001";
    student.name="Tom";
    new ReferencePass().test(student);
    System.out.println("student.id="+student.id); //student.id=0002
    System.out.println("student.name="+student.name); //student.name=Jike
  }
  
  private void test(Student student)
  {
    student.id="0002";
    student.name="Jike";
  }
}


TreeMap的用法,自动排序
package mapTest;

import java.util.SortedMap;
import java.util.TreeMap;
import java.util.Set;
//SortedMap是接口,可以使map自动排序,TreeMap是其实现类
public class TestTreeMap
{
    public static void main(String[] args)
    {
    	  SortedMap<String,String> map=new TreeMap<String,String>();
    	  
    	  //插入键值对
    	  map.put("bkey","bvalue");
    	  map.put("dkey","dvalue");
    	  map.put("ckey","cvalue");
    	  map.put("akey","avalue");
    	  
    	  //获取键值Set
    	  Set<String> keySet=map.keySet(); 
    	  //将键值Set转成数组
    	  Object[] keyArray=keySet.toArray();
    	  //按照键值依序获取值对象
    	  for(int i=0; i<keyArray.length; i++)
    	      System.out.println( "key="+(String)keyArray[i]+"; value="+map.get((String)keyArray[i]) );
    }
    
}



package mapTest;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
//LinkedHashMap保持插入元素的顺序,map不能保证键值对的顺序与插入的顺序一致
public class TestLinkedMap
{
    public static void main(String[] args)
    {
        LinkedHashMap<String, String> map=new LinkedHashMap<String, String>();
        
        //插入键值对
          map.put("akey","avalue");
    	  map.put("bkey","bvalue");
    	  map.put("ckey","cvalue");
    	  map.put("dkey","dvalue");
    	  
    	  //获取键值Set
    	  Set<String> keySet=map.keySet(); 
    	  //将键值Set转成数组
    	  Object[] keyArray=keySet.toArray();
    	  //按照键值依序获取值对象
    	  for(int i=0; i<keyArray.length; i++)
    	      System.out.println( "key="+(String)keyArray[i]+"; value="+map.get((String)keyArray[i]) );

    	//    结果:
//    	key=akey; value=avalue
//    	key=bkey; value=bvalue
//    	key=ckey; value=cvalue
//    	key=dkey; value=dvalue	
    	
    	
//      一般的map   
//        Map<String, String> map=new HashMap<String, String>();
//    	  //插入键值对
//          map.put("akey","avalue");
//    	  map.put("bkey","bvalue");
//    	  map.put("ckey","cvalue");
//    	  map.put("dkey","dvalue");
//    	  
//    	  //获取键值Set
//    	  Set<String> keySet=map.keySet(); 
//    	  //将键值Set转成数组
//    	  Object[] keyArray=keySet.toArray();
//    	  //按照键值依序获取值对象
//    	  for(int i=0; i<keyArray.length; i++)
//    	      System.out.println( "key="+(String)keyArray[i]+"; value="+map.get((String)keyArray[i]) );
    
//    	  结果:顺序不一定
//    	  key=dkey; value=dvalue
//    	  key=ckey; value=cvalue
//    	  key=akey; value=avalue
//    	  key=bkey; value=bvalue
    
    
    }
}
分享到:
评论

相关推荐

    jdk6.0从入门到精通-----chapter17动态编程

    《JDK 6.0从入门到精通——Chapter 17 动态编程》 在Java编程领域,JDK 6.0版本引入了许多新特性,其中动态编程是提升开发效率和灵活性的重要方面。本章将深入探讨动态编程的概念、用途以及如何在JDK 6.0中利用这些...

    jdk6.0从入门到精通-----chapter18与动态语言结合

    标题中的“jdk6.0从入门到精通-----chapter18与动态语言结合”指的是Java开发工具包(JDK)6.0版本中的一个章节,主要探讨了如何将Java与动态编程语言集成。在Java 6中,引入了一个重要的特性,即Java平台标准版6...

    jdk6.0从入门到精通-----chapter7线程

    《JDK 6.0线程入门到精通——Chapter 7》 在Java开发中,线程是程序执行的最小单元,它使得一个程序能够同时处理多个任务,从而提高了程序的效率和响应性。在JDK 6.0中,线程的管理和使用有了更加完善的特性,对于...

    (源码下载)jdk6.0从入门到精通-----chapter2--输入输出,克隆对象

    标题 "(源码下载)jdk6.0从入门到精通-----chapter2--输入输出,克隆对象" 提供了我们要探讨的主题,即Java中的输入输出流(I/O Stream)和对象克隆。在这个章节中,我们将深入理解这两个关键概念。 **输入输出流...

    jdk6.0从入门到精通-----chapter5网络编程 新I/O(含源码下载)

    在Java编程领域,JDK(Java Development Kit)是开发和运行Java应用程序的...总的来说,"JDK6.0从入门到精通-----chapter5网络编程 新I/O"是一个极好的学习资源,无论你是初学者还是有经验的开发者,都能从中获益良多。

    jdk6.0从入门到精通-----chapter8并发多线程(1)(源码下载)

    本章“jdk6.0从入门到精通-----chapter8并发多线程(1)”着重讲解了Java 6中关于多线程的基本知识和实践技巧。通过源码下载,读者可以更直观地理解多线程的实现方式。 首先,我们要理解什么是多线程。在单线程环境...

    jdk6.0从入门到精通-----chapter4--文件目录操作

    本章节将深入探讨JDK 6.0中的文件和目录操作,这对于任何Java开发者来说都是必备的知识点。在实际项目中,我们需要频繁地与文件系统交互,例如读取、写入、移动或删除文件和目录,因此理解这部分内容至关重要。 ...

    jdk6.0从入门到精通-----chapter16反射机制-spring AOP

    当Spring容器管理对象时,它会自动查找匹配的依赖,并使用反射将其注入到目标对象的相应字段或方法中。 将反射与Spring AOP结合,我们可以创建更加灵活和可扩展的应用。例如,我们可以动态地发现并注册切面,或者在...

    jdk 6.0 jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008(微信开发平台开发JDK)

    微信开发平台开发工具 JDK jdk 6.0 jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008

    jdk-7u80-windows-x64安装包

    jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-...

    JDK6.0+中文文档-lytim24.part1.rar

    java6.0文档chm版,分成三部分,分别为JDK6.0+中文文档-lytim24.part1.rar、JDK6.0+中文文档-lytim24.part2.rar、JDK6.0+中文文档-lytim24.part3.rar

    官方JDK6.0中文版

    - 首先,从官方或可信渠道下载JDK 6.0的安装程序。 - 运行安装程序,按照提示完成安装过程。 - 配置环境变量,如JAVA_HOME指向JDK安装目录,PATH添加bin子目录,确保系统能够找到Java命令。 - 检验安装是否成功,...

    开发工具 jdk-8u121-windows-i586

    开发工具 jdk-8u121-windows-i586开发工具 jdk-8u121-windows-i586开发工具 jdk-8u121-windows-i586开发工具 jdk-8u121-windows-i586开发工具 jdk-8u121-windows-i586开发工具 jdk-8u121-windows-i586开发工具 jdk-8...

    java-jdk1.8-8u361-all-jdk-win-linux

    java-jdk1.8-8u361-all-jdk-win-linux 该压缩包中包含jdk1.8-8u361下windows版本和linux版本,其包含快速安装包和对应的jdk压缩包版本,具体内容如下: jdk-8u361-linux-aarch64.rpm jdk-8u361-linux-i586.rpm jdk-8...

    jdk-8u131-windows-x64

    jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-...

    JDK6.0u10b32-windows-

    这个是安装开发工具java jdk 有很多用途

    jdk-8u311-windows-x64.exe

    jdk-8u311-windows-x64.exe jdk-8u311-windows-x64.exe.zip jdk-8u311-windows-x64.exe jdk-8u311-windows-x64.exe.zip jdk-8u311-windows-x64.exe jdk-8u311-windows-x64.exe.zip jdk-8u311-windows-x64.exe jdk-8u...

    jdk-8u60-windows-i586-JDK1.8-32位

    jdk-8u60-windows-i586 jdk-8u60-windows-i586 jdk-8u60-windows-i586 jdk-8u60-windows-i586 jdk-8u60-windows-i586

    jdk1.8 jdk-8u5-windows-i586 32位官方正式版

    jdk1.8 jdk-8u5-windows-i586 32位官方正式版 jdk1.8 jdk-8u5-windows-i586 32位官方正式版

    mapstruct-jdk8-1.2.0.Final-API文档-中文版.zip

    赠送jar包:mapstruct-jdk8-1.2.0.Final.jar; 赠送原API文档:mapstruct-jdk8-1.2.0.Final-javadoc.jar; 赠送源代码:mapstruct-jdk8-1.2.0.Final-sources.jar; 赠送Maven依赖信息文件:mapstruct-jdk8-1.2.0....

Global site tag (gtag.js) - Google Analytics