JAVA程序阅读题不懂,求大神解释下~~越详细越好
2013-07-04
展开全部
b是static变量,说白了就是类的所有对象公用1个b,而cat和dog都有自己的a
A.b=100后,A.inputB()自然打印出100,而cat.b和dog.b也都是100了。
所以,cat.b++后,公用的这个b为101,而cat.a没有初始化,为0.0,cat.a++后为1.0
所以cat.inputA()打印的是cat自己的a,为1.0,cat.inputB()打印的是公用的b,为101.0
同理,
dog.inputA()打印的dog自己的未初始的a,为0.0,
而dog.inputB()打印的公用的b,为101.0
A.b=100后,A.inputB()自然打印出100,而cat.b和dog.b也都是100了。
所以,cat.b++后,公用的这个b为101,而cat.a没有初始化,为0.0,cat.a++后为1.0
所以cat.inputA()打印的是cat自己的a,为1.0,cat.inputB()打印的是公用的b,为101.0
同理,
dog.inputA()打印的dog自己的未初始的a,为0.0,
而dog.inputB()打印的公用的b,为101.0
展开全部
在类A中,有一个float变量a,还有一个float静态变量b,有四个没有返回值的方法,setA,setB,inputA,inputB,setA中将x值赋给a,setB中,将y值赋给b.inputA中,输出a,inputB中输出b.
在ch62ad中,有一个主函数,里边new了两个A,分别是cat,dog对象,将100赋给A中的b属性,然后调用A中的inputB方法,cat中b+1,a+1;然后cat调用两个方法,dog调用两个方法,这些方法中有输出a,b的值。
在ch62ad中,有一个主函数,里边new了两个A,分别是cat,dog对象,将100赋给A中的b属性,然后调用A中的inputB方法,cat中b+1,a+1;然后cat调用两个方法,dog调用两个方法,这些方法中有输出a,b的值。
追问
答案怎么会有1.0的完全不明白
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
静态域属于类,不管这个类有多少个对象,都是共享一个静态域。因此第一次打印结果是100。
float a在对象创建的时候会被初始化为0.0。调用cat.a++后自增一位,因此打印结果是1。同样,100自增一位是101。最后dog.inpuB()打印结果是0.0。
float a在对象创建的时候会被初始化为0.0。调用cat.a++后自增一位,因此打印结果是1。同样,100自增一位是101。最后dog.inpuB()打印结果是0.0。
追问
A.b是什么意思啊。。。为什么是小写不是大写呢?还有A是什么。。。
追答
A就是class A啊。静态变量的调用是类名+静态变量名。也可以对象名+静态变量名
例如:
class A
{
......
static int c = 10;
}
那么System.out.print(A.c);打印出来的结果为10。
也可以 A a = new A(); 调用System.out.print(a.c);的结果也是10。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
纯手打,请给分。
class A{ //类名是A
float a; //声明一个双精度浮点型的对象a
static float b; //声明一个双精度浮点型的静态对象b
void setA(float x){ //赋值方法,传入一个float类型的对象x,并且把x的值赋给a
a=x;}
void setB(float y){ //赋值方法,传入一个float类型的对象y,并且把y的值赋给b
b=y;}
void inputA(){ //声明一个名叫 inputA的方法
System.out.println(a); //把对象a的值打印到控制台
}
static void inputB(){ //声明一个名叫 inputB的方法
System.out.println(b); //把对象b的值打印到控制台
}
}
public class ch62ad{ //一个名叫ch62ad的类
public static void main(String[] args) //类中的main方法,该方法可以右键直接执行
{
A cat = new A(); //实例化A类,对象名叫 cat
A dog = new A(); //实例化A类,对象名叫 dog
A.b=100; //因为b是静态的,可以直接由类名调用,此时给b赋值100,b=100
A.inputB(); //同理,inputB()方法也是静态的,可以直接由类名调用,调用后执 //行inputB()方法体System.out.println(b); ,此时打印出b的值,控制台 //会打印出100.0(之所以有.0是因为b的数据类型是float)
cat.b++;cat.a++; //由对象cat调用a和b,并且同时给他们分别+1,此时a==1.0,b==101.0
cat.inputA(); //通过对象cat调用inputA()方法,控制台打印出1.0
cat.inputB(); //通过对象cat调用inputB()方法,控制台打印出101.0
dog.inputA(); //dog对象没有给a赋值,调用方法执行System.out.println(a); a=0.0(float 数据类型,如果对象为空,默认值为0.0),
dog.inputB(); //dog对象没有给b赋值,调用方法执行System.out.println(b); a=0.0(float 数据类型,如果对象为空,默认值为0.0)
}
}
class A{ //类名是A
float a; //声明一个双精度浮点型的对象a
static float b; //声明一个双精度浮点型的静态对象b
void setA(float x){ //赋值方法,传入一个float类型的对象x,并且把x的值赋给a
a=x;}
void setB(float y){ //赋值方法,传入一个float类型的对象y,并且把y的值赋给b
b=y;}
void inputA(){ //声明一个名叫 inputA的方法
System.out.println(a); //把对象a的值打印到控制台
}
static void inputB(){ //声明一个名叫 inputB的方法
System.out.println(b); //把对象b的值打印到控制台
}
}
public class ch62ad{ //一个名叫ch62ad的类
public static void main(String[] args) //类中的main方法,该方法可以右键直接执行
{
A cat = new A(); //实例化A类,对象名叫 cat
A dog = new A(); //实例化A类,对象名叫 dog
A.b=100; //因为b是静态的,可以直接由类名调用,此时给b赋值100,b=100
A.inputB(); //同理,inputB()方法也是静态的,可以直接由类名调用,调用后执 //行inputB()方法体System.out.println(b); ,此时打印出b的值,控制台 //会打印出100.0(之所以有.0是因为b的数据类型是float)
cat.b++;cat.a++; //由对象cat调用a和b,并且同时给他们分别+1,此时a==1.0,b==101.0
cat.inputA(); //通过对象cat调用inputA()方法,控制台打印出1.0
cat.inputB(); //通过对象cat调用inputB()方法,控制台打印出101.0
dog.inputA(); //dog对象没有给a赋值,调用方法执行System.out.println(a); a=0.0(float 数据类型,如果对象为空,默认值为0.0),
dog.inputB(); //dog对象没有给b赋值,调用方法执行System.out.println(b); a=0.0(float 数据类型,如果对象为空,默认值为0.0)
}
}
追问
右边的你没解释呢
追答
哎,这么完美的解释,竟然不给分,给了别人,呵呵。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-04
展开全部
只有注意A中的b是static的就容易理解多了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询