You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Derleyici özdeş String atomları (string literal) için aynı adresi verir.
/*---------------------------------------------------------------------------------------------------------------------- 18.07.2020 Derleyici özdeş String atomları (string literal) için aynı adresi verir. Aşağıdaki örnekte "ankara" sabiti için hep aynı adres verilir----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
Strings1 = "ankara";
Strings2 = "ankara";
if (s1 == s2)
System.out.println("Aynı yazı");
elseSystem.out.println("Farklı yazılar");
}
}
Sınıf çalışması: isPangramTR ve isPangramEN isimli metodlarını yazınız (1.1).
/*---------------------------------------------------------------------------------------------------------------------- Sınıf Çalışması: Parametresi ile aldığı bir yazının Türkçe pangram olup olmadığını test eden isPangramTR ve İngilizce pangram olup olmadığını test eden isPangramEN isimli metotları yazınız ve test ediniz. Pangram: İçerisinde özel isim bulunmayan anlamlı ve ilgili alfabenin tüm karakterlerini içeren cümlelere denir. Örnekler: İngilizce Pangram: The quick brown fox jumps over the lazy dog Türkçe: Pijamalı hasta yağız şoföre çabucak güvendi----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
PangramTest.run();
}
}
classPangramTest {
publicstaticvoidrun()
{
java.util.Scannerkb = newjava.util.Scanner(System.in);
for (;;) {
System.out.print("Bir yazı giriniz:");
Stringtext = kb.nextLine();
if (text.equals("quit"))
break;
System.out.println(StringUtil.isPangramTR(text) ? "Pangram" : "Pangram değil");
System.out.println(StringUtil.isPangramEN(text) ? "Pangram" : "Not a pangram");
}
System.out.println("Tekrar yapıyor musunuz?");
}
}
classStringUtil {
publicstaticbooleanisPangramTR(Stringtext)
{
returnisPangram(text.toLowerCase(), "abcçdefgğhıijklmnoöprsştuüvyz");
}
publicstaticbooleanisPangramEN(Stringtext)
{
returnisPangram(text.toLowerCase(), "abcdefghijklmnopqrstuwxvyz");
}
publicstaticbooleanisPangram(Stringtext, Stringalphabet)
{
intlength = alphabet.length();
for (inti = 0; i < length; ++i)
if (text.indexOf(alphabet.charAt(i)) == -1)
returnfalse;
returntrue;
}
}
/*---------------------------------------------------------------------------------------------------------------------- Yukarıdaki örnek için İngiliz alfabesindeki karakterler unicode tablosunda sıralı olduğundan isPangramEN aşağıdaki gibi yazılzbilir. Ancak yukarıdaki yaklaşım daha geneldir ----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
PangramENTest.run();
}
}
classPangramENTest {
publicstaticvoidrun()
{
java.util.Scannerkb = newjava.util.Scanner(System.in);
for (;;) {
System.out.print("Input a text:");
Stringtext = kb.nextLine();
if (text.equals("quit"))
break;
System.out.println(StringUtil.isPangramEN(text) ? "Pangram" : "Not a pangram");
}
System.out.println("Tekrar yapıyor musunuz?");
}
}
classStringUtil {
publicstaticbooleanisPangramEN(Stringtext)
{
for (charc = 'a'; c <= 'z'; ++c)
if (text.indexOf(c) == -1)
returnfalse;
returntrue;
}
}
Sınıf çalışması: isPalindrom isimli motodu yazınız (2).
/*---------------------------------------------------------------------------------------------------------------------- Sınıf Çalışması: Parametresi ile aldığı bir yazının palindrom olup olmadığını test eden isPalindrome isimli metodu yazınız ve test ediniz Palindrom: Yalnızca alfabetik karakterleri tersten de okunduğunda aynı olan yazılara denir. Yani alfabetik dışı karakterler yok sayılır Örnek: ey edip Adana'da pide ye -> eyedipadanadapideye Anastas mum satsana -> anastasmumsatsana Ali Papila -> alipapila----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
PalindromeTest.run();
}
}
classPalindromeTest {
publicstaticvoidrun()
{
java.util.Scannerkb = newjava.util.Scanner(System.in);
for (;;) {
System.out.print("Bir yazı giriniz:");
Stringtext = kb.nextLine();
if (text.equals("quit"))
break;
System.out.println(StringUtil.isPalindrome(text) ? "Palindrom" : "Palindrom değil");
}
System.out.println("Tekrar yapıyor musunuz?");
}
}
classStringUtil {
publicstaticbooleanisPalindrome(Strings)
{
Stringstr = getLetters(s);
intleft = 0;
intright = str.length() - 1;
while (left < right) {
charchLeft = Character.toLowerCase(str.charAt(left++));
charchRight = Character.toLowerCase(str.charAt(right--));
if (chLeft != chRight)
returnfalse;
}
returntrue;
}
publicstaticStringgetLetters(Strings)
{
Stringstr = "";
intlength = s.length();
for (inti = 0; i < length; ++i) {
charch = s.charAt(i);
if (Character.isLetter(ch))
str += ch;
}
returnstr;
}
}
Sınıf çalışması: isPalindrom isimli motodu yazınız (3).
/*---------------------------------------------------------------------------------------------------------------------- Sınıf Çalışması: Parametresi ile aldığı bir yazının palindrom olup olmadığını test eden isPalindrome isimli metodu yazınız ve test ediniz Palindrom: Yalnızca alfabetik karakterleri tersten de okunduğunda aynı olan yazılara denir. Yani alfabetik dışı karakterler yok sayılır Örnek: ey edip Adana'da pide ye -> eyedipadanadapideye Anastas mum satsana -> anastasmumsatsana Ali Papila -> alipapila----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
PalindromeTest.run();
}
}
classPalindromeTest {
publicstaticvoidrun()
{
java.util.Scannerkb = newjava.util.Scanner(System.in);
for (;;) {
System.out.print("Bir yazı giriniz:");
Stringtext = kb.nextLine();
if (text.equals("quit"))
break;
System.out.println(StringUtil.isPalindrome(text) ? "Palindrom" : "Palindrom değil");
}
System.out.println("Tekrar yapıyor musunuz?");
}
}
classStringUtil {
publicstaticbooleanisPalindrome(Strings)
{
Stringstr = getLetters(s);
intlen = str.length();
inthalfLen = len / 2;
for (inti = 0; i < halfLen; ++i) {
charchLeft = Character.toLowerCase(str.charAt(i));
charchRight = Character.toLowerCase(str.charAt(len - 1 - i));
if (chLeft != chRight)
returnfalse;
}
returntrue;
}
publicstaticStringgetLetters(Strings)
{
Stringstr = "";
intlength = s.length();
for (inti = 0; i < length; ++i) {
charch = s.charAt(i);
if (Character.isLetter(ch))
str += ch;
}
returnstr;
}
}
Sınıf çalışması: isPalindrom isimli motodu yazınız(4).
/*---------------------------------------------------------------------------------------------------------------------- 19.07.2020 Sınıf Çalışması: Parametresi ile aldığı bir yazının palindrom olup olmadığını test eden isPalindrome isimli metodu yazınız ve test ediniz Palindrom: Yalnızca alfabetik karakterleri tersten de okunduğunda aynı olan yazılara denir. Yani alfabetik dışı karakterler yok sayılır Örnek: ey edip Adana'da pide ye -> eyedipadanadapideye Anastas mum satsana -> anastasmumsatsana Ali Papila -> alipapila----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
PalindromeTest.run();
}
}
classPalindromeTest {
publicstaticvoidrun()
{
java.util.Scannerkb = newjava.util.Scanner(System.in);
for (;;) {
System.out.print("Bir yazı giriniz:");
Stringtext = kb.nextLine();
if (text.equals("quit"))
break;
System.out.println(StringUtil.isPalindrome(text) ? "Palindrom" : "Palindrom değil");
}
System.out.println("Tekrar yapıyor musunuz?");
}
}
classStringUtil {
publicstaticbooleanisPalindrome(Strings)
{
intleft = 0;
intright = s.length() - 1;
while (left < right) {
charchLeft = Character.toLowerCase(s.charAt(left));
if (!Character.isLetter(chLeft)) {
++left;
continue;
}
charchRight = Character.toLowerCase(s.charAt(right));
if (!Character.isLetter(chRight)) {
--right;
continue;
}
if (chLeft != chRight)
returnfalse;
++left;
--right;
}
returntrue;
}
}
Sınıf çalışması: getLongestPalindrome metodunu yazınız.
/*---------------------------------------------------------------------------------------------------------------------- Sınıf Çalışması: Parametresi ile aldığı bir yazının içerisindeki en uzun palindromu döndüren getLongestPalindrome metodunu yazınız ve test ediniz. adaeyedipadanadapideyeadecealipapila----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
LongestPalindromeTest.run();
}
}
classLongestPalindromeTest {
publicstaticvoidrun()
{
java.util.Scannerkb = newjava.util.Scanner(System.in);
for (;;) {
System.out.print("Bir yazı giriniz:");
Stringtext = kb.nextLine();
if (text.equals("quit"))
break;
System.out.println(StringUtil.getLongestPalindrome(text));
}
System.out.println("Tekrar yapıyor musunuz?");
}
}
classStringUtil {
publicstaticStringgetLongestPalindrome(Strings)
{
Stringtext = "";
intendIndex = s.length();
while (endIndex != 0) {
intbeginIndex = 0;
while (beginIndex != endIndex) {
Stringstr = s.substring(beginIndex++, endIndex);
if (str.length() > 1 && StringUtil.isPalindrome(str) && str.length() > text.length())
text = str;
}
--endIndex;
}
returntext;
}
publicstaticbooleanisPalindrome(Strings)
{
intleft = 0;
intright = s.length() - 1;
while (left < right) {
charchLeft = Character.toLowerCase(s.charAt(left));
if (!Character.isLetter(chLeft)) {
++left;
continue;
}
charchRight = Character.toLowerCase(s.charAt(right));
if (!Character.isLetter(chRight)) {
--right;
continue;
}
if (chLeft != chRight)
returnfalse;
++left;
--right;
}
returntrue;
}
}
Sınıf Çalışması: getRandomTextTR ve getRandomTextEN metodlarını yazınız.
/*---------------------------------------------------------------------------------------------------------------------- Sınıf Çalışması: Parametresi ile aldığı int türden n değeri için n tane rasgele belirlenmiş Türkçe karakterlerden oluşan bir yazı döndüren getRandomTextTR ile n tane rasgelebelirlenmiş İngilizce karakterlerden oluşan bir yazı döndüren getRandomTextEN metodunu yazınız ve test ediniz----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
GetRandomTextTest.run();
}
}
classGetRandomTextTest {
publicstaticvoidrun()
{
java.util.Scannerkb = newjava.util.Scanner(System.in);
java.util.Randomr = newjava.util.Random();
for (;;) {
System.out.print("Bir sayı giriniz:");
intn = Integer.parseInt(kb.nextLine());
if (n <= 0)
break;
System.out.println(StringUtil.getRandomTextTR(r,n));
System.out.println(StringUtil.getRandomTextEN(r,n));
}
System.out.println("Tekrar yapıyor musunuz?");
}
}
classStringUtil {
publicstaticStringgetRandomTextTR(intn)
{
returngetRandomTextTR(newjava.util.Random(), n);
}
publicstaticStringgetRandomTextTR(java.util.Randomr, intn)
{
returngetRandomText(r, n, "abcçdefgğhıijklmnoöprsştuüvyz");
}
publicstaticStringgetRandomTextEN(intn)
{
returngetRandomTextEN(newjava.util.Random(), n);
}
publicstaticStringgetRandomTextEN(java.util.Randomr, intn)
{
returngetRandomText(r, n, "abcdefghijklmnopqrstuwxvyz");
}
publicstaticStringgetRandomText(java.util.Randomr, intn, Stringalphabet)
{
Stringstr = "";
for (inti = 0; i < n; ++i) {
charch = alphabet.charAt(r.nextInt(alphabet.length()));
if (r.nextBoolean())
ch = Character.toUpperCase(ch);
str += ch;
}
returnstr;
}
}
/*---------------------------------------------------------------------------------------------------------------------- Sarmalayan sınıfların parseXXX metodları ile yazılar sayıya çevrilebilir. Bu metotlar parametresi ile aldıkları yazı ilgili türe ilişkin değere çevrilemiyor ise exception oluşur----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
java.util.Scannerkb = newjava.util.Scanner(System.in);
System.out.print("Bir yazı giriniz:");
Strings = kb.nextLine();
intval = Integer.parseInt(s);
System.out.println(val * val);
}
}
Neden nextInt, nextLong, nextDouble metotları nextLine metodu ile aynı Scanner nesnesi üzerinde kullanılmamalıdır ?
/*---------------------------------------------------------------------------------------------------------------------- Scanner sınıfının çalışma sistematiği dolayısıyla nextInt, nextLong, nextDouble gibi metotlar nextLine metodu ile aynı Scanner nesnesi üzerinde kullanılmamalıdır. Bu yüzden özellikle klevye işlemlerinde nextLine metodu dışındakiler kullanılmamalıdır. Aşağıdaki çalıştırarak sorunu inceleyiniz----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
java.util.Scannerkb = newjava.util.Scanner(System.in);
for (;;) {
System.out.print("Numarayı giriniz:");
intnumber = kb.nextInt();
if (number <= 0)
break;
System.out.print("İsim giriniz");
Stringname = kb.nextLine();
System.out.printf("{number:%d, name:%s}%n", number, name);
}
}
}
String sınıfının valueOf metodu.
/*---------------------------------------------------------------------------------------------------------------------- String sınıfının valueOf metotları ile temel türlerin yazı karşılığı elde edilebilir ----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
intval = 10;
Stringstr = String.valueOf(val);
System.out.println(str);
}
}
/*---------------------------------------------------------------------------------------------------------------------- Yukarıdaki işlem aşağıdaki biçimde de yapılabilir ----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
intval = 10;
Stringstr = val + "";
System.out.println(str);
}
}
String sınıfının contains metodu.
/*---------------------------------------------------------------------------------------------------------------------- String sınıfının contains metodu ile bir yazı içerisinde başka bir yazının varolup olmadığı test edilebilir ----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
java.util.Scannerkb = newjava.util.Scanner(System.in);
System.out.print("Bir yazı giriniz:");
Strings1 = kb.nextLine();
System.out.print("Zararlı yazıyı giriniz:");
Strings2 = kb.nextLine();
System.out.println(s1.contains(s2) ? "Yazı kabul edilemez" : "Yazı kabul edilebilir");
}
}
Sınıf çalışması: isPangramTr ve isPangramEN metodlarını yazınız.
/*---------------------------------------------------------------------------------------------------------------------- Sınıf Çalışması: Parametresi ile aldığı bir yazının Türkçe pangram olup olmadığını test eden isPangramTR ve İngilizce pangram olup olmadığını test eden isPangramEN isimli metotları yazınız ve test ediniz. Pangram: İçerisinde özel isim bulunmayan anlamlı ve ilgili alfabenin tüm karakterlerini içeren cümlelere denir. Örnekler: İngilizce Pangram: The quick brown fox jumps over the lazy dog Türkçe: Pijamalı hasta yağız şoföre çabucak güvendi----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
PangramTest.run();
}
}
classPangramTest {
publicstaticvoidrun()
{
java.util.Scannerkb = newjava.util.Scanner(System.in);
for (;;) {
System.out.print("Bir yazı giriniz:");
Stringtext = kb.nextLine();
if (text.equals("quit"))
break;
System.out.println(StringUtil.isPangramTR(text) ? "Pangram" : "Pangram değil");
System.out.println(StringUtil.isPangramEN(text) ? "Pangram" : "Not a pangram");
}
System.out.println("Tekrar yapıyor musunuz?");
}
}
classStringUtil {
publicstaticbooleanisPangramTR(Stringtext)
{
returnisPangram(text.toLowerCase(), "abcçdefgğhıijklmnoöprsştuüvyz");
}
publicstaticbooleanisPangramEN(Stringtext)
{
returnisPangram(text.toLowerCase(), "abcdefghijklmnopqrstuwxvyz");
}
publicstaticbooleanisPangram(Stringtext, Stringalphabet)
{
intlength = alphabet.length();
for (inti = 0; i < length; ++i)
if (!text.contains(alphabet.charAt(i) + ""))
returnfalse;
returntrue;
}
}
String sınıfının format metodu.
/*---------------------------------------------------------------------------------------------------------------------- String sınıfının static format metodu formatlı bir yazı elde etmek için kullanılabilir. Bu metotta kullanılan format karakterleri printf metoduyla aynıdır----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
java.util.Scannerkb = newjava.util.Scanner(System.in);
System.out.print("Birinci sayıyı giriniz:");
inta = Integer.parseInt(kb.nextLine());
System.out.print("İkinic sayıyı giriniz:");
intb = Integer.parseInt(kb.nextLine());
Stringstr = String.format("%d + %d = %d", a, b, a + b);
System.out.println(str);
}
}
/*---------------------------------------------------------------------------------------------------------------------- Tüm öğrendiklerimize göre örneğin int türden bir değerin yazı karşılığı aşağıdaki gibi 3 şekilde elde edilebilir----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
intval = 10;
Strings1 = val + "";
Strings2 = String.valueOf(val);
Strings3 = String.format("%d", val);
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}
}
/*---------------------------------------------------------------------------------------------------------------------- Tüm öğrendiklerimize göre örneğin int türden bir değerin yazı karşılığı aşağıdaki gibi 3 şekilde elde edilebilir----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
Pointp = newPoint(100, 23);
System.out.println(p.toString());
p.offset(-30);
Stringstr = p.toString();
//...System.out.println(str);
}
}
classPoint {
publicintx;
publicinty;
publicPoint()
{
}
publicPoint(inta)
{
x = a;
}
publicPoint(inta, intb)
{
x = a;
y = b;
}
publicdoubledistance(Pointp)
{
returndistance(p.x, p.y);
}
publicdoubledistance(inta, intb)
{
returnMath.sqrt((x - a) * (x - a) + (y - b) * (y - b));
}
publicvoidoffset(intdxy)
{
offset(dxy, dxy);
}
publicvoidoffset(intdx, intdy)
{
x += dx;
y += dy;
}
publicStringtoString()
{
returnString.format("{x: %d, y: %d}", x, y);
}
}
/*---------------------------------------------------------------------------------------------------------------------- String sınıfının replace metodu ile yazı içerisinde bulunan başka yazılar değiştirilebilir----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
Stringstr = "Bugün hava çok sıcak. Bu sıcak havada dışarıda dolaşılamıyor";
str = str.replace("sıcak", "soğuk");
System.out.println(str);
}
}
/*---------------------------------------------------------------------------------------------------------------------- String sınıfının replace metodu----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
Stringstr = "Bugün hava çok sıcak. Bu çok sıcak havada dışarıda dolaşılamıyor";
str = str.replace(" çok", "");
System.out.println(str);
}
}
/*---------------------------------------------------------------------------------------------------------------------- String sınıfının replace metodu----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
Stringstr = "Bugün hava çok sıcak. Bu \tçok sıcak havada dışarıda dolaşılamıyor";
str = str.replace(" ", "");
str = str.replace("\t", "");
System.out.println(str);
}
}
java 7 ile birlikte switch deyiminde String kullanımı.
/*---------------------------------------------------------------------------------------------------------------------- Java 7 ile birlikte switch deyiminde String de kullanılabilmektedir. Bu durumda case bölümlerinin String literal olması zorunludur. String sınıfı switch deyimi ile kullanıldığında karşılaştırma equals metodu ile yapılır----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
java.util.Scannerkb = newjava.util.Scanner(System.in);
System.out.printf("Şehir ismi giriniz:");
StringcityName = kb.nextLine();
switch (cityName) {
case"istanbul":
System.out.println("Marmara Bölgesi");
break;
case"ankara":
System.out.println("İç Anadolu Bölgesi");
break;
case"izmir":
System.out.println("Ege Bölgesi");
break;
default:
System.out.println("Sistemde kayıtlı olmayan şehir girdiniz");
}
System.out.println("Tekrar yapıyor musunuz?");
}
}
/*---------------------------------------------------------------------------------------------------------------------- Java 7 ile birlikte switch deyiminde String de kullanılabilmektedir. Bu durumda case bölümlerinin String literal olması zorunludur. String sınıfı switch deyimi ile kullanıldığında karşılaştırma equals metodu ile yapılır----------------------------------------------------------------------------------------------------------------------*/packagecsd;
classApp {
publicstaticvoidmain(String [] args)
{
java.util.Scannerkb = newjava.util.Scanner(System.in);
System.out.printf("Şehir ismi giriniz:");
StringcityName = kb.nextLine();
switch (cityName.toLowerCase()) {
case"istanbul":
System.out.println("Marmara Bölgesi");
break;
case"ankara":
System.out.println("İç Anadolu Bölgesi");
break;
case"izmir":
System.out.println("Ege Bölgesi");
break;
default:
System.out.println("Sistemde kayıtlı olmayan şehir girdiniz");
}
System.out.println("Tekrar yapıyor musunuz?");
}
}
Paketler
/*---------------------------------------------------------------------------------------------------------------------- Aşağıdaki maddelerde aksi belirtilmediği sürece "sınıf" kavramı aslında "tür" kavramı olarak kullanılacaktır. Burada "tür" temel türler dışında kalan programcının belirlediği türlerdir (user defined types). Yani tüm referans türleri için geçerli olacaktır. Paketler: - javac her sınıf için ayrı bir .class uzantılı dosya (byte code) üretir. Bu işlem sınıflar aynı java dosyasında olsa bile yapılır. - Bir .class dosyasının ait olduğu pakete ilişkin bir dizinde (directory) bulunması gerekir. Aslında java dosyaları için böyle bir zorunluluk yoktur. Ancak bir çok IDE bunu kendi içinde zorunlu tutar. - Bir sınıf herhangi bir pakette olabilir. Bir proje içerisinde kullanılan sınıfların aynı pakette olma zorunluluğu yoktur - Bir paket içerisinde bildirilen bir sınıfın farklı bir paketten kullanılabilmesi için public olarak bildirilmesi gerekir. public olarak bildirilmeyen bir sınıf ancak aynı paketteki diğer sınıflar tarafından kullanılabilir (friendly, internal) - Farklı paketlerdeki sınıflar için byte kodların da uygun yerde olması gerekir. Uygulamanın çalışmaya başlatıldığı dizin tüm paketlerin olması gereken dizindir. Ancak bu durumun istisnaları olabilir - Uygulamada kullanılan sınıflar içerisinde bir tane main metodu olmak zorunda değildir. Ancak şüphesiz java programına verilen byte koda ilişkin sınıfta (bu kesinlike sınıf olmalı) mutlaka uygun main metodunun olması gerekir. main metodunun aşağıdaki yapıya sahip olması gerekir. public static void main(String [] args) java programına verilen main metoduna giriş noktası (entry point) denilmektedir - public olarak bildirilen bir sınıfın kendi ismiyle aynı isimde bir .java uzantılı dosyada olması zorunludur. - Bir .java uzantılı dosyanın içerisinde yalnızca dosya ismi ile aynı olan sınıf public olarak bildirilebilir. - Bir .java dosyası içerisinde public sınıf olmak zorunda değildir. public sınıf olacaksa dosya ismi ile aynı isimde olan sınıf ancak public olabilir. - Bir .java dosyası içerisinde public olmayan istenildiği kadar sınıf yazılabilir. Bu sınıflar aynı pakette bildirilmiş olur. - Bir java dosyası içerisinde dosya ismi ile aynı isimde sınıf olmak zorunda değildir - Bir paket içerisinde aynı isimde birden fazla sınıf bildirimi yapılamaz. Aynı java dosyası veya farklı java dosyası içerisinde olmak bu durumu değiştirmez - Farklı paketler içerisinde aynı isimde sınıflar olabilir - Bir java dosyası içerisindeki sınıflar o java dosyasının başında bildirilen paket içerisinde olurlar. - Bir java dosyasında farklı paket bildirimleri yapılamaz - Hiç bir paket bildirimi olmayan java dosyalarında bildirilen sınıflar isimsiz paket (unnamed package) denilen bir paket içerisinde kabul edilir. Ancak projelerde isimsiz paket içerisinde sınıf bildirimi yapılmamalıdır. - Bir sınıfa onun bulunduğu paket dışında başka bir paketin içerisinde, paket ismi ve nokta operatörü ile erişilebilir - Bir paket içerisinde alt paketler olabilir. Alt paketler package <paket ismi>.<alt paket ismi>; biçiminde bildirilir. Alt paketlerde bulunan sınıfların .class dosyaları (byte code) paket hiyararşisine uygun alt dizinlerde bulunmalıdır. - Paketler içiçe bile olsa farklı paketlerdir. Yani örneğin org.csystem.util paketi içerisinde ArrayUtil sınıfı varsa org.csystem paketi içerisinde de ArrayUtil sınıfı olabilir. Bu isimler kesinlikle çakışmaz - Paket isimleri genelde firmaya ilişkin tekil bir bilgi olan domain isimleri ile belirlenir. Örneğin CSD firmasının paketleri ve sınıfları domain adresi "csystem.org" olduğundan "org.csystem" paketi altında yazılabilir. Bu şekilde yaklaşıma uyulmalıdır. - java nın standart tüm paketleri ve sınıfları java isimli bir paket altında toplanmıştır - java.lang isimli paket altında bulunan tüm sınıflar her yerden görülebilirdir. Yani buradaki isimleri paket ismi ile kombine etmeye gerek yoktur (import bildirimi olmadan da kullanılabilir)----------------------------------------------------------------------------------------------------------------------*//*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/