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
/*---------------------------------------------------------------------------------------------------------------------- 25.07.2020 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>.<al paket isimi>...; 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)----------------------------------------------------------------------------------------------------------------------*/
java.lang paketi altındaki tüm sınıflar heryerden görülebilirdir.
/*---------------------------------------------------------------------------------------------------------------------- java.lang paketi altındaki tüm sınıflar heryerden görülebilirdir----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
Strings = "ankara"; //java.lang.String s = "ankara";System.out.println("Merhaba"); //java.lang.System.out.println("Merhaba");
}
}
Point sınıfı (paket bildirimi ile)
/*---------------------------------------------------------------------------------------------------------------------- Point sınıfı----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.math.geometry;
publicclassPoint {
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);
}
}
/*---------------------------------------------------------------------------------------------------------------------- PointF sınıfı----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.math.geometry;
publicclassPointF {
publicfloatx;
publicfloaty;
publicPointF()
{
}
publicPointF(floata)
{
x = a;
}
publicPointF(floata, floatb)
{
x = a;
y = b;
}
publicdoubledistance(Pointp)
{
returndistance(p.x, p.y);
}
publicdoubledistance(floata, floatb)
{
returnMath.sqrt((x - a) * (x - a) + (y - b) * (y - b));
}
publicvoidoffset(floatdxy)
{
offset(dxy, dxy);
}
publicvoidoffset(floatdx, floatdy)
{
x += dx;
y += dy;
}
publicStringtoString()
{
returnString.format("{x: %f, y: %f}", x, y);
}
}
DateApp uygulaması (paket bilidirmi ile)
/*---------------------------------------------------------------------------------------------------------------------- DateApp uygulaması----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
org.csystem.app.samples.dateapp.DateUtilApp.run();
}
}
/*---------------------------------------------------------------------------------------------------------------------- Sınıf çalışması: Parametresi ile aldığı int türden gün, ay ve yıl bilgilerine ilişkin tarihin aşağıdaki açıklamalara göre haftanın hangi gününe geldiğini döndüren getDayOfWeek metodunu yazınız. Açıklamalar: - Metot geçersiz bir tarih için -1 değerini döndürecektir. - Haftanın günü 1.1.1900 ile verilen tarih arasındaki gün sayısının 7 değerine modu alınarak bulunabilir - 7 değerine mod alındıktan sonra sıfır Pazar, 1 pazartesi, .., 6 cumartesi günü için elde edilecek değerdir - 1.1.1900' den önceki tarihler geçersiz kabul edilecektir ----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app.samples.dateapp;
publicclassDateUtilApp {
publicstaticvoiddisplayTR(intday, intmonth, intyear)
{
intdayOfWeek = DateUtil.getDayOfWeek(day, month, year);
if (dayOfWeek == -1) {
System.out.println("Geçersiz tarih");
return;
}
switch (dayOfWeek) {
case0:
System.out.printf("%02d/%02d/%04d Pazar%n", day, month, year);
break;
case1:
System.out.printf("%02d/%02d/%04d Pazartesi%n", day, month, year);
break;
case2:
System.out.printf("%02d/%02d/%04d Salı%n", day, month, year);
break;
case3:
System.out.printf("%02d/%02d/%04d Çarşamba%n", day, month, year);
break;
case4:
System.out.printf("%02d/%02d/%04d Perşembe%n", day, month, year);
break;
case5:
System.out.printf("%02d/%02d/%04d Cuma%n", day, month, year);
break;
case6:
System.out.printf("%02d/%02d/%04d Cumartesi%n", day, month, year);
break;
}
if (dayOfWeek == 0 || dayOfWeek == 6)
System.out.println("Bugün kurs var. Tekrar yaptınız mı?");
elseSystem.out.println("Kurs günü yaklaşıyor. Tekrar yapınız!!!!");
}
publicstaticvoidrun()
{
java.util.Scannerkb = newjava.util.Scanner(System.in);
for (;;) {
System.out.print("Gün bilgisini giriniz:");
intday = Integer.parseInt(kb.nextLine());
if (day == 0)
break;
System.out.print("Ay bilgisini giriniz:");
intmonth = Integer.parseInt(kb.nextLine());
System.out.print("Yıl bilgisini giriniz:");
intyear = Integer.parseInt(kb.nextLine());
displayTR(day, month, year);
}
}
}
packageorg.csystem.app.samples.dateapp;
publicclassDateUtil {
publicstaticintgetDayOfWeek(intday, intmonth, intyear)
{
intdayOfYear;
dayOfYear = getDayOfYear(day, month, year);
if (dayOfYear == -1 || year < 1900)
return -1;
for (inty = 1900; y < year; ++y)
dayOfYear += isLeapYear(y) ? 366 : 365;
returndayOfYear % 7;
}
publicstaticintgetDayOfYear(intday, intmonth, intyear)
{
if (!isValidDate(day, month, year))
return -1;
intdayOfYear = day;
switch (month - 1) {
case11:
dayOfYear += 30;
case10:
dayOfYear += 31;
case9:
dayOfYear += 30;
case8:
dayOfYear += 31;
case7:
dayOfYear += 31;
case6:
dayOfYear += 30;
case5:
dayOfYear += 31;
case4:
dayOfYear += 30;
case3:
dayOfYear += 31;
case2:
dayOfYear += isLeapYear(year) ? 29 : 28;
case1:
dayOfYear += 31;
}
returndayOfYear;
}
publicstaticbooleanisValidDate(intday, intmonth, intyear)
{
if (day < 1 || day > 31 || month < 1 || month > 12)
returnfalse;
intdays = 31;
switch (month) {
case4:
case6:
case9:
case11:
days = 30;
break;
case2:
days = isLeapYear(year) ? 29 : 28;
}
returnday <= days;
}
publicstaticbooleanisLeapYear(intyear)
{
returnyear % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}
}
StringUtil sınıfı (paket bildirimi ile)
/*---------------------------------------------------------------------------------------------------------------------- StringUtil sınıfı ----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.util;
publicclassStringUtil {
publicstaticStringcapitalize(Strings)
{
if (s.isEmpty())
returns;
returnCharacter.toUpperCase(s.charAt(0)) + s.substring(1).toLowerCase();
}
publicstaticintcountString(Strings1, Strings2)
{
intcount = 0;
for (inti = -1; (i = s1.indexOf(s2, i + 1)) != -1; ++count)
;
returncount;
}
publicstaticStringgetLetters(Strings)
{
Stringstr = "";
intlength = s.length();
for (inti = 0; i < length; ++i) {
charch = s.charAt(i);
if (Character.isLetter(ch))
str += ch;
}
returnstr;
}
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;
}
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;
}
publicstaticStringgetRandomTextEN(intn)
{
returngetRandomTextEN(newjava.util.Random(), n);
}
publicstaticStringgetRandomTextEN(java.util.Randomr, intn)
{
returngetRandomText(r, n, "abcdefghijklmnopqrstuwxvyz");
}
publicstaticStringgetRandomTextTR(intn)
{
returngetRandomTextTR(newjava.util.Random(), n);
}
publicstaticStringgetRandomTextTR(java.util.Randomr, intn)
{
returngetRandomText(r, n, "abcçdefgğhıijklmnoöprsştuüvyz");
}
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;
}
publicstaticbooleanisPangram(Stringtext, Stringalphabet)
{
intlength = alphabet.length();
for (inti = 0; i < length; ++i)
if (!text.contains(alphabet.charAt(i) + ""))
returnfalse;
returntrue;
}
publicstaticbooleanisPangramEN(Stringtext)
{
returnisPangram(text.toLowerCase(), "abcdefghijklmnopqrstuwxvyz");
}
publicstaticbooleanisPangramTR(Stringtext)
{
returnisPangram(text.toLowerCase(), "abcçdefgğhıijklmnoöprsştuüvyz");
}
publicstaticStringpadLeft(Strings, intlength)
{
returnpadLeft(s, length, ' ');
}
publicstaticStringpadLeft(Strings, intlength, charch)
{
length -= s.length();
if (length <= 0)
returns;
returnrepeat(length, ch) + s;
}
publicstaticStringpadRight(Strings, intlength)
{
returnpadRight(s, length, ' ');
}
publicstaticStringpadRight(Strings, intlength, charch)
{
length -= s.length();
if (length <= 0)
returns;
returns + repeat(length, ch);
}
publicstaticStringremoveWhitespaces(Strings)
{
intlength = s.length();
Stringstr = "";
for (inti = 0; i < length; ++i) {
charch = s.charAt(i);
if (!Character.isWhitespace(ch))
str += ch;
}
returnstr;
}
publicstaticStringrepeat(intn, charch)
{
Strings = "";
while (n-- > 0)
s += ch;
returns;
}
publicstaticStringreverse(Stringstr)
{
StringrevStr = "";
for (inti = str.length() - 1; i >= 0; --i)
revStr += str.charAt(i);
returnrevStr;
}
publicstaticStringtrimLeft(Strings)
{
inti;
intlen = s.length();
for (i = 0; i < len && Character.isWhitespace(s.charAt(i)); ++i)
;
returns.substring(i);
}
publicstaticStringtrimRight(Strings)
{
inti;
for (i = s.length() - 1; i >= 0 && Character.isWhitespace(s.charAt(i)); --i)
;
returns.substring(0, i + 1);
}
}
NumberUtil sınıfı (paket bilidirimi ile)
/*---------------------------------------------------------------------------------------------------------------------- NumberUtil sınıfı ----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.util;
publicclassNumberUtil {
publicstaticintfactorial(intn)
{
if (n < 0)
return -1;
intresult = 1;
for (inti = 2; i <= n; ++i)
result *= i;
returnresult;
}
publicstaticintgetDigitsCount(longval)
{
returnval == 0 ? 1 : (int)Math.log10(Math.abs(val)) + 1;
}
publicstaticintgetDigitsPowSum(intval)
{
intcount = getDigitsCount(val);
intsum = 0;
while (val != 0) {
sum += pow(val % 10, count);
val /= 10;
}
returnsum;
}
publicstaticintgetDigitsSum(intval)
{
val = Math.abs(val);
intsum = 0;
while (val != 0) {
sum += val % 10;
val /= 10;
}
returnsum;
}
publicstaticintgetFibonacciNumber(intn)
{
if (n <= 0)
return -1;
if (n <= 2)
returnn - 1;
intprev1 = 1, prev2 = 0, val = 0;
for (inti = 2; i < n; ++i) {
val = prev1 + prev2;
prev2 = prev1;
prev1 = val;
}
returnval;
}
publicstaticintgetNextFibonacciNumber(intval)
{
if (val < 0)
return0;
intprev1 = 1, prev2 = 0, result;
for (;;) {
result = prev1 + prev2;
if (result > val)
returnresult;
prev2 = prev1;
prev1 = result;
}
}
publicstaticintgetPrime(intn)
{
if (n <= 0)
return -1;
intcount = 0;
intval = 2;
for (inti = 2; count < n; ++i)
if (isPrime(i)) {
++count;
val = i;
}
returnval;
}
publicstaticintgetReverse(intval)
{
intreverse = 0;
while (val != 0) {
reverse = reverse * 10 + val % 10;
val /= 10;
}
returnreverse;
}
publicstaticbooleanisArmstrong(intval)
{
if (val < 0)
returnfalse;
returngetDigitsPowSum(val) == val;
}
publicstaticbooleanisEven(intval)
{
returnval % 2 == 0;
}
publicstaticbooleanisOdd(intval)
{
return !isEven(val);
}
publicstaticbooleanisPrime(intval)
{
if (val <= 1)
returnfalse;
if (val % 2 == 0)
returnval == 2;
if (val % 3 == 0)
returnval == 3;
if (val % 5 == 0)
returnval == 5;
if (val % 7 == 0)
returnval == 7;
intsqrtVal = (int) Math.sqrt(val);
for (inti = 11; i <= sqrtVal; i += 2)
if (val % i == 0)
returnfalse;
returntrue;
}
publicstaticintmax(inta, intb, intc)
{
returnMath.max(Math.max(a, b), c);
}
publicstaticintmin(inta, intb, intc)
{
returnMath.min(Math.min(a, b), c);
}
publicstaticintpow(inta, intb)
{
if (b <= 0)
return1;
intresult = 1;
while (b-- > 0)
result *= a;
returnresult;
}
}
İsim arama (Name LookUp)
/*---------------------------------------------------------------------------------------------------------------------- İsim arama (name lookup): Derleyici kullanılan bir ismi gördüğünde o ismi önce arar. Eğer bulursa doğru kullanılıp kullanılmadığına bakar. Derleyici isim aramayı belirli kurallara göre yapar. Burada anlatılacak kuralların dışında başka detaylar da vardır. Bunlar daha sonra ele alınacaktır. Yani buradaki kuralları genel kurallar olarak düşünmelisiniz. İstisnaları zaten ayrı kurallardır ----------------------------------------------------------------------------------------------------------------------*/
Derleyici bildirim sırasındaki isimleri aramaz. Zaten bu bildirimdir
/*---------------------------------------------------------------------------------------------------------------------- Derleyici bildirim sırasındaki isimleri aramaz. Zaten bu bildirimdir----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
inta; // a aranmaz
}
}
classSample { // Sample aranmazpublicinta; //a aranmazpublicvoidfoo() //foo aranmaz
{
}
}
Bir isim programlamada iki türlü kullanılabilir: nitelikli (qualified), niteliksiz (unqualified)
/*---------------------------------------------------------------------------------------------------------------------- Bir isim programlamada iki türlü kullanılabilir: nitelikli (qualified), niteliksiz (unqualified) Bir isim doğrudan veya nokta operatörünü solunda kalmışsa (yani solunda nokta operatörü yoksa) niteliksiz kullanılmış olur ve niteliksiz isim arama (unqualified name lookup) kurallarına göre aranır. Bir isim nokta operatörünün sağında kullanılmışsa nitelikli kullanılmış olur ve nitelikli isim arama (qualified name lookup) kurallarına göre aranır. Özetle: Bir isim nokta operatörünün sağında kalıyorsa nitelikli, kalmıyorsa niteliksiz aranır Anahtar Notlar: Yukarıdaki tamımlardaki nitelikli veya niteliksiz olumlu ve olumsuz bir etki anlamında düşünülmemelidir----------------------------------------------------------------------------------------------------------------------*/
Nitelikli ve niteliksiz kullanım
/*---------------------------------------------------------------------------------------------------------------------- Nitelikli ve niteliksiz kullanım----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
inta; // a aranmaz a = 10; // a niteliksiz aranırSamples; // Sample niteliksiz aranır, s aranmazs = newSample(); //s niteliksiz, Sample niteliksiz aranırs.foo(); // s niteliksiz, foo nitelikli aranırs.a = 24; // s nitelikisiz, a nitelikli aranır
}
}
classSample { // Sample aranmazpublicinta; //a aranmazpublicvoidfoo() //foo aranmaz
{
//..
}
}
İsim bulundu fakat kullanım hatası
/*---------------------------------------------------------------------------------------------------------------------- Derleyici bir ismi bulduktan sonra doğru kullanılıp kullanılmadığına bakar. Aşağıdaki örnekte derleyici a ismini bulmuştur ancak kullanım hatasından dolayı error oluşur----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
inta;
a = 2.3; //error
}
}
İsim bulunamadı hatası
/*---------------------------------------------------------------------------------------------------------------------- Aşağıdaki örnekte isim bulunamadığından dolayı error oluşur----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
inta;
x = 2.3; //error
}
}
Niteliksiz isim arama kuralları (1)
/*---------------------------------------------------------------------------------------------------------------------- Niteliksiz isim arama kuralları (else if biçiminde değerlendiriniz) 1. Bir isim metot içerisinde kullanılmışsa, kullanıldığı yerden yukarıya doğru metot içerisinde aranır. Burada isim için parametre değişkenlerine de bakılır----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
inta;
a = 34;
}
}
classSample {
publicvoidfoo(intx)
{
inta;
a = x;
//...
}
}
Niteliksiz isim arama kuralları (2)
/*---------------------------------------------------------------------------------------------------------------------- Niteliksiz isim arama kuralları (else if biçiminde değerlendiriniz) 2. İsim metot içerisinde bulunamazsa metodun ait olduğu sınıfın tamamında ancak tüm metotların dışında aranır. Burada sınıf içerisinde bulunamazsa taban sınıflara (super class) da bakılır. Taban sınıf konusu işleride ele alınacaktır----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
Samples = newSample();
s.foo(67);
System.out.println(s.a);
}
}
classSample {
publicvoidfoo(intb)
{
a = b;
}
publicinta;
}
Yukarıdaki iki kurala göre bir sınıfın veri elemanı ile aynı isimde olan metot parametre değişkenleri veya yerel değişkenler olabilir
/*---------------------------------------------------------------------------------------------------------------------- Yukarıdaki iki kurala göre bir sınıfın veri elemanı ile aynı isimde olan metot parametre değişkenleri veya yerel değişkenler olabilir----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
Samples = newSample();
s.foo(67);
System.out.println(s.a);
}
}
classSample {
publicinta;
publicvoidfoo(intb)
{
inta; //shadowinga = b;
}
}
/*---------------------------------------------------------------------------------------------------------------------- Yukarıdaki iki kurala göre bir sınıfın veri elemanı ile aynı isimde olan metot parametre değişkenleri veya yerel değişkenler olabilir----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
Samples = newSample();
s.foo(67);
System.out.println(s.a);
}
}
classSample {
publicinta;
publicvoidfoo(inta)
{
a = a;
}
}
Niteliksiz isim arama kuralları (3)
/*---------------------------------------------------------------------------------------------------------------------- Niteliksiz isim arama kuralları (else if biçiminde değerlendiriniz) 3. Sınıfın ait olduğu paket içerisinde aranır. Burada alt paketlere veya üst paketlere bakılmaz, sadece ait olduğu pakete bakılır----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
Samples = newSample(); //errors.foo(67);
System.out.println(s.a);
}
}
packageorg.csystem;
publicclassSample {
publicvoidfoo(intb)
{
a = b;
}
publicinta;
}
/*---------------------------------------------------------------------------------------------------------------------- Niteliksiz isim arama kuralları (else if biçiminde değerlendiriniz) 3. Sınıfın ait olduğu paket içerisinde aranır. Burada alt paketlere veya üst paketlere bakılmaz, sadece ait olduğu pakete bakılır----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
Samples = newSample(); //errors.foo(67);
System.out.println(s.a);
}
}
packageorg.csystem.app.test;
publicclassSample {
publicvoidfoo(intb)
{
a = b;
}
publicinta;
}
isimsiz paket altına bir sınıf konmamalıdır
/*---------------------------------------------------------------------------------------------------------------------- Yukarıdaki kurala göre isimsiz paket altında bulunan bir sınıfa bir paket içerisinden erişilemez. Sadece bu sebepten dolayı bile isimsiz paket altına bir sınıf konmamalıdır----------------------------------------------------------------------------------------------------------------------*/
Niteliksiz isim arama kuralları (4)
/*---------------------------------------------------------------------------------------------------------------------- Niteliksiz isim arama kuralları (else if biçiminde değerlendiriniz) 4. Yıldızlı import bildirimi (import on demand declaration) varsa o pakatlere de bakılır. Bu konu ileride ele alınacaktır----------------------------------------------------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------------------------------- Yukarıdaki arama işleminde sonuna kadar hiçbir yerde bulamazsa error oluşur ----------------------------------------------------------------------------------------------------------------------*/
Nitelikli isim arama kuralları (1)
/*---------------------------------------------------------------------------------------------------------------------- Nitelikli isim arama kuralları (else if biçiminde değerlendiriniz) 1. Aranacak ismin solunda sınıf ismi varsa isim ilgili sınıf içerisinde aranır. Bulunamazsa taban sınıflara da bakılır ----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
Sample.foo();
Sample.x = 10;
}
}
classSample {
publicstaticintx;
publicstaticvoidfoo()
{
}
}
Nitelikli isim arama kuralları (2)
/*---------------------------------------------------------------------------------------------------------------------- Nitelikli isim arama kuralları (else if biçiminde değerlendiriniz) 2. Aranacak ismin solunda referans ismi varsa isim referansa ilişkin sınıfın içerisinde aranır. Bulunamazsa taban sınıflara da bakılır ----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
Samples = newSample();
s.foo();
s.x = 10;
}
}
classSample {
publicintx;
publicvoidfoo()
{
}
}
Nitelikli isim arama kuralları (3)
/*---------------------------------------------------------------------------------------------------------------------- Nitelikli isim arama kuralları (else if biçiminde değerlendiriniz) 3. Aranacak ismin solunda bir paket ismi varsa bu durumda isim paket içerisinde aranır. Alt ya da üst paketlere bakılmaz----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
test.Samples;
}
}
Alt paket isimleri niteliksiz aramaya dahil değildir.
/*---------------------------------------------------------------------------------------------------------------------- Alt paket isimleri niteliksiz aramaya dahil değildir. Yani aşağıdaki örnekte test isimli paket org.csystem.app paketi içerisinde paket ismi olduğu için dikkate alınmaz. Bir paket isminin niteliksiz aranması için global düzeyde olması gerekir. Yani üst paketinin olmaması gerekir----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
test.Samples; //error
}
}
packageorg.csystem.app.test;
publicclassSample {
}
import bildirimi iki şekilde kullanılabilir:
/*---------------------------------------------------------------------------------------------------------------------- import bildirimi genel olarak bir tür ismi için niteliklendirmeyi azaltmak, dolayısıyla daha kolay ve açık (clean) kod yazımı için vardır. import bildirimleri bir kütüphaneyi "import etmek" anlamına gelmez. import bildirimi iki şekilde kullanılabilir: 1. Yıldızlı import bildirimi (import on demand declaration) 2. Yıldızsız import bildirimi (import single type declaration) import bildirimleri paket bildiriminden sonra diğer bildirimlerden önce yazılmalıdır. import bildirimleri nasıl kullanılırsa kullanılsın yazılma sırasının önemi yoktur. import bildirimleri niteliksiz kullanım için geçerlidir. Nitelikli kullanımda import bildirimlerinin etkisi olmaz----------------------------------------------------------------------------------------------------------------------*/
Yıldızlı import bildirimi (import on demand declaration)
/*---------------------------------------------------------------------------------------------------------------------- Yıldızlı import bildiriminin (import on demand declaration): import <paket ismi>.[paket ismi.paketismi listesi].*; Yıldızlı import bildirimi niteliksiz bir isim paket içerisinde de bulunamazsa arama için bakılacak paketi temsil eder. Yani adeta bir paketin başka paket içerisine isim arama anlamında enjekte edilmesidir. Her zmaan olduğu gibi yıldızlı import bildirimi ile yazılan paketlerde bulunamama durumunda alt ya da üst paketlere bakılmaz----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
importjava.util.*;
importorg.csystem.math.*;
importorg.csystem.math.geometry.*;
classApp {
publicstaticvoidmain(String [] args)
{
Randomr;
Complexz;
Pointp;
//...
}
}
Yıldızlı import bildiriminin (import on demand declaration) gerekliliği
/*---------------------------------------------------------------------------------------------------------------------- Yıldızlı import bildiriminin (import on demand declaration): import <paket ismi>.[paket ismi.paketismi listesi].*; Yıldızlı import bildirimi niteliksiz bir isim paket içerisinde de bulunamazsa arama için bakılacak paketi temsil eder. Yani adeta bir paketin başka paket içerisine isim arama anlamında enjekte edilmesidir. Her zmaan olduğu gibi yıldızlı import bildirimi ile yazılan paketlerde bulunamama durumunda alt ya da üst paketlere bakılmaz Daha açık olarak yıldızlı import bildirimi derleyiciye "eğer niteliksi bir ismi pakette de bulamazsan bu paketlere de bak" anlamına gelir----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
importjava.util.*;
importorg.csystem.math.*;
importorg.csystem.math.geometry.*;
classApp {
publicstaticvoidmain(String [] args)
{
Randomr;
Complexz;
Pointp;
//...
}
}
import bildirimi ve ambiguity durumu
/*---------------------------------------------------------------------------------------------------------------------- Yıldızlı import bildirimlerine paketlerin hepsine bakılır. Birden fazla paket içerisinde bulunursa yine error oluşur (ambiguity)----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
importtest.*;
importmest.*;
classApp {
publicstaticvoidmain(String [] args)
{
Mamplem;
Samples; //error: ambiguity//...
}
}
/*---------------------------------------------------------------------------------------------------------------------- Aşağıdaki örnekte yıldızlı import deyimi ile niteliklendirme azaltılmıştır. Daha okunabilir bir kod yazılmıştır----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
importjava.util.*;
importorg.csystem.math.geometry.*;
classApp {
publicstaticvoidmain(String [] args)
{
Scannerkb = newScanner(System.in);
System.out.print("Bir sayı giriniz:");
intcount = Integer.parseInt(kb.nextLine());
Randomr = newRandom();
for (inti = 0; i < count; ++i) {
Pointp = newPoint(r.nextInt(100), r.nextInt(100));
System.out.println(p.toString());
}
}
}
Yıldızsız import bildiriminin (import single type declaration) genel biçimi:
/*---------------------------------------------------------------------------------------------------------------------- Yıldızsız import bildiriminin (import single type declaration) genel biçimi: import <paket ismi>.[alt paketler].<sınıf ismi>; Not: Burada sınıf ismi bir user defined type anlamındadır. Bu bildirim sınıf isminin doğrudan kullanılacağını belirtir. Bu bildirimin yazılabildiği durumda bu isim için klasik isim arama yapılmaz. Yani niteliksiz isim arama kuralları bu isim için uygulanmaz. Programc münkün olduğunca bu import deyimini tercih etmelidir. Zaten bir çok IDE de programcıyı bu şekilde yönlendirir----------------------------------------------------------------------------------------------------------------------*/
Yıldızsız import bildiriminin (import single type declaration) gerekliliği
/*---------------------------------------------------------------------------------------------------------------------- Aşağıdaki örnekte import java.util.Scanner bildirimi bu dosyada Scannner ismi doğrudan kullanıldığında java.util.Scanner olarak anlaşılsın demektir ----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
importjava.util.Random;
importjava.util.Scanner;
importorg.csystem.math.geometry.Point;
classApp {
publicstaticvoidmain(String [] args)
{
Scannerkb = newScanner(System.in);
System.out.print("Bir sayı giriniz:");
intcount = Integer.parseInt(kb.nextLine());
Randomr = newRandom();
for (inti = 0; i < count; ++i) {
Pointp = newPoint(r.nextInt(100), r.nextInt(100));
System.out.println(p.toString());
}
}
}
import bildiriminin yapılması sırasında hata oluşması durumu
/*---------------------------------------------------------------------------------------------------------------------- 26.07.2020 Aşağıdaki durumda Sample isminin niteliksiz kullanımına ilişkin birden fazla yıldızsız import bildirimi yapılmaya çalışıldığından error oluşur. Burada Sample isminin doğrudan kullanılması gerekmez. Hata import bildiriminde oluşur ----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
importtest.Sample;
importmest.Sample; //error:classApp {
publicstaticvoidmain(String [] args)
{
Samples = newSample();
s.foo();
}
}
packagetest;
publicclassSample {
publicvoidfoo()
{
System.out.println("test.Sample.foo");
}
}
packagemest;
publicclassSample {
publicvoidfoo()
{
System.out.println("mest.Sample.foo");
}
}
/*---------------------------------------------------------------------------------------------------------------------- Aşağıdaki örnekte import bildirimine ilişkin java dosyasında Sample sınıfı zaten olduğundan yani bu java dosyasında Sample ismi adeta rezerve edilmiş olduğunda aşağıdaki gibi yıldızsız import bildirimi geçersizdir----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
importtest.Sample; //errorclassApp {
publicstaticvoidmain(String [] args)
{
Samples = newSample();
s.foo();
}
}
classSample {
publicvoidfoo()
{
System.out.println("org.csystem.app.Sample.foo");
}
}
packagetest;
publicclassSample {
publicvoidfoo()
{
System.out.println("test.Sample.foo");
}
}
StringUtil sınıfı (güncellendi)
/*---------------------------------------------------------------------------------------------------------------------- StringUtil sınıfı ----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.util;
importjava.util.Random;
publicclassStringUtil {
publicstaticStringcapitalize(Strings)
{
if (s.isEmpty())
returns;
returnCharacter.toUpperCase(s.charAt(0)) + s.substring(1).toLowerCase();
}
publicstaticintcountString(Strings1, Strings2)
{
intcount = 0;
for (inti = -1; (i = s1.indexOf(s2, i + 1)) != -1; ++count)
;
returncount;
}
publicstaticStringgetLetters(Strings)
{
Stringstr = "";
intlength = s.length();
for (inti = 0; i < length; ++i) {
charch = s.charAt(i);
if (Character.isLetter(ch))
str += ch;
}
returnstr;
}
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;
}
publicstaticStringgetRandomText(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;
}
publicstaticStringgetRandomTextEN(intn)
{
returngetRandomTextEN(newRandom(), n);
}
publicstaticStringgetRandomTextEN(Randomr, intn)
{
returngetRandomText(r, n, "abcdefghijklmnopqrstuwxvyz");
}
publicstaticStringgetRandomTextTR(intn)
{
returngetRandomTextTR(newRandom(), n);
}
publicstaticStringgetRandomTextTR(Randomr, intn)
{
returngetRandomText(r, n, "abcçdefgğhıijklmnoöprsştuüvyz");
}
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;
}
publicstaticbooleanisPangram(Stringtext, Stringalphabet)
{
intlength = alphabet.length();
for (inti = 0; i < length; ++i)
if (!text.contains(alphabet.charAt(i) + ""))
returnfalse;
returntrue;
}
publicstaticbooleanisPangramEN(Stringtext)
{
returnisPangram(text.toLowerCase(), "abcdefghijklmnopqrstuwxvyz");
}
publicstaticbooleanisPangramTR(Stringtext)
{
returnisPangram(text.toLowerCase(), "abcçdefgğhıijklmnoöprsştuüvyz");
}
publicstaticStringpadLeft(Strings, intlength)
{
returnpadLeft(s, length, ' ');
}
publicstaticStringpadLeft(Strings, intlength, charch)
{
length -= s.length();
if (length <= 0)
returns;
returnrepeat(length, ch) + s;
}
publicstaticStringpadRight(Strings, intlength)
{
returnpadRight(s, length, ' ');
}
publicstaticStringpadRight(Strings, intlength, charch)
{
length -= s.length();
if (length <= 0)
returns;
returns + repeat(length, ch);
}
publicstaticStringremoveWhitespaces(Strings)
{
intlength = s.length();
Stringstr = "";
for (inti = 0; i < length; ++i) {
charch = s.charAt(i);
if (!Character.isWhitespace(ch))
str += ch;
}
returnstr;
}
publicstaticStringrepeat(intn, charch)
{
Strings = "";
while (n-- > 0)
s += ch;
returns;
}
publicstaticStringreverse(Stringstr)
{
StringrevStr = "";
for (inti = str.length() - 1; i >= 0; --i)
revStr += str.charAt(i);
returnrevStr;
}
publicstaticStringtrimLeft(Strings)
{
inti;
intlen = s.length();
for (i = 0; i < len && Character.isWhitespace(s.charAt(i)); ++i)
;
returns.substring(i);
}
publicstaticStringtrimRight(Strings)
{
inti;
for (i = s.length() - 1; i >= 0 && Character.isWhitespace(s.charAt(i)); --i)
;
returns.substring(0, i + 1);
}
}
import ile bildirilen paketlerin sınıflarının çakışması durumunda ne yapılmalıdır ?
/*---------------------------------------------------------------------------------------------------------------------- Aşağıdaki örnekte Pointe'lerden bir tanesi yıldızsız ise diğeri nitelikli kullanılmalıdır----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
importorg.csystem.math.geometry.Point;
importtest.*;
classApp {
publicstaticvoidmain(String [] args)
{
Pointp1 = newPoint();
test.Pointp2 = newtest.Point();
//...
}
}
Aşağıdaki örnekte import bildirimleri ile nitaliklendirme azaltılmıştır
/*---------------------------------------------------------------------------------------------------------------------- Aşağıdaki örnekte import bildirimleri ile nitaliklendirme azaltılmıştır----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
importjava.util.Random;
importjava.util.Scanner;
importorg.csystem.util.NumberUtil;
classApp {
publicstaticvoidmain(String [] args)
{
Scannerkb = newScanner(System.in);
System.out.print("Bir sayı giriniz");
intn = Integer.parseInt(kb.nextLine());
Randomr = newRandom();
for (inti = 0; i < n; ++i) {
intval = r.nextInt(100);
System.out.printf("%d sayısı %s%n", val, NumberUtil.isPrime(val) ? "asaldır" : "asal değildir");
}
}
}
static import bildirimleri ve türleri
/*---------------------------------------------------------------------------------------------------------------------- Java 5 ile birlikte import static bildirimleri eklenmiştir. import static bildirimlerinin de iki biçimi vardır: 1. Yıldızlı import static bildirimi (import static on demand declaration) 2. Yıldızsız import static bildirimi (import static single type declaration) import static bildirimlerinde okunabilirliği etkileyen durumlar olabilir. Buna dikkat edilmelidir. import static bildirimleri import bildirimleri ile aynı yerde yazılır. Herhangi bir şekilde sıranın önemi olmaz----------------------------------------------------------------------------------------------------------------------*/
Yıldızlı import static bildiriminin genel biçimi: (import static on demand declaration)
/*---------------------------------------------------------------------------------------------------------------------- Yıldızlı import static bildiriminin genel biçimi: import static <paket ismi>.[alpaket listesi].<tür ismi>.*; Bu bildirim ile bildirimin yapıldığı java dosyasında bildirime ilişkin tüm static elemanlar doğurdan kullanılabilir duruma gelir. ----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
importstaticjava.lang.Math.*;
importstaticorg.csystem.util.NumberUtil.*;
importjava.util.Random;
classApp {
publicstaticvoidmain(String [] args)
{
Randomr = newRandom();
for (inti = 0; i < 10; ++i) {
intval = r.nextInt(100);
if (isPrime(val))
System.out.printf("%f * %d = %f%n", PI, val, PI * val);
}
}
}
NumberUtil sınıfı (Güncellendi)
/*---------------------------------------------------------------------------------------------------------------------- NumberUtil sınıfı ----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.util;
importstaticjava.lang.Math.*;
publicclassNumberUtil {
publicstaticintfactorial(intn)
{
if (n < 0)
return -1;
intresult = 1;
for (inti = 2; i <= n; ++i)
result *= i;
returnresult;
}
publicstaticintgetDigitsCount(longval)
{
returnval == 0 ? 1 : (int)log10(abs(val)) + 1;
}
publicstaticintgetDigitsPowSum(intval)
{
intcount = getDigitsCount(val);
intsum = 0;
while (val != 0) {
sum += pow(val % 10, count);
val /= 10;
}
returnsum;
}
publicstaticintgetDigitsSum(intval)
{
val = abs(val);
intsum = 0;
while (val != 0) {
sum += val % 10;
val /= 10;
}
returnsum;
}
publicstaticintgetFibonacciNumber(intn)
{
if (n <= 0)
return -1;
if (n <= 2)
returnn - 1;
intprev1 = 1, prev2 = 0, val = 0;
for (inti = 2; i < n; ++i) {
val = prev1 + prev2;
prev2 = prev1;
prev1 = val;
}
returnval;
}
publicstaticintgetNextFibonacciNumber(intval)
{
if (val < 0)
return0;
intprev1 = 1, prev2 = 0, result;
for (;;) {
result = prev1 + prev2;
if (result > val)
returnresult;
prev2 = prev1;
prev1 = result;
}
}
publicstaticintgetPrime(intn)
{
if (n <= 0)
return -1;
intcount = 0;
intval = 2;
for (inti = 2; count < n; ++i)
if (isPrime(i)) {
++count;
val = i;
}
returnval;
}
publicstaticintgetReverse(intval)
{
intreverse = 0;
while (val != 0) {
reverse = reverse * 10 + val % 10;
val /= 10;
}
returnreverse;
}
publicstaticbooleanisArmstrong(intval)
{
if (val < 0)
returnfalse;
returngetDigitsPowSum(val) == val;
}
publicstaticbooleanisEven(intval)
{
returnval % 2 == 0;
}
publicstaticbooleanisOdd(intval)
{
return !isEven(val);
}
publicstaticbooleanisPrime(intval)
{
if (val <= 1)
returnfalse;
if (val % 2 == 0)
returnval == 2;
if (val % 3 == 0)
returnval == 3;
if (val % 5 == 0)
returnval == 5;
if (val % 7 == 0)
returnval == 7;
intsqrtVal = (int)sqrt(val);
for (inti = 11; i <= sqrtVal; i += 2)
if (val % i == 0)
returnfalse;
returntrue;
}
publicstaticintmax(inta, intb, intc)
{
returnMath.max(Math.max(a, b), c);
}
publicstaticintmin(inta, intb, intc)
{
returnMath.min(Math.min(a, b), c);
}
publicstaticintpow(inta, intb)
{
if (b <= 0)
return1;
intresult = 1;
while (b-- > 0)
result *= a;
returnresult;
}
}
StringUtil sınıfı (Güncellendi)
/*---------------------------------------------------------------------------------------------------------------------- StringUtil sınıfı ----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.util;
importjava.util.Random;
importstaticjava.lang.Character.*;
publicclassStringUtil {
publicstaticStringcapitalize(Strings)
{
if (s.isEmpty())
returns;
returntoUpperCase(s.charAt(0)) + s.substring(1).toLowerCase();
}
publicstaticintcountString(Strings1, Strings2)
{
intcount = 0;
for (inti = -1; (i = s1.indexOf(s2, i + 1)) != -1; ++count)
;
returncount;
}
publicstaticStringgetLetters(Strings)
{
Stringstr = "";
intlength = s.length();
for (inti = 0; i < length; ++i) {
charch = s.charAt(i);
if (isLetter(ch))
str += ch;
}
returnstr;
}
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;
}
publicstaticStringgetRandomText(Randomr, intn, Stringalphabet)
{
Stringstr = "";
for (inti = 0; i < n; ++i) {
charch = alphabet.charAt(r.nextInt(alphabet.length()));
if (r.nextBoolean())
ch = toUpperCase(ch);
str += ch;
}
returnstr;
}
publicstaticStringgetRandomTextEN(intn)
{
returngetRandomTextEN(newRandom(), n);
}
publicstaticStringgetRandomTextEN(Randomr, intn)
{
returngetRandomText(r, n, "abcdefghijklmnopqrstuwxvyz");
}
publicstaticStringgetRandomTextTR(intn)
{
returngetRandomTextTR(newRandom(), n);
}
publicstaticStringgetRandomTextTR(Randomr, intn)
{
returngetRandomText(r, n, "abcçdefgğhıijklmnoöprsştuüvyz");
}
publicstaticbooleanisPalindrome(Strings)
{
intleft = 0;
intright = s.length() - 1;
while (left < right) {
charchLeft = toLowerCase(s.charAt(left));
if (!isLetter(chLeft)) {
++left;
continue;
}
charchRight = toLowerCase(s.charAt(right));
if (!isLetter(chRight)) {
--right;
continue;
}
if (chLeft != chRight)
returnfalse;
++left;
--right;
}
returntrue;
}
publicstaticbooleanisPangram(Stringtext, Stringalphabet)
{
intlength = alphabet.length();
for (inti = 0; i < length; ++i)
if (!text.contains(alphabet.charAt(i) + ""))
returnfalse;
returntrue;
}
publicstaticbooleanisPangramEN(Stringtext)
{
returnisPangram(text.toLowerCase(), "abcdefghijklmnopqrstuwxvyz");
}
publicstaticbooleanisPangramTR(Stringtext)
{
returnisPangram(text.toLowerCase(), "abcçdefgğhıijklmnoöprsştuüvyz");
}
publicstaticStringpadLeft(Strings, intlength)
{
returnpadLeft(s, length, ' ');
}
publicstaticStringpadLeft(Strings, intlength, charch)
{
length -= s.length();
if (length <= 0)
returns;
returnrepeat(length, ch) + s;
}
publicstaticStringpadRight(Strings, intlength)
{
returnpadRight(s, length, ' ');
}
publicstaticStringpadRight(Strings, intlength, charch)
{
length -= s.length();
if (length <= 0)
returns;
returns + repeat(length, ch);
}
publicstaticStringremoveWhitespaces(Strings)
{
intlength = s.length();
Stringstr = "";
for (inti = 0; i < length; ++i) {
charch = s.charAt(i);
if (!isWhitespace(ch))
str += ch;
}
returnstr;
}
publicstaticStringrepeat(intn, charch)
{
Strings = "";
while (n-- > 0)
s += ch;
returns;
}
publicstaticStringreverse(Stringstr)
{
StringrevStr = "";
for (inti = str.length() - 1; i >= 0; --i)
revStr += str.charAt(i);
returnrevStr;
}
publicstaticStringtrimLeft(Strings)
{
inti;
intlen = s.length();
for (i = 0; i < len && isWhitespace(s.charAt(i)); ++i)
;
returns.substring(i);
}
publicstaticStringtrimRight(Strings)
{
inti;
for (i = s.length() - 1; i >= 0 && isWhitespace(s.charAt(i)); --i)
;
returns.substring(0, i + 1);
}
}
Point sınıfı (Güncellendi)
/*---------------------------------------------------------------------------------------------------------------------- Point sınıfı----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.math.geometry;
importstaticjava.lang.Math.*;
publicclassPoint {
publicintx;
publicinty;
publicPoint()
{
}
publicPoint(inta)
{
x = a;
}
publicPoint(inta, intb)
{
x = a;
y = b;
}
publicdoubledistance(Pointp)
{
returndistance(p.x, p.y);
}
publicdoubledistance(inta, intb)
{
returnsqrt((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);
}
}
PointF sınıfı (güncellendi)
/*---------------------------------------------------------------------------------------------------------------------- PointF sınıfı----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.math.geometry;
importstaticjava.lang.Math.*;
publicclassPointF {
publicfloatx;
publicfloaty;
publicPointF()
{
}
publicPointF(floata)
{
x = a;
}
publicPointF(floata, floatb)
{
x = a;
y = b;
}
publicdoubledistance(Pointp)
{
returndistance(p.x, p.y);
}
publicdoubledistance(floata, floatb)
{
returnsqrt((x - a) * (x - a) + (y - b) * (y - b));
}
publicvoidoffset(floatdxy)
{
offset(dxy, dxy);
}
publicvoidoffset(floatdx, floatdy)
{
x += dx;
y += dy;
}
publicStringtoString()
{
returnString.format("{x: %f, y: %f}", x, y);
}
}
Yıldızsız import static bildiriminin genel biçimi: (import static single type declaration)
/*---------------------------------------------------------------------------------------------------------------------- Yıldızsız import static bildiriminin genel biçimi: import static <paket ismi>.[alt paket listesi].<tür ismi>.<static eleman ismi>; Bu bildirim ile belirtilen static eleman ilgili java dosyasında doğrudan kullanılabilir ----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
importstaticjava.lang.Math.PI;
importstaticorg.csystem.util.NumberUtil.isPrime;
importjava.util.Random;
classApp {
publicstaticvoidmain(String [] args)
{
Randomr = newRandom();
for (inti = 0; i < 10; ++i) {
intval = r.nextInt(100);
if (isPrime(val))
System.out.printf("%f * %d = %f%n", PI, val, PI * val);
}
}
}
NumberUtil sınıfı (güncellendi)
/*---------------------------------------------------------------------------------------------------------------------- NumberUtil sınıfı ----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.util;
importstaticjava.lang.Math.abs;
importstaticjava.lang.Math.log10;
importstaticjava.lang.Math.sqrt;
publicclassNumberUtil {
publicstaticintfactorial(intn)
{
if (n < 0)
return -1;
intresult = 1;
for (inti = 2; i <= n; ++i)
result *= i;
returnresult;
}
publicstaticintgetDigitsCount(longval)
{
returnval == 0 ? 1 : (int)log10(abs(val)) + 1;
}
publicstaticintgetDigitsPowSum(intval)
{
intcount = getDigitsCount(val);
intsum = 0;
while (val != 0) {
sum += pow(val % 10, count);
val /= 10;
}
returnsum;
}
publicstaticintgetDigitsSum(intval)
{
val = abs(val);
intsum = 0;
while (val != 0) {
sum += val % 10;
val /= 10;
}
returnsum;
}
publicstaticintgetFibonacciNumber(intn)
{
if (n <= 0)
return -1;
if (n <= 2)
returnn - 1;
intprev1 = 1, prev2 = 0, val = 0;
for (inti = 2; i < n; ++i) {
val = prev1 + prev2;
prev2 = prev1;
prev1 = val;
}
returnval;
}
publicstaticintgetNextFibonacciNumber(intval)
{
if (val < 0)
return0;
intprev1 = 1, prev2 = 0, result;
for (;;) {
result = prev1 + prev2;
if (result > val)
returnresult;
prev2 = prev1;
prev1 = result;
}
}
publicstaticintgetPrime(intn)
{
if (n <= 0)
return -1;
intcount = 0;
intval = 2;
for (inti = 2; count < n; ++i)
if (isPrime(i)) {
++count;
val = i;
}
returnval;
}
publicstaticintgetReverse(intval)
{
intreverse = 0;
while (val != 0) {
reverse = reverse * 10 + val % 10;
val /= 10;
}
returnreverse;
}
publicstaticbooleanisArmstrong(intval)
{
if (val < 0)
returnfalse;
returngetDigitsPowSum(val) == val;
}
publicstaticbooleanisEven(intval)
{
returnval % 2 == 0;
}
publicstaticbooleanisOdd(intval)
{
return !isEven(val);
}
publicstaticbooleanisPrime(intval)
{
if (val <= 1)
returnfalse;
if (val % 2 == 0)
returnval == 2;
if (val % 3 == 0)
returnval == 3;
if (val % 5 == 0)
returnval == 5;
if (val % 7 == 0)
returnval == 7;
intsqrtVal = (int)sqrt(val);
for (inti = 11; i <= sqrtVal; i += 2)
if (val % i == 0)
returnfalse;
returntrue;
}
publicstaticintmax(inta, intb, intc)
{
returnMath.max(Math.max(a, b), c);
}
publicstaticintmin(inta, intb, intc)
{
returnMath.min(Math.min(a, b), c);
}
publicstaticintpow(inta, intb)
{
if (b <= 0)
return1;
intresult = 1;
while (b-- > 0)
result *= a;
returnresult;
}
}
StringUtil sınıfı (Güncellendi)
/*---------------------------------------------------------------------------------------------------------------------- StringUtil sınıfı ----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.util;
importstaticjava.lang.Character.isLetter;
importstaticjava.lang.Character.isWhitespace;
importstaticjava.lang.Character.toLowerCase;
importstaticjava.lang.Character.toUpperCase;
importjava.util.Random;
publicclassStringUtil {
publicstaticStringcapitalize(Strings)
{
if (s.isEmpty())
returns;
returntoUpperCase(s.charAt(0)) + s.substring(1).toLowerCase();
}
publicstaticintcountString(Strings1, Strings2)
{
intcount = 0;
for (inti = -1; (i = s1.indexOf(s2, i + 1)) != -1; ++count)
;
returncount;
}
publicstaticStringgetLetters(Strings)
{
Stringstr = "";
intlength = s.length();
for (inti = 0; i < length; ++i) {
charch = s.charAt(i);
if (isLetter(ch))
str += ch;
}
returnstr;
}
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;
}
publicstaticStringgetRandomText(Randomr, intn, Stringalphabet)
{
Stringstr = "";
for (inti = 0; i < n; ++i) {
charch = alphabet.charAt(r.nextInt(alphabet.length()));
if (r.nextBoolean())
ch = toUpperCase(ch);
str += ch;
}
returnstr;
}
publicstaticStringgetRandomTextEN(intn)
{
returngetRandomTextEN(newRandom(), n);
}
publicstaticStringgetRandomTextEN(Randomr, intn)
{
returngetRandomText(r, n, "abcdefghijklmnopqrstuwxvyz");
}
publicstaticStringgetRandomTextTR(intn)
{
returngetRandomTextTR(newRandom(), n);
}
publicstaticStringgetRandomTextTR(Randomr, intn)
{
returngetRandomText(r, n, "abcçdefgğhıijklmnoöprsştuüvyz");
}
publicstaticbooleanisPalindrome(Strings)
{
intleft = 0;
intright = s.length() - 1;
while (left < right) {
charchLeft = toLowerCase(s.charAt(left));
if (!isLetter(chLeft)) {
++left;
continue;
}
charchRight = toLowerCase(s.charAt(right));
if (!isLetter(chRight)) {
--right;
continue;
}
if (chLeft != chRight)
returnfalse;
++left;
--right;
}
returntrue;
}
publicstaticbooleanisPangram(Stringtext, Stringalphabet)
{
intlength = alphabet.length();
for (inti = 0; i < length; ++i)
if (!text.contains(alphabet.charAt(i) + ""))
returnfalse;
returntrue;
}
publicstaticbooleanisPangramEN(Stringtext)
{
returnisPangram(text.toLowerCase(), "abcdefghijklmnopqrstuwxvyz");
}
publicstaticbooleanisPangramTR(Stringtext)
{
returnisPangram(text.toLowerCase(), "abcçdefgğhıijklmnoöprsştuüvyz");
}
publicstaticStringpadLeft(Strings, intlength)
{
returnpadLeft(s, length, ' ');
}
publicstaticStringpadLeft(Strings, intlength, charch)
{
length -= s.length();
if (length <= 0)
returns;
returnrepeat(length, ch) + s;
}
publicstaticStringpadRight(Strings, intlength)
{
returnpadRight(s, length, ' ');
}
publicstaticStringpadRight(Strings, intlength, charch)
{
length -= s.length();
if (length <= 0)
returns;
returns + repeat(length, ch);
}
publicstaticStringremoveWhitespaces(Strings)
{
intlength = s.length();
Stringstr = "";
for (inti = 0; i < length; ++i) {
charch = s.charAt(i);
if (!isWhitespace(ch))
str += ch;
}
returnstr;
}
publicstaticStringrepeat(intn, charch)
{
Strings = "";
while (n-- > 0)
s += ch;
returns;
}
publicstaticStringreverse(Stringstr)
{
StringrevStr = "";
for (inti = str.length() - 1; i >= 0; --i)
revStr += str.charAt(i);
returnrevStr;
}
publicstaticStringtrimLeft(Strings)
{
inti;
intlen = s.length();
for (i = 0; i < len && isWhitespace(s.charAt(i)); ++i)
;
returns.substring(i);
}
publicstaticStringtrimRight(Strings)
{
inti;
for (i = s.length() - 1; i >= 0 && isWhitespace(s.charAt(i)); --i)
;
returns.substring(0, i + 1);
}
}
Point sınıfı(güncellendi)
/*---------------------------------------------------------------------------------------------------------------------- Point sınıfı----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.math.geometry;
importstaticjava.lang.Math.sqrt;
publicclassPoint {
publicintx;
publicinty;
publicPoint()
{
}
publicPoint(inta)
{
x = a;
}
publicPoint(inta, intb)
{
x = a;
y = b;
}
publicdoubledistance(Pointp)
{
returndistance(p.x, p.y);
}
publicdoubledistance(inta, intb)
{
returnsqrt((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);
}
}
PointF sınıfı (Güncellendi)
/*---------------------------------------------------------------------------------------------------------------------- PointF sınıfı----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.math.geometry;
importstaticjava.lang.Math.sqrt;
publicclassPointF {
publicfloatx;
publicfloaty;
publicPointF()
{
}
publicPointF(floata)
{
x = a;
}
publicPointF(floata, floatb)
{
x = a;
y = b;
}
publicdoubledistance(Pointp)
{
returndistance(p.x, p.y);
}
publicdoubledistance(floata, floatb)
{
returnsqrt((x - a) * (x - a) + (y - b) * (y - b));
}
publicvoidoffset(floatdxy)
{
offset(dxy, dxy);
}
publicvoidoffset(floatdx, floatdy)
{
x += dx;
y += dy;
}
publicStringtoString()
{
returnString.format("{x: %f, y: %f}", x, y);
}
}
Diziler (Arrays)
/*---------------------------------------------------------------------------------------------------------------------- Veri yapısı: Verileri belirli bir algoritmaya göre tutan ve istenilğidinde bu verilere erişilebilen yapılara denir. Diziler (Arrays): Elemanları aynı türden olan ve elemanların bellekte peşpeşe olarak tutulduğu veri yapısıdır. Java' diziler sınıfsal olarak temsil edilir. Yani dizi türü aslında bir referans türüdür ve diziiler heap de yaratılır. Şüphesiz dizi referansları stack'de yaratılabilir----------------------------------------------------------------------------------------------------------------------*/
Dizi referansı bildirimi Java' da iki şekilde yapılabilir:
/*---------------------------------------------------------------------------------------------------------------------- Dizi referansı bildirimi Java' da iki şekilde yapılabilir: T bir tür olmak üzere T [] a; //* T a[]; Biz *'daki bildirim biçimini kullanacağız----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
int [] a; // dizi referansı bildirimiintb[]; //dizi referansı bildirimi//...
}
}
[]'in referans bildiriminde bulunduğu yare göre farkları
/*---------------------------------------------------------------------------------------------------------------------- []'in referans bildiriminde bulunduğu yare göre farkları----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
int [] a, b, c;
intd[], e, f;
e = 10;
d = 30; //errorb = 45; //error
}
}
Dizi yaramanın genel biçimi:
/*---------------------------------------------------------------------------------------------------------------------- Dizi yaratmak için de new operatörü kullanılır. Dizi yaramanın genel biçimi: new <tür>[<dizinin int türden eleman sayısı>];----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
int [] a;
a = newint[5];
//...
}
}
Dizi yaratılırken verilen eleman sayısı sabit ifadesi olmak zorunda değildir
/*---------------------------------------------------------------------------------------------------------------------- Dizi yaratılırken verilen eleman sayısı sabit ifadesi olmak zorunda değildir----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
importjava.util.Scanner;
classApp {
publicstaticvoidmain(String [] args)
{
Scannerkb = newScanner(System.in);
System.out.print("Bir sayı giriniz");
intn = Integer.parseInt(kb.nextLine());
int [] a;
a = newint[n];
//...
}
}
length veri elemanına atama yapılamaz
/*---------------------------------------------------------------------------------------------------------------------- length veri elemanına atama yapılamaz----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
importjava.util.Scanner;
classApp {
publicstaticvoidmain(String [] args)
{
Scannerkb = newScanner(System.in);
System.out.print("Bir sayı giriniz:");
intn = Integer.parseInt(kb.nextLine());
int [] a;
a = newint[n];
System.out.printf("Length:%d%n", a.length);
a.length = 20; //error
}
}
Dizinin elamlarına [] operatörü ile erişilebilir.
/*---------------------------------------------------------------------------------------------------------------------- Dizinin elamlarına [] operatörü ile erişilebilir. Bu operatör iki operandlıdır ürettiği değer dizinin elemanı türünden bir değişkendir----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
importjava.util.Scanner;
classApp {
publicstaticvoidmain(String [] args)
{
Scannerkb = newScanner(System.in);
System.out.print("Bir sayı giriniz:");
intn = Integer.parseInt(kb.nextLine());
int [] a;
a = newint[n];
for (inti = 0; i < a.length; ++i)
a[i] = i + 1;
for (inti = 0; i < a.length; ++i)
System.out.printf("%d ", a[i]);
System.out.println();
}
}
[] operatörüne negatif pozitif bakımından sınırlar dışında bir değer verildiğinde exception oluşur
/*---------------------------------------------------------------------------------------------------------------------- [] operatörüne negatif pozitif bakımından sınırlar dışında bir değer verildiğinde exception oluşur----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
importjava.util.Scanner;
classApp {
publicstaticvoidmain(String [] args)
{
Scannerkb = newScanner(System.in);
System.out.print("Bir sayı giriniz:");
intn = Integer.parseInt(kb.nextLine());
int [] a;
a = newint[n];
for (inti = 0; i < a.length; ++i)
a[i] = i + 1;
System.out.println(a[5]);
}
}
Bir dizi ilk yaratıldığında tüm elemanlarına default değerler atanır
/*---------------------------------------------------------------------------------------------------------------------- Bir dizi ilk yaratıldığında tüm elemanlarına default değerler atanır----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
importjava.util.Scanner;
classApp {
publicstaticvoidmain(String [] args)
{
Scannerkb = newScanner(System.in);
System.out.print("Bir sayı giriniz:");
intn = Integer.parseInt(kb.nextLine());
int [] a;
boolean [] flags;
a = newint[n];
flags = newboolean[n];
for (inti = 0; i < a.length; ++i)
System.out.printf("%d ", a[i]);
System.out.println();
for (inti = 0; i < flags.length; ++i)
System.out.printf("%b ", flags[i]);
System.out.println();
}
}
Dizilere ilkdeğer verilmesi (initialization) küme parantezi ile yapılabilir.
/*---------------------------------------------------------------------------------------------------------------------- Dizilere ilkdeğer verilmesi (initialization) küme parantezi ile yapılabilir. Burada new operatörünün [] içerisi boş bırakılmalıdır----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
int [] a;
a = newint[] {1, 2, 3, 4, 5};
for (inti = 0; i < a.length; ++i)
System.out.printf("%d ", a[i]);
System.out.println();
}
}
Diziye ilkdeğer verilirken aynı zamanda bir referansa da ilkdeğer veriliyorsa new operatörü kullanılması gerekmez
/*---------------------------------------------------------------------------------------------------------------------- Diziye ilkdeğer verilirken aynı zamanda bir referansa da ilkdeğer veriliyorsa new operatörü kullanılması gerekmez----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
int [] a = {1, 2, 3, 4, 5};
for (inti = 0; i < a.length; ++i)
System.out.printf("%d ", a[i]);
System.out.println();
}
}
atama şeklinde diziye ilk değer verilemez
/*---------------------------------------------------------------------------------------------------------------------- Aşağıdaki örnek error oluşturur----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
int [] a;
a = {1, 2, 3, 4, 5}; //errorfor (inti = 0; i < a.length; ++i)
System.out.printf("%d ", a[i]);
System.out.println();
}
}
Diziye ilkdeğer verilmesi sırasında küme parantezi içerisinde yazılan son elemandan sonra konan bir tane virgül geçerlidir.
/*---------------------------------------------------------------------------------------------------------------------- Diziye ilkdeğer verilmesi sırasında küme parantezi içerisinde yazılan son elemandan sonra konan bir tane virgül geçerlidir. Bu dizinin eleman sayısını değiştirmez----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
classApp {
publicstaticvoidmain(String [] args)
{
int [] a = {1, 2, 3, 4, 5,};
System.out.printf("Length:%d%n", a.length);
for (inti = 0; i < a.length; ++i)
System.out.printf("%d ", a[i]);
System.out.println();
}
}
Diziye ilkdeğer olarak verilen elemanlar sabit ifadesi olmak zorunda değildir
/*---------------------------------------------------------------------------------------------------------------------- Diziye ilkdeğer olarak verilen elemanlar sabit ifadesi olmak zorunda değildir----------------------------------------------------------------------------------------------------------------------*/packageorg.csystem.app;
importjava.util.Scanner;
classApp {
publicstaticvoidmain(String [] args)
{
Scannerkb = newScanner(System.in);
System.out.print("Bir sayı giriniz:");
intx = Integer.parseInt(kb.nextLine());
int [] a = {x, x + 1, x + 2, x + 3};
for (inti = 0; i < a.length; ++i)
System.out.printf("%d ", a[i]);
System.out.println();
}
}
/*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/