首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

在方法定义中,访问实例属性x的格式是?

发布网友 发布时间:2022-04-21 22:18

我来回答

2个回答

热心网友 时间:2023-07-14 20:59

①对"c"的调用是不是一定要采用*.c的方式;
对于Letter类,你是这样定义的
classs Letter{char c;}
说明c是Letter类的一个属性,凡是属性,都是使用 “实例名.属性名” 的方式访问。
你在main方法中写了
Letter x = new Letter()
就是创造了一个Letter类的实例,实例名就是x。因为访问类的属性的规则是 “实例名.属性名”
因此使用x.c

②方法f(Letter y)的参数列表
方法参数的定义格式为 方法名(参数类型 参数名)
一个方法的参数可以是基本数据类型,也可以是应用数据类型。基本数据类型就是int、short 、byte、long等。引用数据类型,你可以就将其理解为类。
因此,对于你说的int,是基本数据类型;而方法中传入一个对象也是可以的,是引用数据类型。

③f(x);
其定义格式为
static void f(Letter y){ y.c = 'z'; }

而调用的时候,是这样写的
Letter x = new Letter() x.c = 'a'; print("1: x.c:" + x.c); f(x); print("2: x.c:" + x.c);

你调用这个方法的时候,传入的是x,也就是传入的是一个对象。也就是y代表的就是x
因此:y.c='Z'的本质就是x.c='z'

4、equals
Integer n1 = new Integer(20);Integer n2 = new Integer(20);System.out.println(n1.equals(n2));

equals方法比较的不是两个对象的内容,而是两个对象在内存中的地址,我们知道,两个对象内容可以相同,但是地址一定是不同的。
而这里,之所以相等,是因为Integer类中复写了equals方法,使得其不再是比较地址,而是比较内容。

对于
Value v1 = new Value(); Value v2 = new Value(); v1.i = v2.i = 60; System.out.println(v1.equals(v2));

由于Value是你自己定义的对象,由于你没有覆盖equals方法,所以比较的是地址。所以不相等。

热心网友 时间:2023-07-14 20:59

package console;
class Letter{
char c;//static char c;    2
}
public class PassObject{
    static void f(Letter y){//对象是可以作为函数参数的
        y.c = 'z';//没错,你说得很对
    }
    public static void main(String [] args){
        Letter x = new Letter();
        x.c = 'a';//是的,除非改成2
        System.out.println("1: x.c:" + x.c);
        f(x);
        System.out.println("2: x.c:" + x.c);
    }
}/* Output:
1: x.c:  a
1: x.c:  z
*/

package console;

class Value{
    int i;
}
public class EqualsMethod2{
    public static void main(String [] args){
        Value v1 = new Value();
        Value v2 = new Value();
        v1.i = v2.i = 60;
        v1.i = 60;//等价写法
        v2.i = 60;
        System.out.println(v1.equals(v2));
    }
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com