声明和实例化:

声明:ArrayList a, 仅仅只是声明了一个list变量,其未来作用相当于C++中的引用变量,亦或者相当于一个对象块的索引,但并未为其分配具体的完整的对象所需要的内存空间,其所分配的空间仅仅只是"a"变量所需空间;

实例化:实例化的过程是为对象分配完整的所需内存空间。此时,对象a才是该list的一个实例,然后将分配的内存地址返回给定义的变量“a”;

java的实例化:

1. 使用new关键词创建对象(c++)。

2.通过jdk中提供的工厂方法返回对象。如String str = String.vlaueOf("test");

3.通过反射机制。最经常使用的则是JDBC: String driver = "com.mysql.jdbc.Driver";Class.forName(driver);

4.通过类的clone()方法。

5.通过反序列化手段。

1.对象引用:

import java.util.ArrayList;
import java.util.List; public class Test { public static void main(String[] args) {
List<String> list1 = new ArrayList<String>();
list1.add(new String("1"));
list1.add(new String("2")); System.out.println("list1:" + list1); List<String> list2 = new ArrayList<String>();
list2.add(new String("1")); System.out.println("list2:" + list2); List<String> listTemp = new ArrayList<>();
listTemp = list1;
listTemp.removeAll(list2); System.out.println("操作后的list1:" + list1);
}
}

测试结果:

此时list2对象相当与list1对象的引用,而并不是将list1对象的值单纯的传递给list2对象。即:list2对象的操作将直接改变list1对象。如list2.add(new String("3"));结果list1中也包含了“3”;

2.单纯的把值赋予对方方式多种。如下:

方式一:

import java.util.ArrayList;
import java.util.List; public class Test { public static void main(String[] args) {
List<String> list1 = new ArrayList<String>();
list1.add(new String("1"));
list1.add(new String("2")); System.out.println("list1:" + list1); List<String> list2 = new ArrayList<String>();
list2.add(new String("1")); System.out.println("list2:" + list2); List<String> listTemp = new ArrayList<>(list1);
listTemp.removeAll(list2); System.out.println("操作后的list1:" + list1);
}
}

测试结果:

方式二:

import java.util.ArrayList;

public class Test {

    public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<String>();
list1.add(new String("1"));
list1.add(new String("2")); System.out.println("list1:" + list1); ArrayList<String> list2 = new ArrayList<String>();
list2.add(new String("1")); System.out.println("list2:" + list2); ArrayList<String> listTemp = (ArrayList<String>) list1.clone();
listTemp.removeAll(list2); System.out.println("操作后的list1:" + list1);
}
}

测试结果:

方式三:

import java.util.ArrayList;
import java.util.List; public class Test { public static void main(String[] args) {
List<String> list1 = new ArrayList<String>();
list1.add(new String("1"));
list1.add(new String("2")); System.out.println("list1:" + list1); List<String> list2 = new ArrayList<String>();
list2.add(new String("1")); System.out.println("list2:" + list2); List<String> listTemp = new ArrayList<>();
listTemp.addAll(list1);
listTemp.removeAll(list2); System.out.println("操作后的list1:" + list1);
}
}

测试结果:

方式四:

import java.util.ArrayList;
import java.util.List; public class Test { public static void main(String[] args) {
List<String> list1 = new ArrayList<String>();
list1.add(new String("1"));
list1.add(new String("2")); System.out.println("list1:" + list1); List<String> list2 = new ArrayList<String>();
list2.add(new String("1")); System.out.println("list2:" + list2); List<String> listTemp = new ArrayList<>();
for(String str : list1){
listTemp.add(str);
}
listTemp.removeAll(list2); System.out.println("操作后的list1:" + list1);
}
}

测试结果:

