31 Ağustos 2016 Çarşamba

Calendar Sınıfı

Şu satırı dahil ederiz.
import java.util.Calendar;
Bu sınıfta günler 1'den başlar. Aylar ise 0'dan başlar. Mayıs için 5 değil 4 sayısı kullanılır.

addDays metodu
Şöyle yaparız.
int days = "61;
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, days);
clear metodu
Şöyle yaparız.
Calendar calendar = Calendar.getInstance();
...
calendar.clear();
get metodu
Calendar'ın Year, Month, Day, Day of Month gibi alanları ayrı ayrı alınabilir. En çok kullanılanları şunlar.
int year = calendar.get (Calendar.YEAR);
int month = calendar.get (Calendar.MONTH);
int day = calendar.get (Calendar.DAY);
Şöyle yaparız.
c.get (Calendar.DAY_OF_MONTH);
getActualMaxium metodu
Nesnemizin Mayıs ayını gösterdiğini varsayalım. Ayın gün sayısını almak için şöyle yaparız.
int days = c.getActualMaximum(Calendar.DAY_OF_MONTH);//31
Haftanın gün sayısını almak için şöyle yaparız.
int days = c.getActualMaximum(Calendar.DAY_OF_WEEK);//7
getInstance metodu
Genelde şöyle kurulur.
Calendar calendar = Calendar.getInstance();
Bazı kodlarda şöyle kurulduğunu da gördüm ama bana mantıklı gelmiyor.
Calendar calendar = new GregorianCalendar();
Şimdiki zamanı atayan şöyle kodlar var.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
Bunu yapmaya gerek yok çünkü getInstance() metodu zaten atamayı yapıyor.
public GregorianCalendar(TimeZone zone, Locale aLocale) {
    super(zone, aLocale);
    gdate = (BaseCalendar.Date) gcal.newCalendarDate(zone);
    setTimeInMillis(System.currentTimeMillis());
}
getTime metodu
Epoch'tan beri geçen süreyi milisaniye olarak saklayan Date nesnesi döndürür yani tarih ve zamanı alabiliriz. Şöyle yaparız.
Calendar c = Calendar.getInstance();
Date d = c.getTime();
getTimeInMillis metodu
Epoch'tan beri geçen süreyi verir.
long milliSeconds = cal.getTimeInMillis()
set metodu
Şöyle yaparız.
calendar.set(Calendar.MONTH, 6);
calendar.set(Calendar.YEAR, 2013);
calendar.set(Calendar.DAY_OF_MONTH, 13);

calendar.set(Calendar.HOUR_OF_DAY, 20);
calendar.set(Calendar.MINUTE, 48);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.AM_PM,Calendar.PM);
setTimeInMillis metodu
Epoch'tan beri geçen süre atandıktan sonra yıl,ay,gün bulunabilir.
long milliSeconds = ...;
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(milliSeconds);
toString
Calendar nesnesinin bütün özelliklerini yazar. Şuna benzer bir çıktı alırız.
1:java.util.GregorianCalendar[time=851385600000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Europe/London",offset=0,dstSavings=3600000,useDaylight=true,transitions=242,lastRule=java.util.SimpleTimeZone[id=Europe/London,offset=0,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=1996,MONTH=11,WEEK_OF_YEAR=52,WEEK_OF_MONTH=4,DAY_OF_MONTH=24,DAY_OF_YEAR=359,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=4,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=0]:4:<





29 Ağustos 2016 Pazartesi

İşlem Sırası - Order of Evaluation

İşlem Sırası - Order of Evaluation
Order of Evaluation bazı işlemlerin hangi sırada yapılacağının tanımlar. Programlama diline göre sıra değişebilir hatta bir dilde tanımlı olan işlem, başka bir dilde tanımsız olabilir. Özellikle Java ve C++ arasındaki farklar çarpıcı olabiliyor.

1. Metod Çağrısı
Metod çağrıları her zaman soldan sağa işlenir. Şöyle bir kod olsaydı
A() * ( B() + C() )
önce A, sonra B ve sonra da C çağrılır. Daha sonra B ve C'nin sonu toplanıp A'nın sonucu ile çarpılır.

2. Aynı parametrenin birden fazla değer değiştirerek kullanılması
Bu işlem soldan sağa olacak şekilde işlenir. Örnek:
t1 = 5;
t2 = t1 + (++t1);
System.out.println (t2);//Sonuç 11'dir
Bu örnek şu şekilde görselleştirilebilir.
    +
  /   \
 t1   ++t1
Örnek:
t1 = 5;
t2 = (++t1) + t1;
System.out.println (t2);//Sonuç 12'dir
Bu tür örnekler çoğaltılabilir. Aşağıdaki kodun sonucunu siz tahmin edin.
int a = 10;
a = ++a * ( ++a + 5);
3. Bileşik Atama İşlemi
Aslında aynı parametrenin birden fazla değer değiştirerek kullanılması ile aynı şey. Ancak biraz daha detaylı olsun diye yeni başlık altına altım. Açıklaması şöyle
If the operator is a compound-assignment operator (§15.26.2), then evaluation of the left-hand operand includes both remembering the variable that the left-hand operand denotes and fetching and saving that variable's value for use in the implied binary operation.
Example 15.7.1-2. Implicit Left-Hand Operand In Operator Of Compound Assigment
In the following program, the two assignment statements both fetch and remember the value of the left-hand operand, which is 9, before the right-hand operand of the addition operator is evaluated, at which point the variable is set to 3.

Şöyledir
int a = 9;
a += (a = 3);  
System.out.println(a); //12int b = 9;
b = b + (b = 3);  
System.out.println(b); //12


23 Ağustos 2016 Salı

NodeList Sınıfı

Giriş
Şu satırı dahil ederiz.
import org.w3c.dom.NodeList;
constructor
Şöyle yaparız.
NodeList nodeList = doc.getElementsByTagName("student");
Şöyle yaparız.
Node channel = ...;
NodeList nodeList = channel.getChildNodes();
getLength metodu
Liste şöyle dolaşılır.
NodeList nodeList = doc.getElementsByTagName("student");
for (int index = 0; index < nodeList.getLength(); index++) {
  Node node = nodeList.item(index);
  ...
}
item metodu
Node nesnesi döndürür. Şöyle yaparız.
NodeList nodeList = ...;
Node child = items.item(2);

Vector Sınıfı

Giriş
Şu satırı dahil ederiz
import java.util.Vector;
constructor
Şöyle yaparız.
Vector<String> vector = new Vector<String>();
add metodu
Şöyle yaparız.
vector.add("...");
contains metodu
Şöyle  yaparız.
if(vector.contains("...")) {...}
elements metodu
Şöyle yaparız.
Enumeration en = vector.elements();
while(en.hasMoreElements()){
  System.out.print(en.nextElement());
}
iterator metodu
Enumerator yerine Iterator kullanılmalı. Şöyle yaparız.
Iterator en1 = vector.iterator();
while(en1.hasNext()){
  System.out.print(en1.next());
}



19 Ağustos 2016 Cuma

AtomicInteger Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.util.concurrent.atomic.AtomicInteger;
Kullanım amacı şöyle
There are two main uses of AtomicInteger:
  1. As an atomic counter (incrementAndGet(), etc) that can be used by many threads concurrently
  2. As a primitive that supports compare-and-swap instruction (compareAndSet()) to implement non-blocking algorithms.
constructor
Şöyle kullanırız
AtomicInteger  counter = new AtomicInteger(0);
compareAndSet metodu
İmzası şöyle
public final boolean compareAndSet(int expect, int update);
set metodu

İmzası şöyle
public final void set(int newValue);