YaxuSong

代码的世界我不懂.

  • 主页
  • 随笔
  • JAVA
  • Linux
  • ATLASSIAN
  • 简历
搜索 友请链接 关于我

YaxuSong

代码的世界我不懂.

  • 主页
  • 随笔
  • JAVA
  • Linux
  • ATLASSIAN
  • 简历

《Thinking in java》读书笔记(14)

2017-07-14

第三章 操作符

3.4赋值

赋值使用操作符“=”,它的意思是将右边的值,赋值给左边。

1
a = 4;

对基本对象的赋值是简单的,基本类型存储了实际的值,而并非指向一个对象的引用。如a=b,那么b的值就给了a,但是修改a之后,b不受影响。

对一个对象进行操作时,我们真正操作的是对对象的引用。所以倘若“将一个对象赋值给另一个对象”,实际是将“引用”从一个地方复制到另一个地方。这意味着假若对对象使用c=d,那么c和d都指向原本只有d指向的那个对象。下边是一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Tank{
int level;
}
public class Assignment {
public static void main(String args[]){
Tank t1 = new Tank();
Tank t2 = new Tank();
t1.level=9;
t2.level=47;
System.out.println("1: t1.level: " + t1.level+
", t2.level: " + t2.level);
t1=t2;
System.out.println("2: t1.level: " + t1.level+
", t2.level: " + t2.level);
t1.level=27;
System.out.println("3: t1.level: " + t1.level+
", t2.level: " + t2.level);

}
}

程序输出Output:

1: t1.level: 9, t2.level: 47
2: t1.level: 47, t2.level: 47
3: t1.level: 27, t2.level: 27

原本t1包含的对对象的引用,是指向一个值为9的对象。在对t1赋值的时候,这个引用被覆盖,也就是丢失了,而那个不再被引用的对象由“垃圾回收器”自动清理。
这种特殊的现象通常称作“别名现象”,是Java操作对象的基本方式。在这个例子中,如果想避免别名问题应该怎么办呢?可以这样写:

1
t1.level = t2.level;

3.4.1方法调用中的别名问题

将一个对象传递给方法时,也会产生别名问题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Letter{
char c;
}
public class PassObject{
static void f(Letter y){
y.c='z';
}
public static void main(String[] args){
Letter x = new Letter();
x.c = 'a';
System.out.println("1: x.c:" + x.c);
f(x);
System.out.println("2: x.c:" + x.c);
}
}

程序输出Output:

1: x.c:a
2: x.c:z

赏

谢谢你请我吃糖果

支付宝
微信
  • 读书笔记
  • Java

扫一扫,分享到微信

微信分享二维码
2017.07.18记
停更ThinKing in Java的读书笔记
  1. 1. 第三章 操作符
    1. 1.1. 3.4赋值
      1. 1.1.1. 3.4.1方法调用中的别名问题
Like Issue Page
Error: Not Found
Login with GitHub
Styling with Markdown is supported
Powered by Gitment
© 2019 YaxuSong
Hexo Theme Yilia by Litten
  • 搜索
  • 友请链接
  • 关于我

