Archive for the ‘ Java Programlama Dili ’ Category

Java da tarih alanları istediğimiz şekile format ile çevirebiliyoruz.

Mon Dec 09 00:00:00 EET 2013

biçimdeki bir tarihi

09/Dec/2013

şekline asağıdaki gibi dönüştürebilirsiniz. Buradaki tek önemli şey SimpleDateFormat override edilen metoda Locale.ENGLISH eklemeyi unutmayınız. Yani

new SimpleDateFormat(pattern, locale)

şeklinde kullanmanız lazım.

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class TestJava {

	public static String formatDateToString(String selDate)throws ParseException {
		SimpleDateFormat formatter=null;
		formatter= new SimpleDateFormat("E MMM dd HH:mm:ss Z yyyy",Locale.ENGLISH);
		Date date = (Date)formatter.parse(selDate);
		formatter.applyPattern("dd/MMM/yyyy");
		return formatter.format(date);
	}
	
	public static void main(String[] args) {
		
		String dateStr= "Mon Dec 09 00:00:00 EET 2013";
		 try {
			System.out.println(TestJava.formatDateToString(dateStr));
		} catch (ParseException e) {
			e.printStackTrace();
		}

	}
}

Bu örnekte crontab içinden java sınıflarını nasıl çağırabileceğimizi açıklamaya çalışacam.
Crontab belli araliklarla bazi işlemlerin kendiliğinden gerçekleştirmesini sağlamak için kullanılan bir yazilimdir. Crontab içinde Test.java sinifini her akşam 21:41 de derleyip(sadece daha önce derlenmemişse derleme işlemi gerçekleşir), çalıştırıp ve çıktıyı /home/ubuntu içindeki result_output.txt(yoksa kendisi oluşturuyor dosyayı) dosyasına yazdirmasini istedim.
Note: ilk derlemede Test.class dosyası olmadığından yani daha önce derlenmediğinden result_output.txt dosyasına bir şey yazmiyor. Çünkü crontab içinde satırlar arda ardadır ve derleme uzun sürdüğünden hemen altındaki satırı çalıştırıyor ve çıktı boş oluyor. Örnek olsun diye derlemeyi de gösterdim. Zamanı 21:20 gibi bir değer veririsek o zaman sorun olmaz tabi.
Crontab’ı Linux consolundan çalıştırmayı bilmiyorsanız tıklayın(bu örnekte de nmap ile ağ taranıp veriler .xml dosyasına kaydediliyor).
Crontab içinde derlemek için aşağıdaki kodu yazıyoruz.
Note: consoldan derlemek için “/usr/lib/jdk1.6.0_23/bin” classpathi tam yazmak zorunda değiliz ama crontab içindeki bütün tanımlamalarda path tam olmalıdır. Aksi halde class not found hatası verecek. Crontab içindeki tanımlama javac komutu ile Test.java sinifini derliyor. Uyari ./CommandLine/src/Test.java tanımlamaya dikkat.
Crontab içine aşağıdaki 2 satır kod yazdım.

41 21 * * * javac -classpath "/usr/lib/jdk1.6.0_23/bin" /home/ubuntu/workspaceWeb/CommandLine/src/Test.java

Crontab’a yazılan aşağıdaki kod ise Test yani derlenmiş sinifini çağırıp main içinde ekrana yazılacak olan değeri result_output.txt dosyasına kaydediyor.Uyari ./CommandLine/src Test src boşluk Test şeklinde yazıldığında dikkat edin. Bu da Test>/home/ubuntu/result_output.txt çıktıyı txt dosyasına yazıyor.

41 21 * * * java -classpath /home/ubuntu/workspaceWeb/CommandLine/src Test>/home/ubuntu/result_output.txt

Eğer paket olsaydı onun yolunu da belirtirdik ama uygulamada paket tanımlanmamış.
Test.java

public class Test {

	public  static void writeMethod(String str)
	{
		System.out.println("Output: "+str);
		
	}
	public static void main(String[] args) {
		String s="Running a Java class in the crontab";
		writeMethod(s);

	}

}

result_output.txt içinde Running a Java class in the crontab çıktısı yazılmış olmalı.