java将一个List赋值给另一个List的更多相关文章

  1. java将一个List赋值给另一个List的4种方法

    编辑 删除 声明:ArrayList a, 仅仅只是声明了一个list变量,其未来作用相当于C++中的引用变量,亦或者相当于一个对象块的索引,但并未为其分配具体的完整的对象所需要的内存空间,其所分配的 ...

  2. java将一个javabean转化为另一个javabean

    公司的项目是用webservice来进行前后台对接,启动后台后需要刷服务才能在前台生成对应的代码,但是有一个很恶心的地方,它给每个service都生成了一个model,于是出现后台只有一个javabe ...

  3. Oracle下批量将一个用户的所有表的select权限赋值给另外一个用户

    起因 为什么会有这篇文章呢? 因为最近在做项目的时候遇到一个问题...实际生产环境中程序datasource登陆的Oracle数据库用户user1不是我们创建的.这个用户没有访问我们业务表的权限(因为 ...

  4. java中将一个字符数组赋值给另一个,两者同时变化

    java中将一个字符数组赋值给另一个,两者的变化怎么是同步的?怎么才能让他们独立开? 比如有一个int[][] a 已经存在值,现在定义int[][] b=a;之后改变a的值,为何b也跟着改变?怎么才 ...

  5. 通过反射将一个java对象的属性值转换为一个Map

    将一个java对象的属性值转换为一个Map: import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.P ...

  6. JAVA学习笔记--赋值(“=”)

    参考来源:<java编程思想(第四版)> 见第三章3.4节 基本数据类型存储了实际的数值,并非指向一个对象的引用,故其赋值,就是直接将一个地方的内容复制到了另一个地方.例如,对基本数据类型 ...

  7. 将一个 JavaBean 对象转化为一个 Map

    package com.loan.modules.common.util; import java.beans.BeanInfo; import java.beans.IntrospectionExc ...

  8. atitit.java给属性赋值方法总结and BeanUtils 1.6.1 .copyProperty的bug

    atitit.java给属性赋值方法总结and BeanUtils 1.6.1 .copyProperty的bug 1. core.setProperty(o, "materialId&qu ...

  9. atitit.java方法属性赋值and BeanUtils 1.6.1 .copyProperty的bug

    atitit.java分配给属性值方法and BeanUtils 1.6.1 .copyProperty的bug 1. core.setProperty(o, "materialId&quo ...

随机推荐

  1. Mongodb中的 原子性 隔离性

    读写锁 Mongodb使用读写锁来来控制并发操作: 当进行读操作的时候会加读锁,这个时候其他读操作可以也获得读锁.但是不能或者写锁. 当进行写操作的时候会加写锁,这个时候不能进行其他的读操作和写操作. ...

  2. 廖雪峰Java8JUnit单元测试-2使用JUnit-4超时测试

    1.超时测试 可以为JUnit的单个测试设置超时: 超时设置1秒:@Test(timeout=1000),单位为毫秒 2.示例 Leibniz定理:PI/4= 1 - 1/3 + 1/5 - 1/7 ...

  3. android全屏/沉浸式状态栏下,各种键盘挡住输入框解决办法

    https://blog.csdn.net/smileiam/article/details/69055963

  4. 2、Redis 底层原理:Cluster 集群部署与详解

    Redis 简介 Redis 提供数据缓存服务,内部数据都存在内存中,所以访问速度非常快. 早期,Redis 单应用服务亦能满足企业的需求.之后,业务量的上升,单机的读写能力满足不了业务的需求,技术上 ...

  5. 用户层APC队列使用

    一 参考 https://docs.microsoft.com/en-us/windows/desktop/api/processthreadsapi/nf-processthreadsapi-que ...

  6. Jenkins服务使用nginx代理服务器做负载均衡

    学习nginx代理服务器做负载均衡的使用 在本地安装Nginx 1.下载nginx http://nginx.org/en/download.html         下载稳定版本,以nginx/Wi ...

  7. vue-cli 发布部署IIS

    有些时候我们的服务器不用的是node,也许是IIS,这样就需要把工程构建出来,与IIS集成. 构建的命令如下 cnpm run build 将其中的dist文件夹拷贝出来,放到IIS的发布目录,在浏览 ...

  8. JS——页面带参数跳转

    #index.html window.location.href = "../home.html?value=" + rec_value; #home.html <scrip ...

  9. Google推出了Python最牛逼的编辑器

    环境配置对于大多数人来说都是拦路虎,我们小白往往不知道: 怎么正确的安装 不知道选择什么 怎么安装常用的第三方库 ... Google推出了一个在线的网站 https://colab.research ...

  10. this 指向详细解析(箭头函数)

    前言 this 指向问题是入坑前端必须了解知识点,现在迎来了ES6时代,因为箭头函数的出现,所以感觉有必要对 this 问题梳理一下,遂有此文 在非箭头函数下, this 指向调用其所在函数的对象,而 ...