Java中的别名现象

public class beiming {

    /**
     * @param 一个类的实例如果用等号直接相连,那么两个实例指向同一个对象.     * 这样他们调用的属性,或方法就会一直指向左边的实例.有变的会失效.    *   *解决的方法是需要让属性相等时调用属性然后用等号相连,这样就不会出现上述现象.       *看例子
     */
        float tom;
    public static void main(String[] args) {

        beiming b1 = new beiming();
        beiming b2 = new beiming();

        b1.tom = (float) 12.00;
        b2.tom = (float) 345.00;

        System.out.println("b1:tom="+b1.tom+"\n"+"b2:tom="+b2.tom);
     // b1 = b2;
        b1.tom = b2.tom; //解决方法

        System.out.println("b1:tom="+b1.tom+"\n"+"b2:tom="+b2.tom);

        b2.tom = (float) 34355.00;

        System.out.println("b1:tom="+b1.tom+"\n"+"b2:tom="+b2.tom);
    }

}

将一个对象传入方法时也会产生别名现象

public class beiming {

    static void f(letter y){  //新建一个静态方法,对传入对象的属性进行赋值
        y.woca = "静态";
    }
    public static void main(String[] args) {

        letter l = new letter(); //新建一个对象
        l.woca = "新增加的实例的woca属性"; //对该对象进行赋值.
        System.out.println("woca属性的内容是:"+l.woca);

        f(l); //调用方法,放入新建对象,然后输出,这时会发现,引用指向变了,这个需要主要避免.

        System.out.println(l.woca);
    }
}

class letter{ //新建类,用来beiming类测试
    String woca;
}
时间: 2024-10-19 18:20:02

Java中的别名现象的相关文章

java 中的别名机制

将一个对象赋值给另一个对象,实际是将引用从一个地方复制到另一个地方.这意味着假若对对象使用c=d,那么c和d都指向原本只有d指向的那个对象,下面这个例子将向大家阐释这点. package gao.com; class Test{ int number; } public class Assigment { public static void main(String[]args){ Test t1=new Test(); Test t2=new Test(); t1.number=25; t2.

Java方法调用中的别名处理

将一个对象传递到方法内部时,也会产生别名现象.//: PassObject.java// Passing objects to methods can be a bit tricky62class 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';

别名现象,java对象之间的相互赋值

请看一下代码 import java.util.*; class book{ static  int c = null; } public static void main(String[] args){ Book book1 = new book(); Book book2 = new book(); book1.c = 6; book2.c = 4; book1 = book2; } 以上,当book1和book2两个对象之间相互赋值的时候,那么当我们调用Book.c的时候,我们就会发现bo

Java中数组的特性

转载:http://blog.csdn.net/zhangjg_blog/article/details/16116613 数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具有固定的长度,并且在内存中占据连续的空间.在C,C++等语言中,数组的定义简洁清晰,而在Java中确有一些会让人迷惑的特性.本文就尝试分析这些特性. Java中的数组是对象吗? Java和C++都是面向对象的语言.在使用这些语言的时候,我们可以直接使用标准的类库,也可以使用组合和继承等面向对象的特性

深入分析 Java 中的中文编码问题 (文章来自网络)

许令波,developerWorks 中国网站最佳作者,现就职于淘宝网,是一名 Java 开发工程师.对大型互联网架构设计颇感兴趣,喜欢钻研开源框架的设计原理.有时间将学到的知识整理成文章,也喜欢记录下工作和生活中的一些思考.个人网站是:http://xulingbo.net. 为什么要编码 不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言.由于人类的语言有太多,因而表示这些语言

Java中堆内存和栈内存详解

Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用. 堆内存用于存放由new创建的对象和数组.在堆中分配的内存,由java虚拟机自动垃圾回收器来管理.在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中

Java中List转换为数组,数组转List

今天写代码遇到一个奇怪的问题,具体代码不贴出了,写一个简化的版本.如下:ArrayList<String> list=new ArrayList<String>();String strings[]=(String [])list.toArray(); 这样写代码个人觉得应该没什么问题,编译也没有问题.可是具体运行的时候报异常,如下:Exception in thread "main" java.lang.ClassCastException: [Ljava.l

[转]详细介绍java中的数据结构

详细介绍java中的数据结构 本文介绍的是java中的数据结构,本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类.一起来看本文吧! 也许你已经熟练使用了java.util包里面的各种数据结构,但是我还是要说一说java版数据结构与算法,希望对你有帮助. 线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中.本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类. C

java中的泛型(转)

什么是泛型? 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样. 可以在集合框架(Collection framework)中看到泛型的动机.例如,Map 类允许您向一个 Map 添加任意类的对象,即使最常见的情况是在给定映射(map)中保存某个特定类型(比如 String)的对象. 因为 Map.get(