WindowBuilder Eclipse plugini kullanarak Java Applette panel tıklandığı noktada kırmızı renkli bir çember/oval/elips çizmeye çalıştım. Aşağıdaki resimde görüldüğü gibi paneli sağ tıklayıp event ekledim. Bu şekilde buttona veya labele kısacası herhangi bir componente event ekleyebiliriz.
java applet
Aşağıdaki resimde de paneli tıklayarak Yasemin’nin Y sini küçük çemberlerle çizmeye çalıştım.
çıktı
CemberCizme.java

package ethemsulan;
import javax.swing.JApplet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

public class CemberCizme extends JApplet {
//Baslangic degerleri sifir oldugundan bir tane cember (0,0) da ciziyor ilk basta
	int xEks;
    int yEks; 
	/**
	 * Create the applet.
	 */
	public CemberCizme() {
		getContentPane().addMouseListener(new MouseAdapter() {
//Applette tiklandigi konuma bir cember ciziyor
			@Override
			public void mouseClicked(MouseEvent e) {
				paint(getGraphics());
			}
		});
//Mousenin x ve y konumlarini surekli guncelliyor
		getContentPane().addMouseMotionListener(new MouseMotionAdapter() {
			@Override
			public void mouseMoved(MouseEvent e) {
				xEks=e.getX();
				yEks=e.getY();
			}
		});
		
		getContentPane().setLayout(null);

	}
//Kirmizi renkte bir cemebr ciziyor
	@Override
	   public void paint(Graphics g) {
		g.setColor(Color.red);
        g.drawOval(xEks, yEks,20,20);
        
    }

}

Java ile taban çeviren bir uygulama yazmaya çalıştım. tabanCevir(bir tam sayı, çevirmek istenen taban) şeklindedir. Örneğin sayimiz 3 ve çevirmek istediğimiz taban 2 ise tabanCevir(3,2) şeklinde yazılır. 3 ün ikili tabanda(0 ve 1) 11 şeklinde consola yazar. Ayrıca reverse() yani stringleri ters çeviren bir metod ile ters çevirdim. StringBuilderda reverse() metodu zaten var ama kendim yazmak istedim.
TabanCevir.java

package ethemsulan.com;

public class TabanCevir {
	public static String reverse(String deger)
	{
		String sonuc = "";
		for (int i = deger.length(); i >0; i--) {
			sonuc += deger.substring(i-1, i);
		}
		return sonuc;
	}
	static int i=0;
	static String cevrilenString="";
	public static String tabanCevir(int sayi, int cevTaban)
	{
		if(cevTaban<2 || cevTaban>16)
		{
			return "Taban 2-16 arasinda olmali";
		}
		else if(sayi<cevTaban)
		{
			cevrilenString+=sayi;
			return reverse(cevrilenString);
		}else
		{
			while(true)
			{
				if(sayi<cevTaban)
				{
					cevrilenString+=sayi;
					break;
				}else if(sayi>cevTaban && cevTaban>10)
				{
					sayi = OndanBuyukTaban(sayi, cevTaban);
					

				}else{
					cevrilenString+=sayi%cevTaban;
					sayi=sayi/cevTaban;
				}
			}
			if(i==1)
			{
				return cevrilenString;
			}
			return reverse(cevrilenString);
		}
	}
	private static int OndanBuyukTaban(int sayi, int cevTaban) {
		if(sayi/cevTaban==10)
		{
			cevrilenString+="a";
			sayi=sayi%cevTaban;
			i=1;
		}else if(sayi/cevTaban==11)
		{
			cevrilenString+="b";
			sayi=sayi%cevTaban;
			i=1;
		}else if(sayi/cevTaban==12)
		{
			cevrilenString+="c";
			sayi=sayi%cevTaban;
			i=1;
		}else if(sayi/cevTaban==13)
		{
			cevrilenString+="d";
			sayi=sayi%cevTaban;
			i=1;
		}else if(sayi/cevTaban==14)
		{
			cevrilenString+="e";
			sayi=sayi%cevTaban;
			i=1;
		}else if(sayi/cevTaban==15)
		{
			cevrilenString+="f";
			sayi=sayi%cevTaban;
			i=1;
		}else{
			sayi = OndanKucukTaban(sayi, cevTaban);
			
		}
		return sayi;
	}
	private static int OndanKucukTaban(int sayi, int cevTaban) {
		if(sayi%cevTaban==10)
		{
			cevrilenString+="a";
			sayi=sayi/cevTaban;
			i=0;
		}else if(sayi%cevTaban==11)
		{
			cevrilenString+="b";
			sayi=sayi/cevTaban;
			i=0;
		}else if(sayi%cevTaban==12)
		{
			cevrilenString+="c";
			sayi=sayi/cevTaban;
			i=0;
		}else if(sayi%cevTaban==13)
		{
			cevrilenString+="d";
			sayi=sayi/cevTaban;
			i=0;
		}else if(sayi%cevTaban==14)
		{
			cevrilenString+="e";
			sayi=sayi/cevTaban;
			i=0;
		}else if(sayi%cevTaban==15)
		{
			cevrilenString+="f";
			sayi=sayi/cevTaban;
			i=0;
		}
		else{
		cevrilenString+=sayi%cevTaban;
		sayi=sayi/cevTaban;
		i=0;
		}
		return sayi;
	}
}

