码迷,mamicode.com
首页 > 其他好文 > 详细

7:合成的语法

时间:2016-10-02 17:20:36      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

  考虑以下代码:

 1 //: SprinklerSystem.java //
 2 class WaterSource { 
 3     private String s; 
 4     WaterSource() { 
 5         System.out.println("WaterSource()"); 
 6         s = new String("Constructed");
 7         } 
 8     public String toString() { return s; }
 9     }
10 public class SprinklerSystem { 
11     private String valve1, valve2, valve3, valve4; 
12     WaterSource source; 
13     int i; 
14     float f; 
15     void print() { 
16         System.out.println("valve1 = " + valve1); 
17         System.out.println("valve2 = " + valve2); 
18         System.out.println("valve3 = " + valve3); 
19         System.out.println("valve4 = " + valve4); 
20         System.out.println("i = " + i); 
21         System.out.println("f = " + f); 
22         System.out.println("source = " + source);
23 } public static void main(String[] args) { 
24     SprinklerSystem x = new SprinklerSystem(); 
25     x.print();
26 }
27 } ///:~

    WaterSource类中的toString方法为我们设置的,但是如果去掉这个方法,输出结果也不会有任何改变。这是因为所有的非基本类型的对象均会有一个toString的方法,每当我们想要一个String类型,却获得非此类型的对象,编译器便会调用这种方法。

    各种实验:1:如果我们将12行改为WaterSource source = new WaterSource();那么运行结果便是:source=Constructed;这是因为当我们new source类的时候,构建器WaterSource中的语句便会执行一次,此时将变量s设置为Constructed,故调用source方法的时候,返回的便是当前s的值。

         2:如果我们去掉toString方法并new source的时候,此时会结果会是类似source=test.WaterSource@15db9742的一行,这个结果是显示source类在内存中的地址。

  

7:合成的语法

标签:

原文地址:http://www.cnblogs.com/cramile/p/5927581.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!