JAVA 等号赋值简析
来源:互联网 发布:中国芯片 知乎 编辑:程序博客网 时间:2024/05/21 11:19
import java.util.ArrayList;import java.util.HashMap;public class AssignTest {/** * @param args */@SuppressWarnings("serial")public static void main(String[] args) {/*========first test (类和基本类型)==========*/Integer a = 10;Integer b = a;a = 5;String a1= "test";String b1 = a1;a1 = "123";System.out.println("b(10):" + b + "\nb1(test):" + b1);/*输出的数据为b(10):10 b1(test):test 说明基本数据类型传的值*/Person p = new Person();p.name = "wangwu";Person s = p;s.name = "zhaosan";System.out.println("Person p(wangwu):" + p.name);/*输出数据为:Person p(wangwu):zhaosan */ID i = new ID();i.id = 1;ID d = i;d.id = 3;System.out.println("ID i(1):" + i.id);/*输出数据为:ID i(1):3*/String s1 = new String("one");String s2 = s1;s1 = "two";System.out.println("s2(one):" + s2);/*输出的数据为:s2(one):one*///总结:自我构建的类,通过等号赋值时,传递指针,因此对赋值的对象修改,被赋值的对象内容也发生改变;//基本的数据类型,传递值。/*=========second test(容器和类中类对象赋值)=========*/ArrayList<String> arrStr = new ArrayList<String>();arrStr.add("one");arrStr.add("two");arrStr.add("three");ArrayList<String> arrStr1 = new ArrayList<String>();ArrayList<String> arrStr2 = new ArrayList<String>();arrStr1 = arrStr;arrStr2 = arrStr1;arrStr.add("four");System.out.println("attStr1(four):" + arrStr1 + "\n" + "attStr2(four):" + arrStr2);/*输出的数据为: * attStr1(four):[one, two, three, four] * attStr2(four):[one, two, three, four] * */arrStr2.add("five");System.out.println("arrStr1(five):" + arrStr1 + "\n" + "arrStr(five):" + arrStr);/*输出的数据为: * arrStr1(five):[one, two, three, four, five] * arrStr(five) :[one, two, three, four, five] * */Student stu = new Student();Person p_1 = new Person();stu.p = p_1;stu.p.name = new String("xiaoming");// = "xiaoming";System.out.println("p_1.name:" + p_1.name);/*输出数据为:p_1.name:xiaoming*/stu.id = 3;p_1.name = new String("xiaohong");//= "xiaohong";Person p_2 = new Person();//p_1 = p_2;//p_1存p_2 的地址 与 stu.p 存的是不同地址p_2 = p_1;//p_2 存p_1的地址 与stu.p 存的是相同地址p_2.name = new String("laoshi");//= "laoshi";System.out.println("stu.person.name:" + stu.p.name + "\r" + "p_1.name:" + p_1.name);/*输出数据为:stu.person.name:xiaohong p_1.name:laoshi (p_1 = p_2)*//*输出的数据为:stu.person.name:laoshi p_1.name:laoshi (p_2 = p_1)*/p_1.name = "FUCK";System.out.println("stu.person.name:" + stu.p.name + "\r" + "p_2.name:" + p_2.name);/*输出的结果为:stu.person.name:xiaohong p_2.name:FUCK (p_1 = p_2)*//*输出的结果为:stu.person.name:FUCK p_2.name:FUCK (p_2 = p_1)*///总结类和容器等号赋值时,传递是指针,当等号两边的任意一边做出修改另一个值也发生变化。//当等号两边任意一边的存的地址发生变化,另一边则保存一份原有的地址,两者将失去联系;/*============ third test (容器传值)===========*/ArrayList<String> arrTest = new ArrayList<String>();arrTest.add("111");arrTest.add("222");ArrayList<String> arrTest_1 = new ArrayList<String>(arrTest);//方法一arrTest_1.add("333");System.out.println("arrTest_1:" + arrTest_1 + "\narrTest:" + arrTest);/*输出的结果为: arrTest_1:[111, 222, 333] arrTest:[111, 222]*/@SuppressWarnings("unchecked")ArrayList<String> arrTest_2 = ( ArrayList<String>)arrTest.clone();//方法二arrTest.add("444");System.out.println("arrTest_2:" + arrTest_2 + "\narrTest" + arrTest);/*输出的结果为:arrTest_2:[111, 222] arrTest[111, 222, 444]*/ArrayList<HashMap<Integer, String>> mapInArr = new ArrayList<HashMap<Integer, String>>();HashMap<Integer, String> map = new HashMap<Integer, String> (){{put(1, "ONE");put(2, "TWO");}};mapInArr.add(map);ArrayList<HashMap<Integer, String>> temp = new ArrayList<HashMap<Integer, String>>(mapInArr);temp.add(new HashMap<Integer, String>(){{put(3, "THREE");put(4, "FOUR");}});System.out.println("temp: " + temp + "\nmapInArr" + mapInArr);/*输出的结果为: temp: [{1=ONE, 2=TWO}, {3=THREE, 4=FOUR}] mapInArr[{1=ONE, 2=TWO}]*/}}class Person{String name;}class ID{int id;}class Student{Person p;int id;}
0 0
- JAVA 等号赋值简析
- 对象用等号赋值
- JS 连续等号赋值问题
- Java中等号赋值的测试,包括嵌套List和嵌套类
- 关于java数组中某个元素用等号赋值给中间变量需要注意的问题。
- 等号(赋值)与双等号判断的坑
- 结构体可以用等号直接赋值
- 等号赋值与memcpy的效率问题
- Java等号的理解
- python中的对象赋值(等号赋值、深复制、浅复制)
- javascript中等号赋值究竟是复制还是在等号两边建立了联系
- 赋值运算符“=”与等号运算符“==”
- C++拷贝构造函数和等号赋值函数
- JavaScript的对象,赋值,即用等号赋值如x=y,也想Java类一样(Java基本数据类型不是这样的)是满足“箭头”黄金定律,如果修改x,y的值也随之改变
- 【Java】双等号和equals的区别
- java中equals()与等号的用法
- 【Java】双等号和equals的区别
- shell变量在赋值的的时候, 等号前后一定不要有空格
- HttpURLConnection学习
- EMMC 发展
- direct io/buffer io
- Android -- 经验分享
- 主流数据库总结分析一下,希望大家多补充问题
- JAVA 等号赋值简析
- 【Linux】Linux基础
- Struts2学习笔记——ActionWildcard(通配符)
- 第十六周项目二(1)字符串连接的完成
- Tomcat部署问题
- 使用python将豆瓣妹子的图片批量搬运到百度网盘
- 第16周 oj平台<问题 B: 有相同数字?>
- AFNetworking 2.0 -1016错误解决办法
- uboot命令和参数配置