Java是一種面向對象的編程語言,它支持多種傳參和消息傳遞方式。以下是Java中常用的傳參和消息傳遞方式:
1. 值傳遞
public static void swap(int a, int b) { int temp = a; a = b; b = temp; } public static void main(String[] args) { int x = 3, y = 5; swap(x, y); System.out.println("x=" + x + ",y=" + y); }
輸出結果為:x=3,y=5。這是因為Java中的傳參是采用值傳遞的方式,即方法對參數的修改不會影響到原來的實參。
2. 引用傳遞
class Person { String name; Person(String name) { this.name = name; } } public static void changeName(Person p) { p.name = "Lucy"; } public static void main(String[] args) { Person person = new Person("Tom"); changeName(person); System.out.println(person.name); }
輸出結果為:Lucy。這是因為Java中如果參數是對象類型,那么實際上傳遞的是對象的引用,方法中對引用的修改會影響到原來的實參。
3. 消息傳遞
interface Message { String getContent(); } class Email implements Message { public String getContent() { return "Email"; } } class Wechat implements Message { public String getContent() { return "Wechat"; } } class MessageSender { public void sendMessage(Message message) { System.out.println("send " + message.getContent()); } } public static void main(String[] args) { MessageSender sender = new MessageSender(); Message email = new Email(); Message wechat = new Wechat(); sender.sendMessage(email); sender.sendMessage(wechat); }
輸出結果為:
send Email send Wechat
這是因為Java中可以使用接口實現消息傳遞,通過接口的方式可以實現多態。上面的例子中,Email和Wechat是Message接口的實現類,而MessageSender的sendMessage方法接受的是Message類型的參數,因此可以傳遞不同類型的消息。