thingking in java2.11练习(4)(5)

练习(4)题目:将DataOnly代码段改写成一个程序,然后编译运行。

DataOnly代码段在P26,代码如下:

   class DataOnly {
        int i;
        double d;
        boolean b;
    }

    DataOnly dataOnly = new DataOnly();
    dataOnly.i = 47;
    dataOnly.d = 1.1;
    dataOnly.b = false;

改写成程序后代码如下:

public class test2_4 {

    public static void main(String[] args) {

        DataOnly dataOnly = new DataOnly();
        dataOnly.i = 47;
        dataOnly.d = 1.1;
        dataOnly.b = false;
    }

}

class DataOnly {
    int i;
    double d;
    boolean b;
}

题目本身是很简单的,我们来稍微探索一下稍微深层一点的内容。
首先看一下”.”,它也是运算符,作用是引用对象的成员,包括成员方法和成员变量。它可以连续使用,例如:dog.run.speed = 100;

其次,再翻看书本P26时,我们可以得到这样一个结论,类的成员变量java会默认初始化,(这句话在练习1中我们验证过了)但局部变量却不同,它默认初始化得到的可能是任意值。
书上说的也有可能是错的,我们亲自验证一下。
我们在类DataOnly里加了一个方法:

 public int f() {
        int a;
        return a;
    }

这时编译器提示错误:Variable ‘a’ might not hava been initialized。翻译过来就是变量a可能尚未初始化。
看来书上说的是对的,类的成员变量可以使用java默认赋值,局部变量不可。
以上。

练习5题目:修改前一个练习,将DataOnly中的数据在main()方法中赋值并打印出来。
赋值代码参考上文,打印代码如下:

System.out.println("i :" + dataOnly.i + "    d : " + dataOnly.d + "    b : " + dataOnly.b );

打印结果 :i :47 d : 1.1 b : false
一切似乎理所当然,但是等一下,false是怎么直接打印出来,不是应该打印出一个0吗?
我们找到API中关于print的解释:
public void print(boolean b)
Prints a boolean value. The string produced by String.valueOf(boolean) is translated into bytes according to the platform’s default character encoding, and these bytes are written in exactly the manner of the write(int) method.
Parameters:
b - The boolean to be printed
当print一个Boolean值时,会调用String.valueOf(boolean)方法,我们在去这个方法看一下:
public static String valueOf(boolean b)
Returns the string representation of the boolean argument.
Parameters:
b - a boolean.
Returns:
if the argument is true, a string equal to “true” is returned; otherwise, a string equal to “false” is returned.
当Boolean的值为true时,放回string类型“true”字符,为false时则返回“false”。
问题解决了。
以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值