Test.java

package ethemsulan.com;

public class Test {
	public static void main(String[] args) {
//tabanCevir(Sayimiz, CevrilmekIstenenTaban)
//Test edilen durumlar tabanCevir(1110, 11): 91a
//tabanCevir(111, 11): a1 , tabanCevir(11, 2): 1011
//tabanCevir(500, 14): 27a, tabanCevir(700, 21): 1c7
//tabanCevir(700, 2): 1010111100 , tabanCevir(555, 3): 202120
//tabanCevir(5555, 16): 15b3
		System.out.println(TabanCevir.tabanCevir(3, 2));
	}
}

Çok fazla ifler var uygulamada.

Uyg resmi: http://prntscr.com/ih0c

Res1: http://prntscr.com/ih6a   Visual class editoru kullanmak için: http://www.eclipse.org/ganymede/eclipse ganymede indir ve eclipse plugin eklemek içinde http://www.ethemsulan.com/2009/12/eclipse-eklenti-eklemekinstall-eclipse.html bakarak şunu kopyalayıp yapıştırın http://download.eclipse.org/tools/ve/updates/1.4/

Dikkat uygulamaya jcalendar.jar dosyasını eklemeyi unutmayınız.

Uygulama içinde var:http://hotfile.com/dl/50518541/10a8c05/ethem.rar.html

Res2:http://prntscr.com/ih7b  Tarihi seçip sonra buttona tıklayınca jlabele atıyor seçilen değeri.Eğer herahngi bir tarih seçmeden buttona tıklarsanız nulpointer hatası alırsınız.Çünkü onun kontrolünü yapmadım.

Res3:http://prntscr.com/ih7g  Jcalendar-13.3.jar ekledim ben.Jcalendar.jar içinde var bu. Res4: http://prntscr.com/ih7x  com.toedter.calendar paketinde jDateChooser nesne türetiliyor.

package ethemsulan.com;
import javax.swing.SwingUtilities;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Rectangle;
import javax.swing.JButton;
import com.toedter.calendar.JDateChooser;
import javax.swing.JLabel;
public class JcalendarUyg extends JFrame {
  private static final long serialVersionUID = 1L;
  private JPanel jContentPane = null;
  private JButton jButton = null;
  private JDateChooser jdateChooser1 = null;
  private JLabel jLabel = null;
  private JButton getJButton() {
    if (jButton == null) {
      jButton = new JButton();
      jButton.setBounds(new Rectangle(68, 101, 97, 22));
      jButton.setText("Labele Yaz");
      jButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent e) {
//Seçilen tarihi button tıklanınca labele yazdırıyorum burada.
java.util.Date secileTarih=jdateChooser1.getDate();
jLabel.setText(secileTarih.toLocaleString());
        }
      });
    }
    return jButton;
  }
