`

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
    
    
    }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics