Java'da daima pass-by-value yöntemiyle parametre verilir.
Yani bir metoda parametre verildiğinde, metodun aldığı şey yalnızca o nesneye işaret eden yeni bir referans tipidir.
Örneğin bir book referansı bir metoda parametre olarak verildiğinde, metod içerisine aslında bu referansın bir kopyası alınır.
Bu yeni referans book ile aynı nesneye işaret ettiğinden, nesne üzerinde değişiklik yapabilir.
Ama metod içinde bu referansa new keywordu ile yeni bir nesne yaratılırsa, referans artık bellekte başka bir adresi işaret eder.
Orijinal book referansı bozulmadığından bu yeni nesnede yapılan hiçbir değişiklik book referansını etkilemez.
İşte bu örnekte de görüldüğü gibi Java'da pass-by-referans yoktur, daima pass-by-value vardır.
public class Library {
public static void main(String[] args) {
Book book = new Book();
book.setName("original name");
System.out.println(book);
change(book);
System.out.println(book);
}
public static void change(Book book) {
book.setName("name changed!");
book = new Book();
book.setName("another name");
}
public static class Book {
private String name;
public Book() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Book{" + "name=" + name + '}';
}
}
}
C++, Ada, Pascal gibi dillerde pass-by-value olduğundan bir metoda parametre olarak verilen değişkenin kendisini değiştirmek mümkündür. Java'da ise bu mümkün değildir.
Etiketler
abstraction
Accord Framework
ajax
android
architecture
Array
assets
async task
AsyncTask
authorization
avd
billy joel
button
Classification
collections
component
concurrency
container
data science
database
Decision Tree
Decision Trees
dhcp
distributed
donma
emülatör
encapsulation
exception
express
Feature extraction
Feature Selection
garbage collection
glassfish
google
grafik
güvenlik
hadoop
http
IDE
inheritance
j2ee
jade
java
java.lang
JDBC
jls
JNDI
JSF
jsp
kitap
lib
link
Machine Learning
Marmara Üniversitesi
material design
maven
mongodb
multiple inheritance
nested class
netbeans
network
node.js
NoSQL
oop
Oracle
ORM
pass-by-value
pattern
permission
polymorphism
PrimeFaces
primitive
Project Euler
protocol
R
response
REST
RMI
root
Scala
servlet
Set
sözlük
spring
sqlite
tasarım desenleri
tcp/ip
template
test
thread
tier
toast
tomcat
türk telekom
twitter
UI thread
virtual device
web application
web design
web service
WEKA
wireshark
16 Nisan 2015 Perşembe
Kaydol:
Kayıt Yorumları (Atom)
Hiç yorum yok:
Yorum Gönder