1.private ,protected,static不能用来修饰interface。

2.java在处理基本数据类型(比如int ,char,double)时,都是採用按值传递的方式运行。除此之外的其他类型都是按引用传递的方式运行。对象除了在函数调用时时引用传递,在使用“=”赋值时也是採用引用传递。

3.怎样在java中进行对象的复制。而不是引用。举例:

class Obj implements Cloneable{
private int a=0;
public int getA(){
return a;
}
public void setA(int b){
this.a=b;
}
public void changedA(){
this.a=1;
}
public Object clone(){
Object o=null;
try{
0=(Obj)super.clone();
}catch(CloneNotSupportedException e){
e.printStatckTrace();
}
return o;
}
}
public class TestRef{
public static void main(String args[]){
Obj a= new Obj();
Obj b=(Obj)a.clone();
b.changedA();
System.out.println("a:"+a.getA());
System.out.println("b:"+b.getA());
}
}

程序执行结果为:

a:0

b:1

因此要赋值一个类,必须实现Cloneable接口。步骤:

(1)实现clone的累首先要继承Cloneable接口。

Cloneable接口实质是一个标识接口(没有不论什么方法,即空接口)

(2)在类中重写Object类的clone()方法。

(3)在clone()方法中调用super.clone().

(4)把浅复制的引用指向原型对象新的克隆体。

当类中有除基本数据以外的其他复杂对象属性时,在重写clone()方法时要对非基本类型的属性完毕深复制。举比例如以下:

class Obj implements Cloneable{
private Date birthday = new Date();
private int a=0;
public int getA(){
return a;
}
public void setA(int b){
this.a=b;
}
public void changedA(){
this.a=1;
}
public Date getDate(){
return birthday();
}
public void setDate(Date date){
this.birthday = date;
}
public void changeDate(){
this.birthday.setMonth(4);
}
public Object clone(){
Object o=null;
try{
0=(Obj)super.clone();
}catch(CloneNotSupportedException e){
e.printStatckTrace();
}
//实现深复制
o.birthday=(Date)this.getDate().clone();
return o;
}
}
public class TestRef{
public static void main(String args[]){
Obj a= new Obj();
Obj b=(Obj)a.clone();
b.changedA();
System.out.println("a:"+a.getA());
System.out.println("b:"+b.getA());
}
}

浅复制和深复制的差别:

浅复制:被复制对象的全部变量都含有与原来对象同样的值,而全部其它对象的引用仍然指向原来的对象同样的值,而全部对其它对象的引用仍然指向原来的对象。

深复制:被复制对象的全部变量都含有与原来对象同样的值。出去那些引用其它对象的变量。

那些引用其它对象变量将指向被复制的新对象,而不再是原有的那些被引用的对象都复制了一遍。

Java学习笔记----你可能不知道那些知识,对象复制与引用的更多相关文章

  1. Java学习笔记(二)——类和对象

    [1]类是模子,确定对象将会拥有的特征(属性)和行为(方法). [2]类的特点:类是对象的类型: 具有相同属性和方法的一组对象的集合. [3]属性:对象具有的各种特征(每个对象的每个属性都拥有特定值) ...

  2. Effictive Java学习笔记1:创建和销毁对象

    建议1:考虑用静态工厂方法代替构造器 理由:1)静态方法有名字啊,更容易懂和理解.构造方法重载容易让人混淆,并不是好主意 2)静态工厂方法可以不必每次调用时都创建一个新对象,而公共构造函数每次调用都会 ...

  3. Java学习笔记【四、类、对象、接口】

    编程语言的发展 机器语言 过程语言 面向对象编程--封装.继承.多态 关键字 extends implements override overload super this static abstra ...

  4. Java学习笔记【一、环境搭建】

    今天把java的学习重新拾起来,一方面是因为公司的项目需要用到大数据方面的东西,需要用java做语言 另一方面是原先使用的C#公司也在慢慢替换为java,为了以后路宽一些吧,技多不压身 此次的学习目标 ...

  5. java学习笔记之基础篇

    java选择语句之switch   //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...

  6. 20145330《Java学习笔记》第一章课后练习8知识总结以及IDEA初次尝试

    20145330<Java学习笔记>第一章课后练习8知识总结以及IDEA初次尝试 题目: 如果C:\workspace\Hello\src中有Main.java如下: package cc ...

  7. JAVA学习笔记—review基本知识[反射与异常]

    JAVA学习笔记—review基本知识[反射与异常] 1.异常: 1.1异常的分类: Java会将所有的异常封装成对象,其根本父类为Throwable. Throwable有两个子类:Error 和E ...

  8. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  9. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

随机推荐

  1. 00C#

    C# C#(读作“See Sharp”)是一种简单.现代.面向对象且类型安全的编程语言.C# 起源于 C 语言家族,因此,对于 C.C++ 和 Java 程序员,可以很快熟悉这种新的语言.C# 已经分 ...

  2. Danfoss Motor - Automotive Motor: What Sensors Are There?

    The   Danfoss Motor     states that the motor sensor control system is the heart of the entire autom ...

  3. PHP 下基于 php-amqp 扩展的 RabbitMQ 简单用例 (三) -- Header Exchange

    此模式下,消息的routing key 和队列的 routing key 会被完全忽略,而是在交换机推送消息和队列绑定交换机时, 分别为消息和队列设置 headers 属性, 通过匹配消息和队列的 h ...

  4. 第2节 mapreduce深入学习:16、17、map端的join算法的实现

    map端的join算法,适用于小表join大表的时候,一次性把小表的数据全部装载到内存当中来: 代码: MapJoinMain: package cn.itcast.demo5.mapJoin; im ...

  5. react之webpack

    1. 下载相关模块包 * 创建package.json ``` npm init ``` * react相关库 package-lock.json ``` npm install react reac ...

  6. jquery的$().each,$.each的区别02

    在jquery中,遍历对象和数组,经常会用到$().each和$.each(),两个方法.两个方法是有区别的,从而这两个方法在针对不同的操作上,显示了各自的特点. $().each,对于这个方法,在d ...

  7. 创建Tensor

    目录 创建Tensor numpy, list numpy list zeros, ones, fill zeros ones fill random 打乱idx后,a和b的索引不变 constant ...

  8. 【转载】什么是Zero-Copy

    转载:https://blog.csdn.net/u013256816/article/details/52589524 概述 考虑这样一种常用的情形:你需要将静态内容(类似图片.文件)展示给用户.那 ...

  9. WSS、SSL 和 https 之间的关系

    SSL SSL(Secure Socket Layer,安全套接层) 简单来说是一种加密技术, 通过它, 我们可以在通信的双方上建立一个安全的通信链路, 因此数据交互的双方可以安全地通信, 而不需要担 ...

  10. 7-14 电话聊天狂人(25 分)(Hash表基本操作)

    7-14 电话聊天狂人(25 分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10​5​​),为通话记录条数.随后N行,每行给出一条通话记录.简单 ...