//Normal bir label veya button nesnesi oluşturduğumuz gibi
//bu datechooser nesnesini oluşturup formumuza ekliyoruz.
//jcalendar.jar uygulamanıza yüklemeyi unutmayın
//import com.toedter.calendar.JDateChooser; import edin
//Bu metodu ide oluşturmuyor otomatik.Kendiniz yazıyorsunuz.
private JDateChooser getJDateChooser(){
if (jdateChooser1==null){
jdateChooser1 = new JDateChooser();
jdateChooser1.setBounds(26, 29, 100, 25);      
    }
    return jdateChooser1;
  }
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JcalendarUyg thisClass = new JcalendarUyg();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
      }
    });
  }
  public JcalendarUyg() {
    super();
    initialize();
  }
  private void initialize() {
    this.setSize(300, 248);
    this.setContentPane(getJContentPane());
    this.setTitle("ethemsulan.com");
  }
  private JPanel getJContentPane() {
    if (jContentPane == null) {
      jLabel = new JLabel();
      jLabel.setBounds(new Rectangle(26, 151, 164, 31));
      jLabel.setText("");
      jContentPane = new JPanel();
      jContentPane.setLayout(null);
      jContentPane.add(getJButton(), null);
//DateChooser nesnemizi ContentPane ekliyoruz.
      jContentPane.add(getJDateChooser(),null);
      jContentPane.add(jLabel, null);
    }
    return jContentPane;
  }
} 

Orj kod:http://www.ethemsulan.pastebin.com/BvXrtS2j

2

Navicat for SqLite: http://www.navicat.com/en/products/navicat_sqlite/sqlite_overview.html indirip kurun.

3

databaseIsmi.db dosyanızın yolunu beliritin ve baglantiya bir isim verin.

4

ethemsulan.db kendiniz de tanımlayabilirisniz.Eğer varsa kod yeniden oluşturmaz.Yoksa ethemsulan.db oluşturur.

5

Artik kayıtlarımızı navicat ile görebiliriz.

10

SqLiteJDBC jar dosyasini http://www.zentus.com/sqlitejdbc/ indirin ve uygulamanizin icine atin.

6

Uygulamaniza bu .jar dosyasini ekleyin.

11

7

8

SqLiteJDBC sadece bu uygulanmaya eklenmistir.

package ethemsulan.com;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
public class SqLiteTest {
public static Connection getConnection()
  {
    try {
  Class.forName("org.sqlite.JDBC");
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    }
    try {
//ethemsulan.db SqLiteEx uygulama dosyasinda yoksa olusturur.
      Connection con=null;
con=DriverManager.getConnection("jdbc:sqlite:ethemsulan.db");
      return con;
    } catch (SQLException e) {
      e.printStackTrace();
    }
    return null;
  }
public static void main(String[] args) throws SQLException {
    Connection con=null;
    Statement st=null;
    ResultSet rs=null;
    con=getConnection();
    st=con.createStatement();
String name=JOptionPane.showInputDialog("Adiniz:");
String lName=JOptionPane.showInputDialog("Soyadiniz: ");
int age=Integer.valueOf(JOptionPane.showInputDialog("Yasiniz: "));
//Eger ethemsulan.db de kisi tablosu yoksa olusturur.
st.executeUpdate("CREATE TABLE if not exists 'kisi' (" +
    "'id'  INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
    "'ad'  TEXT,'soyad'  TEXT,'yas'  INTEGER);");
st.executeUpdate("insert into kisi(ad,soyad,yas)" +
    " values('"+name+"','"+lName+"','"+age+"') ");
    st.execute("select * from kisi");
    rs=st.getResultSet();
    while(rs.next()){
System.out.println(rs.getInt("id")+" "+rs.getString("ad")+
    " "+rs.getString("soyad")+" "+rs.getInt("yas"));
    }
    rs.close();
    st.close();
    con.close();  
  }
}

orj kod:http://www.ethemsulan.pastebin.com/rsbqbbLb

ethemsulan.db ve kisi tablosu eğer varsa tekrardan oluşturmaz.Yoksa oluşturulur.

package www.ethemsulan.com;

public class HashKodlari {

  private String nesnem;
  public String getNesnem() {
    return nesnem;
  }
  public void setNesnem(String nesnem) {
    this.nesnem = nesnem;
  }

  public HashKodlari(String string) {
    setNesnem(string);
  }

  public static void main(String[] args) {
    HashKodlari nesnem1=new HashKodlari("ethem");
    HashKodlari nesnem2=new HashKodlari("ethem");
    if(nesnem1.equals(nesnem2)){
      System.out.println("nesneler esittir");
    }else{
      System.out.println("Nesneler esit degil");
    }
  }
}

