A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题......

7 个回复

倒序浏览
顶个,求解答
回复 使用道具 举报
java没有引用传递,只有值传递。既然是值传递,那么搞懂“变量的值”是什么就ok了。Java有两种类型的变量:基本数据类型和引用类型。基本数据类型就是int short等8种,这些变量的值就是它们所代表的数值。引用类型就是指向Object及其子类对象的变量,这些变量的值就是它所指向对象所在的内存地址
回复 使用道具 举报
实际上都是值传递,假如我是基本类型变量,那我保存的是一般的数值;假如我是引用类型的变量,我保存的就是对象的引用地址值;我保存了什么,给你的就是什么
回复 使用道具 举报
fantacyleo 发表于 2014-9-1 12:17
java没有引用传递,只有值传递。既然是值传递,那么搞懂“变量的值”是什么就ok了。Java有两种类型的变量: ...

多态中不是类引用传递?
回复 使用道具 举报
孤鸢 发表于 2014-9-1 13:33
多态中不是类引用传递?

举个例子?
回复 使用道具 举报

abstract class Animal
{
        abstract public void eat();
}
class Cat extends Animal
{
        public void eat()
        {
                System.out.println("eat fish");
        }
        public void cute()
        {
                System.out.println("卖萌");
        }
}
class Test
{
        public static void function(Animal a)        //这地方的a不是类引用传递?还是我理解错了
        {
                a.eat();
                if(a instanceof Cat)
                {
                        Cat c = (Cat)a;
                        c.cute();
                }

        }
        public static void main(String[] args)
        {
                function(new Cat());
        }
}
回复 使用道具 举报
孤鸢 发表于 2014-9-1 18:49
abstract class Animal
{
        abstract public void eat();

Java中只有值传递,这是肯定的。Java语言规范写得很清楚:When the method or constructor is invoked, the 【values of the actual argument expressions】 initialize newly created parameter variables, each of the declared type, before execution of the body of the method or constructor
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马