美文网首页
java基础(1)-"="赋值时,类别名与方法别名

java基础(1)-"="赋值时,类别名与方法别名

作者: 莫须有的呓语 | 来源:发表于2020-04-16 21:33 被阅读0次

参考《on java 8》

基本类型的赋值

基本类型可以直接赋值,内存操作为直接复制一份值给"="前的变量,比如:

int a=13;  //输出a,值为13
char 字符变量1 = 'c';  //输出字符变量1,值为c
char 字符变量2 =字符变量1;  //输出字符变量2,值为c
/* 已经将值复制走,所以修改字符变量1,不会对 字符变量2 产生影响 */
字符变量1 ='x';  //输出  字符变量1 ,值为x;  
    //输出 字符变量2 , 值为c;

但是涉及到类与方法时就要注意:

类别名

对一个对象进行操作时,我们实际上操作的是它的引用。所以我们将右边的对象赋予给左边时,赋予的只是该对象的引用。此时,两者指向的堆中的对象还是同一个。

比如我们先创建一个 "人"类

public class person {
    public int age;
}

然后尝试改变它

public class MakePeople {
    public static void makeSomePeople() {
        //腾讯打工仔-马化腾
        Person ponyMa = new Person();
        //阿里退休员工-马云
        Person jackMa = new Person();

        ponyMa.age=36;
        jackMa.age=66;
        // 此时,马化腾36岁,马云66岁

        jackMa = ponyMa; //马云 和 马化腾 都指向了同一个  身份证 (内存地址)
        // 此时,马化腾36岁,马云36岁

        jackMa.age = 27;  // 马云 的 身份证 (内存地址) 中的年龄变成了  27岁
        System.out.println(ponyMa.age);
        //  因为共用一个 身份证 (内存地址), 马化腾的年龄也变成了27岁
    }
}

方法别名

下面案例中的方法 f() 似乎会在内部复制其参数 Letter y,但是其实是传递了一个引用。

class Letter {
    char c;
}

public class PassObject {
    public static void main(String[] args) {
        Letter x = new Letter();
        x.c = 'a';
        System.out.println("x.c: " + x.c);  //输出 x.c:a
        f(x);  
      /*调用时实际传递过去的是x变量的地址,
          所以修改地址中的值,会造成此处变量的改变*/
        System.out.println(" x.c: " + x.c);//输出  x.c:z
     }
 
    static void f(Letter y) {
        y.c = 'z';
    }
}

相关文章

  • java基础(1)-"="赋值时,类别名与方法别名

    参考《on java 8》 基本类型的赋值 基本类型可以直接赋值,内存操作为直接复制一份值给"="前的变量,比如:...

  • 全局配置文件-TypeAliases-别名

    typeAliases:为某个java类型起别名-->属性1)type:指定要其别名的类型全名称,默认别名就是类名...

  • type

    定义结构体 类型别名 使用类型别名定义出来的类型与原类型一样,即可以与原类型变量互相赋值,又拥有了原类型的所有方法...

  • Java学习day-60:MyBatis框架(2)

    一、MyBatis中标签和属性的配置: 1.TypeAliases标签配置别名: 用于给 java 类型定义别名,...

  • 别名 表别名 列别名

    别名 表别名 SELECT te.tname,GROUP_CONCAT(st.sname) FROM...

  • Java 别名(Aliasing)

    别名 (Aliasing) 别名,顾名思义,是有别于现在名字的另一个名字,但指的是不是同一个人或事物呢?比如,你上...

  • Golang学习笔记2——类型与变量

    1.基本类型 2.类型别名 设置类型别名后可以让代码可读性更强,一目了然这个变量做什么用的: 3.变量的声明与赋值...

  • mybatis typealias

    默认别名(3.4.6) 自定义别名 按类配置 按包配置 使用@Alias注解来指定别名 如果该包下的类没有使用@A...

  • linux指南9-3:别名,快捷键,历史,输出重定向,管道符

    别名与快捷键alias查看系统中所有的命令别名 alias 别名 = ‘原命令’设定命令别名 别名永久生效vi ~...

  • shell笔记

    1、Mac下shell别名,可以在/etc/bashrc 或者~/.bash_profile添加 2、变量赋值等号...

网友评论

      本文标题:java基础(1)-"="赋值时,类别名与方法别名

      本文链接:https://www.haomeiwen.com/subject/jvadvhtx.html