Yukardaki nesnem1 ve nesnem2 ye baktığımızda eşit olması gerekirler.Çünkü ikisinin de aldığı değer ethem ve sınıfları da aynı olmasına rağmen else kısmı yani eşit değil çıktısını alıyoruz. private olarak tanımladığımız nesneyi sağ tıklayıp source den Generate hashCode and equals tıklayıp hash kodlarını eşitlediğimizde ekran çıktımız eşit yani if ksımı çalışır.

hash

package www.ethemsulan.com;

public class HashKodlari {

  private String nesnem;
  @Override
  public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((nesnem == null) ? 0 : nesnem.hashCode());
    return result;
  }

  @Override
  public boolean equals(Object obj) {
    if (this == obj)
      return true;
    if (obj == null)
      return false;
    if (getClass() != obj.getClass())
      return false;
    HashKodlari other = (HashKodlari) obj;
    if (nesnem == null) {
      if (other.nesnem != null)
        return false;
    } else if (!nesnem.equals(other.nesnem))
      return false;
    return true;
  }

  public String getNesnem() {
    return nesnem;
  }

  public void setNesnem(String nesnem) {
    this.nesnem = nesnem;
  }

  public HashKodlari(String string) {
    setNesnem(string);
  }

  public static void main(String[] args) {
    HashKodlari nesnem1=new HashKodlari("ethem");
    HashKodlari nesnem2=new HashKodlari("ethem");
    if(nesnem1.equals(nesnem2)){
      System.out.println("nesneler esittir");
    }else{
      System.out.println("Nesneler esit degil");
    }
  }
}

Eclipse kendisi hash kodlarını eşlitliyor ve şu an iki nesnelerin her şeyi aynı olmuş oluyor. Yanı aynı nesne oluyorlar.Eğer ben new hashKodlari(“ethem sulan”); yaparsam zaten bu iki nesne esit olmuyor.

Istemci.java     hostname=”Hedef bilgisayarın IP adresi” veya localhost yazılabilir.

package www.ethemsulan.com;
import java.net.*;
import java.io.*;
public class Istemci {
public static void main(String[] args) {
   String hostname;
//Bu port uzerinden haberlesecekler
   int port = 9999;
   if (args.length > 0) {
     hostname = args[0];
     try {
 port = Integer.parseInt(args[1]);
      }
      catch (Exception ex) {
      }
    }
  else {
//Asagidaki 192.168.2.33 gidilecek bilgisayarin ip adresidir.
//Hangi bilgisayarla iletisime gecilmek istiyorsak onun ip 
//adresini hostname yazmamiz lazim.localhost ta yazilabilir.
//Sunucu.java sınıfının bulunduğu bilgisaayrın ip adresidir.
//Sunucu bir bilgisayardan ve istemci de diğer bilgisayarda
//tutulur.Önce sunucu çalıştırılır ve sonra istemci 
//ve consoleden değerler yazdıkça sunucuya gider.
      hostname ="192.168.2.33";
    }
    try {
InetAddress server = InetAddress.getByName(hostname);
//Consola girilen değerleri okur
BufferedReader kulGirdi= new 
  BufferedReader(new InputStreamReader(System.in));
DatagramSocket soketimiz = new DatagramSocket();
DatagramPacket ciktimiz;   
  while (true) {
   String satirOku = kulGirdi.readLine();
   if (satirOku.equals(".")) break;
   byte[] data = satirOku.getBytes();
ciktimiz= new DatagramPacket(data, data.length, server, port);
//Consoldan deger okuyup 192.168.2.33 ip adresine sahip 
//bilgisayar gonderir.Yani gonderilen bilgisayar sunucudur.
      soketimiz.send(ciktimiz);
      }  
    } 
    catch (UnknownHostException uhex) {
      System.err.println(uhex);
    }
    catch (SocketException sex) {
      System.err.println(sex);
    }
    catch (IOException ioex) {
      System.err.println(ioex);
    }
  }  
}

Orj kod:http://www.ethemsulan.pastebin.com/redThJTv

Sunucu.java

Eğer alınan paketin ip kaynak adresinin farklı göstermesini istiyorsak a ve b daki satırların yorumlarını kaldırın.Hangi ip ile görünmesini istiyorsanız onu yazın.Ben ethemsulan.com yazdım.

