
-
"Sökün"
public static void main(String args[])
.Yeni başlayanlar için popüler java mülakat sorularından biri ve çok kolay.
-
public
bir erişim değiştiricisidir. Bu yönteme erişimi belirtmek için kullanıyoruz. Burada değiştirici "genel"dir, bu nedenle herhangi bir Sınıfın bu yönteme erişimi vardır. -
static
. Bu Java anahtar sözcüğü, bu yöntemi yeni bir Sınıf Nesnesi oluşturmadan kullandığımız anlamına gelir. -
Void
yöntemin dönüş türüdür. Bu, yöntemin herhangi bir değer döndürmediği anlamına gelir. -
main
yöntemin adıdır. JVM, onu bir uygulamaya giriş noktası olarak "bilir" (belirli bir imzası olmalıdır).Main
ana yürütmenin gerçekleştiği bir yöntemdir. -
String args[]
. Bu, ana yönteme iletilen parametredir. Burada Java uygulamanızın çalıştırdığınızda kabul ettiği String tipindeki argümanlara sahibiz. Bunları terminale yazabilirsiniz.
-
-
equals()
ve arasındaki fark nedir==
?Birincisi, “
==
” bir operatör, oysaequals()
bir yöntemdir.==
Referans karşılaştırması (veya adres karşılaştırması) için operatör veequals()
içerik karşılaştırması için yöntem kullanıyoruz . Bu , nesnelerdeki değerleri karşılaştırırken==
her iki nesnenin de aynı bellek konumuna işaret edip etmediğini kontrol ettiği anlamına gelir .equals()
-
Yöntemsiz bir program yürütebilir miyiz
main()
?Java temel mülakat sorularının çoğu gerçekten kolaydır. Bunun gibi. Çok kısa cevap: evet, yapabiliriz. Örneğin statik blok kullanarak yapabiliriz.
Statik veri üyesini başlatmak için statik bloğu kullanabilirsiniz.
main
Yöntemden önce, sınıf yüklemesi sırasında yürütülür .class Example{ Static{ System.out.println("static block is invoked"); } public static void main(String args[]){ System.out.println("Now main method"); } }
Çıktı:
static block is invoked Now main method
Peki ya toplam ana yöntem yokluğu? Ana yöntem olmadan sıradan bir sınıfı çalıştırmayı denerseniz, bir sonraki hatayı alırsınız: Ana yöntem bulunamadı sınıfı Testi, lütfen ana yöntemi şu şekilde tanımlayın: genel statik geçersiz ana (String [] args) veya bir JavaFX uygulaması sınıf javafx.application.Application'ı genişletmelidir. Hatanın kendisi, eğer bu bir JavaFX uygulamasıysa ve sınıf javafx.application.Application'dan miras alınmışsa, bunun mümkün olduğunu söylüyor.
-
nesne
immutable
nedir? Nesne yaratabilir misinimmutable
?immutable
Bir sınıfın nesnelerini oluşturulduktan sonra değiştiremezsiniz . Yani onları bir kez oluşturduktan sonra değiştiremezsiniz. Nesneyi değiştirmeye çalışırsanız,Immutable
yeni bir nesne (klon) alırsınız ve bu klonu oluşturma sırasında değiştirirsiniz.İyi bir örnek
String
, Java'dadırimmutable
. Bu, nesnenin kendisini değiştiremeyeceğiniz, ancak nesneye yapılan referansı değiştirebileceğiniz anlamına gelir. -
Aşağıdaki kodda kaç tane nesne yaratılıyor?
# 4'ün yerini alan java teknik mülakat sorularından biri.
String s1="Hello"; String s2="Hello"; String s3="Hello";
Yanıt “yalnızca bir” çünkü Java'nın bir Dize Havuzu var. new() operatörünü kullanarak bir String nesnesi oluşturduğumuzda, yığın belleğinde yeni bir nesne oluşturur. Örneğimizde olduğu gibi String değişmez sözdizimini kullanırsak, zaten varsa, String havuzundan var olan bir nesneyi döndürebilir.
-
Aşağıdaki kodda kaç tane nesne yaratılıyor?
String s = new String("Hello");
2 nesne var. Biri string sabit havuzunda (zaten yoksa) ve diğeri yığında.
-
String
Ve Java'daki SınıflarStringBuilder
Arasındaki Fark Nedir ?StringBuffer
En iyi java mülakat sorularında liderlerden biri var.
Her şeyden önce
String
bir Immutable sınıfıdır. Bu, oluşturulduktan sonra içeriğini değiştiremeyeceğiniz anlamına gelir. WhileStringBuffer
veStringBuilder
değişken sınıflardır, bu yüzden onları daha sonra değiştirebilirsiniz. Nesnenin içeriğini değiştirirsekString
, yeni bir dizi oluşturur, bu nedenle orijinali değiştirmez. Bu nedenle ile performans,StringBuffer
ile olduğundan daha iyidirString
.StringBuffer
veStringBuilder
that 'nin yöntemleri arasındaki temel farkStringBuffer
senkronize edilirkenStringBuilder
' ler değil. -
String
Değişmez değer kullanılarak ve işleç kullanılarak oluşturulmuş herhangi bir fark var mınew()
?Orada. Operatörle bir String oluşturursak
new()
, heap'te ve string havuzunda görünür (zaten mevcut değilse). Hazır değeri kullanarak bir oluşturursanızString
, dize havuzunda oluşturulur (zaten mevcut değilse). Bir dize havuzu, yığın içinde dize değişmezlerini depolayan bir depolama alanıdır. -
Java'da geçersiz kılabilir
private
veya yöntemi kullanabilir misiniz ?static
Çaylaklar için java zor mülakat sorularından biri. Java'da gerçekten geçersiz kılamaz
private
veya yöntem kullanamazsınız .static
private
Özel erişim belirticisinin kapsamı yalnızca sınıf içinde olduğu için yöntemleri geçersiz kılamazsınız . Bir şeyi geçersiz kılacağınız zaman, ebeveyn ve çocuk sınıfımızın olması gerekir. Üst sınıfın yöntemi iseprivate
, alt sınıf onu kullanamaz ve alt sınıftaki yöntemler yeni yöntemler olarak kabul edilir (geçersiz kılınmaz).Static
Ayrıca metotlar geçersiz kılınamaz, çünküstatic
metotlar Sınıfın kendisinin parçasıdır ve sınıfın herhangi bir nesnesinin parçası değildir. Elbette, alt sınıflarda aynı yöntemi aynı imzayla bildirebilirsinizstatic
, ancak yine, bunlar yeni yöntemler olarak ele alınacaktır. -
Abstract Class
ve arasındaki farkInterface
OOP ilkelerine dayanan popüler java geliştirici mülakat sorularından biri. Öncelikle Java'da
interface
bir davranış tanımlar veabstract class
hiyerarşi oluşturur.Soyut sınıf Arayüz Soyut sınıfta bir yöntem gövdesine (soyut olmayan yöntemler) sahip olmak mümkündür. Arayüz yalnızca soyut yöntemlere sahip olabilir. Java 8 veya daha yeni sürümlerde, varsayılan yöntemleri tanımlamak ve bunları doğrudan arayüzde uygulamak mümkün hale geldi. Ayrıca, Java 8'deki Arayüzler statik yöntemlere sahip olabilir. Örnek değişkenler soyut sınıfta olabilir Bir arayüzün örnek değişkenleri olamaz. Yapıcılara izin verilir Arayüz herhangi bir kurucuya sahip olamaz. Statik yöntemlere izin verilir Statik yöntemlere izin verilmez Sınıfın yalnızca bir soyut ebeveyni olabilir Bir arabirim farklı sınıfları uygulayabilir Soyut sınıf, arayüzün uygulanmasını sağlayabilir. Arayüz, soyut sınıfın uygulanmasını sağlayamaz. Soyut bir sınıfın diğer Java sınıfını genişletmesine ve birden çok Java arabirimi uygulamasına izin verilir. Bir arabirimin yalnızca diğer Java arabirimini genişletmesine izin verilir. Bir Java soyut sınıfı, özel ve korumalı sınıf üyelerine sahip olabilir Bir Java arayüzünün üyeleri varsayılan olarak herkese açıktır. -
static
Bir sınıfta değişkenleri ve yöntemleri bildirebilir miyizabstract
?static
Evet, metotta değişkenler ve metotlar bildirmek mümkündürabstract
. Statik bağlama erişmek için bir nesne yapmaya gerek yoktur.abstract
Bu nedenle , sınıfın adını kullanarak sınıf içinde bildirilen statik içeriğe erişmemize izin verilirabstract
. -
JVM tarafından ne tür bellek alanları ayrılır?
Sınıf Alanı , çalışma zamanı sabit havuzu, alanlar, yöntem verileri ve yöntemler için tüm kodlar gibi belirli sınıf yapılarını depolar.
Yığın , belleğin nesnelere ayrıldığı bir çalışma zamanı veri alanıdır.
Yığın çerçeveleri depolar. Yerel değişkenleri ve kısmi sonuçları içerir ve yöntem çağırma ve döndürmede yer alır. Her iş parçacığının, iş parçacığıyla aynı zamanda oluşturulan özel bir JVM yığını vardır. Her metot çağrıldığında yeni bir çerçeve oluşturulur. Yöntem çağrısı tamamlandığında bir çerçeve yok edilir.
Program Sayaç Kaydı, yürütülmekte olan Java sanal makine komutunun bir adresini içerir.
Yerel Yöntem Yığını, uygulamada kullanılan tüm yerel yöntemleri içerir.
-
Java'da çoklu kalıtıma neden izin verilmiyor?
Gerçekten karmaşık olurdu. Üç sınıfın
A
,B
veC
veC
miras aldığını düşününA
veB
. Şimdi,A
sınıflarB
aynı yönteme sahip ve siz onu bir alt sınıf nesnesinden çağırıyorsunuz... Hangisi?A
'ler mi yoksaB
'ler mi? Burada belirsizliğimiz var.iki sınıfı miras almaya çalışırsanız, Java derleme zamanı hatası verir.
-
Yöntemi aşırı yükleyebilir miyiz
main()
?main
Elbette, bir Java programında, yöntem aşırı yüklemesini kullanarak birçok yönteme sahip olmamıza izin verilir . Denemek! -
Bir kurucu olarak ilan edebilir miyiz
final
?Hayır.
final
Bir yapıcı, miras alınamadığı için a olarak bildirilemez . Bu nedenle, yapıcıları olarak bildirmek anlamsızdırfinal
. Ancak, bunu yapmaya çalışırsanız, Java derleyicisi size bir hata verir. -
Bir arayüzü şu şekilde ilan edebilir miyiz
final
?Hayır, bunu yapamayız. Arayüz olamaz,
final
çünkü arayüzün tanımına göre bir sınıf tarafından uygulanması gerekir. Bu nedenle arayüz yapmanın bir anlamı yokturfinal
. Ancak, bunu yapmaya çalışırsanız, derleyici bir hata gösterecektir. -
static binding
ve arasındaki fark nedirdynamic binding
?binding
Derleme zamanında derleyici tarafından çözülebilen ,static
erken bağlama olarak adlandırılır.Binding
tümstatic
,private
andfinal
yöntemleri derleme zamanında yapılır.Derleyicide
Dynamic binding
çağrılacak bir yöntem seçemezsiniz. Geçersiz kılma mükemmel bir örnektirdynamic binding
. Geçersiz kılmada hem ebeveyn hem de çocuk sınıfları aynı yönteme sahiptir.Static Binding class Cat{ private void talk() {System.out.println("cat is mewing..."); } public static void main(String args[]){ Cat cat=new Cat(); cat.talk(); } } Dynamic Binding class Animal{ void talk(){ System.out.println("animal is talking..."); } } class Cat extends Animal{ void talk(){ System.out.println("cat is talking..."); } public static void main(String args[]){ Animal animal=new Cat(); animal.talk(); } }
-
Java'da salt okunur bir sınıf nasıl oluşturulur?
Bunu, sınıfın tüm alanlarını özel yaparak yapabilirsiniz. Salt okunur sınıf, yalnızca sınıfın özel özelliğini yönteme döndüren alıcı yöntemlerine sahiptir
main
. Bu özelliği değiştiremezsiniz, nedeni ayarlayıcı yönteminin olmamasıdır.public class HockeyPlayer{ private String team ="Maple leaf"; public String getTeam(){ return team; } }
-
Java'da salt yazılır bir sınıf nasıl oluşturulur?
Yine, sınıfın tüm alanlarını yapmalısınız
private
. Şimdi, salt yazılır sınıfınızın yalnızca ayarlayıcı yöntemleri olmalı ve alıcıları olmamalıdır. Bu nedenle sınıfın özelliklerini okuyamıyoruz.public class HockeyPlayer{ private String team; public void setTeam(String college){ this.team = team; } }
-
Her
try
bloğu bir blok takip etmelidircatch
, değil mi?Hayır. Bu bir gereklilik değil. Her
try
blok bloksuz olabilircatch
. Bunu bir yakalama bloğu veya bir nihayet bloğu veya hatta onlarsız takip edebilir.public class Main{ public static void main(String []args){ try{ int variable = 1; System.out.println(variable/0); } finally { System.out.println("the other part of the program..."); } } }
Çıktı:
Exception in thread main java.lang.ArithmeticException:/ by zero the other part of the program...
Bir örnek daha:class Main { public static void main(String[] args) throws IOException { try(InputStreamReader inputStreamReader = new InputStreamReader(System.in); BufferedReader reader = new BufferedReader(inputStreamReader)){ System.out.println("test"); } } }
Çıktı:
test
Not: Java 8'den önce arabirimlerdeki yöntemler yalnızca soyut olabilirdi. Java 8 veya daha yeni sürümlerde, varsayılan yöntemleri tanımlamak ve bunları doğrudan arayüzde uygulamak mümkün hale geldi. -
throw
ve anahtar kelimeler arasındaki fark nedirthrows
?Throws
bir istisna bildirmek için kullanılır, bu nedenle bloğa benzer şekilde çalışırtry-catch
.Throw
anahtar kelime, bir yöntemden veya başka herhangi bir kod bloğundan açıkça bir istisna atmak için kullanılır.Throw
ardından birException
sınıf örneği gelir ve atışları istisna sınıf adları izler.Throw
yöntem gövdesinde bir istisna atmak için kullanılır.Throws
yöntemde bulunan ifadelerde oluşabilecek istisnaları bildirmek için bir yöntem imzasında kullanılır.Her seferinde bir istisna atılmasına izin verilir, ancak birden çok istisnayı anahtar kelime kullanarak bildirerek işleyebilirsiniz.
throw
Birden çok istisna bildirebilirsiniz, örneğin,public void method()throws IOException
,SQLException
.
GO TO FULL VERSION