tag:

  • 随笔
  • ATLASSIAN
  • 读书笔记
  • Java
  • Linux
  • JAVA

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • jira-managing-project-permissions

    2018-08-22

    #读书笔记

  • SpringBoot使用Swagger2

    2018-06-10

    #JAVA

  • Redisson 的介绍与使用

    2018-06-04

    #JAVA

  • Spring Boot 关乎java程序员

    2018-05-16

    #JAVA

  • Kafka在SpringBoot 2.0中的整合-1

    2018-05-07

    #JAVA

  • 微信公众号后台在SpringBoot2.0中的实现(上)

    2018-05-01

    #JAVA

  • Kafka在SpringBoot 2.0中的整合

    2018-04-23

    #Java

  • Redis在SpringBoot 2.0中的整合

    2018-04-18

    #Java

  • 好久都没有发表博客了

    2018-04-18

    #随笔

  • 使用Xtrabackup备份InnoDB(MySQL)

    2018-03-06

    #Linux

  • LinuxMySQL的安装(3)

    2018-02-08

    #Linux

  • Linux下MySQL主从数据库的安装与配置

    2018-02-08

    #Linux

  • Linux离线安装Nginx

    2018-02-07

    #Linux

  • Linux定时任务备份mysql和数据

    2018-02-06

    #ATLASSIAN#Linux

  • 回家过年前一周

    2018-02-05

    #随笔

  • LinuxMySQL的安装(2)

    2018-02-02

    #ATLASSIAN#Linux

  • Atlassian产品设置JVM

    2018-01-31

    #读书笔记

  • Crucible安装

    2018-01-29

    #读书笔记

  • 当璀璨速朽成尘埃

    2018-01-25

    #读书笔记

  • JIRA高于7.2版本导出xlsx格式的EXCEL文件

    2018-01-22

    #ATLASSIAN

  • Linux离线git的安装

    2018-01-17

    #Linux

  • 终于复活啦

    2018-01-15

    #随笔

  • LinuxMySQL的安装(1)

    2018-01-15

    #ATLASSIAN#Linux

  • Bitbucket的安装

    2018-01-15

    #ATLASSIAN

  • JIRA修改license

    2018-01-11

    #ATLASSIAN

  • rsync的使用与配置

    2018-01-09

    #Linux

  • 最近电脑重装了,导致电脑里边的博客全没了

    2018-01-08

    #随笔

  • JIRA安装

    2017-12-15

    #ATLASSIAN

  • Nginx代理Atlassian产品(2):Use Domain:*.mydomain.com

    2017-12-13

    #ATLASSIAN

  • Nginx代理Atlassian产品(1):Use Domain:www.mydomain.com/*

    2017-12-13

    #ATLASSIAN

  • Atlassian产品使用单点登陆-SSO

    2017-12-13

    #ATLASSIAN

  • Atlassian产品安装环境准备-数据库(1):MySQL

    2017-12-11

    #ATLASSIAN

  • 《Thinking in java》读书笔记(23)

    2017-11-24

    #读书笔记#Java

  • 《Thinking in java》读书笔记(22)

    2017-11-24

    #读书笔记#Java

  • Java工程师成神之路

    2017-11-24

    #Java

  • say something to myself

    2017-11-23

    #随笔

  • 怀念那些我喜欢的经典

    2017-10-25

    #随笔

  • 《Thinking in java》读书笔记(21)

    2017-10-24

    #读书笔记#Java

  • 国庆快乐

    2017-10-01

    #随笔

  • 《Thinking in java》读书笔记(20)

    2017-09-30

    #读书笔记#Java

  • 《Thinking in java》读书笔记(19)

    2017-09-27

    #读书笔记#Java

  • 《Thinking in java》读书笔记(18)

    2017-09-18

    #读书笔记#Java

  • 《Thinking in java》读书笔记(17)

    2017-09-18

    #读书笔记#Java

  • 《Thinking in java》读书笔记(16)

    2017-09-11

    #读书笔记#Java

  • 回忆总是会使我泪流满面

    2017-09-05

    #随笔

  • 迷茫

    2017-09-01

    #随笔

  • 一个人的情人节

    2017-08-28

    #随笔

  • 没有什么事情是办不到的,只怕你没法战胜自己

    2017-08-23

    #随笔

  • 感觉最近有点霉运

    2017-08-07

    #随笔

  • 确实感觉还是有点小累的

    2017-08-04

    #随笔

  • 难受

    2017-08-01

    #随笔

  • 《Thinking in java》读书笔记(15)

    2017-08-01

    #读书笔记#Java

  • 感觉慢慢的步入正轨了

    2017-07-31

    #随笔

  • 每次写标题都很困难啊

    2017-07-24

    #随笔

  • 2017.07.18记

    2017-07-18

    #随笔

  • 《Thinking in java》读书笔记(14)

    2017-07-14

    #读书笔记#Java

  • 停更ThinKing in Java的读书笔记

    2017-07-11

    #读书笔记

  • 做决定看似简单其实很难

    2017-07-05

    #随笔

  • 《Thinking-in-java》读书笔记(13)

    2017-06-23

    #读书笔记#Java

  • 《Thinking in java》读书笔记(12)

    2017-06-22

    #读书笔记#Java

  • 《Thinking in java》读书笔记(11)

    2017-06-22

    #读书笔记#Java

  • 《Thinking in java》读书笔记(10)

    2017-06-21

    #读书笔记#Java

  • 《Thinking in java》读书笔记(9)

    2017-06-17

    #读书笔记#Java

  • 《Thinking in java》读书笔记(8)

    2017-06-15

    #读书笔记

  • 《Thinking in java》读书笔记(7)

    2017-06-14

    #读书笔记

  • 一些想法

    2017-06-14

    #随笔

  • 《Thinking in java》读书笔记(6)

    2017-06-12

    #读书笔记#Java

  • 《Thinking in java》读书笔记(5)

    2017-06-10

    #读书笔记#Java

  • 《Thinking in java》读书笔记(4)

    2017-06-07

    #读书笔记#Java

  • 决定

    2017-06-07

    #随笔

  • 《Thinking in java》读书笔记(3)

    2017-06-06

    #读书笔记#Java

  • 听完这首歌忘记所有的一切

    2017-06-05

    #随笔

  • 《Thinking in java》读书笔记(2)

    2017-06-04

    #读书笔记#Java

  • 《Thinking in java》读书笔记(1)

    2017-06-01

    #读书笔记#Java

  • 六一儿童节快乐

    2017-06-01

    #随笔

  • The mood may be better

    2017-05-31

    #随笔

  • NoTitle

    2017-05-27

    #随笔

  • 努力吧,少年

    2017-05-26

    #随笔

  • 想念那些日子

    2017-05-08

    #随笔

  • 此时此刻的心情

    2017-05-04

    #随笔

  • welcome

    2017-05-03

    #随笔

  • Leno's Blog
  • GitHub
  • CSDN博客
  • 国内站点(同站)
宋亚旭,就读于内蒙古大学软件工程专业,在大学期间就很喜欢写代码,现在在一家公司做Java后端工作。