package www.ethemsulan.com;
import java.net.*;
import java.io.*;
public class Sunucu {
public final static int MAX_PACKET_SIZE = 65507;
 public static void main(String[] args) {
int port = 9999;
byte[] buffer = new byte[MAX_PACKET_SIZE];
try {
  port = Integer.parseInt(args[0]);
  }
  catch (Exception ex) {
  }
try {
//Bu örnekte UDP kullanılmıştır.
DatagramSocket server = new DatagramSocket(port);
DatagramPacket paket = 
	 new DatagramPacket(buffer, buffer.length);
  while (true) {
     try {
    server.receive(paket);
//Eger kaynak adresin degistirmesini istiyorsaniz asagidaki iki
//yorum satirini kaldirin.
//a-->Inet4Address adres=(Inet4Address) Inet4Address.getByName("ethemsulan.com");
//b--> paket.setAddress(adres);
String gonderen = new String(paket.getData(), 0, paket.getLength());
//paket.getAddress() kaynak bilgisayarin ip adresini donderir.
//Paketin geldigi kaynak adresi değiştirmek için a ve b yorum
//satirlarini kaldirin.Eğer a ve b yorum satırları kaldırılırsa sanki paket
//ethemsulan.com dan gelmiş gibi görünür
System.out.println(paket.getAddress()+ 
   " adresinden gelen paketteki veri--> " + gonderen);
          paket.setLength(buffer.length);
        }
        catch (IOException ex) {
          System.err.println(ex);
        }
       }
    } 
    catch (SocketException  ex) {
      System.err.println(ex);
    } 
  }
}

Orj kod:http://www.ethemsulan.pastebin.com/mWzUrBxR

package www.ethemsulan.com;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
public class Veritabani {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
String ogrNo=JOptionPane.showInputDialog("Ogrenci no girin");
String ad=JOptionPane.showInputDialog("Ogrenci adi");
String soyad=JOptionPane.showInputDialog("Ogrenci soyadi");
int yas=Integer.valueOf(JOptionPane.showInputDialog("Ogrenci yasi"));
Class.forName("com.mysql.jdbc.Driver");
Connection baglanti=DriverManager.getConnection(
"jdbc:mysql://localhost:3306/tablolar", "root", "123");
Statement ifade=baglanti.createStatement();
ifade.executeUpdate("insert into kisibilgi(okulno,ad,soyad,yas)" +
		" values('"+ogrNo+"','"+ad+"','"+soyad+"','"+yas+"')");
ifade.executeUpdate("update kisibilgi set ad='Mehmet Ethem' where okulno='0705040332'");
ifade.execute("delete from kisibilgi where okulno='050403028'");
	}
}

Orj kod:http://www.ethemsulan.pastebin.com/hDmLnpt3

Java ile mysql veritabanın detaylı açıklaması için : http://www.ethemsulan.com/2009/12/java-ile-mysql-veritabanna-baglanma.html bakabilirsiniz.Daha önce bu tür kodlar yayınladım fakat başlık kısmı farklı veya proje içinde kullandığımdan direk ulaşılamıyor.Bu neden kısa bir şekilde yazmayı ve anlamlı bir başlıklı yayaınlamaya karar verdim.

package www.ethemsulan.com;
import javax.swing.JOptionPane;
public class StringTopla {
public static void main(String[] args) {
//Stringlere ait bir çok işlemi gerçekleştirir.
StringBuilder toplamString=new StringBuilder();
for (int i = 0; i < 3; i++) {
String k=JOptionPane.showInputDialog("Bir string gir");
//append() stringbuilera ait metodtur.
		toplamString.append(k);
	}
System.out.println(toplamString);
//Bu örnekte stringleri toplanmış.Bunu string topla+=k
//şeklinde de yapabilirdik ama o zaman null değer eklenecekti
//String toplamString2 = null;
//for (int i = 0; i < 2; i++) {
//	toplamString2+=JOptionPane.showInputDialog("Bir string gir");
//}
//System.out.println(toplamString2);
	}
}

Orj kod:http://www.ethemsulan.pastebin.com/JtSMuBXR

StringBuilder sınıfına ait bir çok metod var. toplamString. Ctrl+space basınca metodlardan hangileri işinize gerekiyorsa kullanabilirisniz.Görüntü için:http://prntscr.com/7efp