首页 > 代码库 > 7:合成的语法
7:合成的语法
考虑以下代码:
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:合成的语法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。