Java'da program yazmaya yeni başladım. Aşağıdaki Java kodu ne anlama geliyor?
public static void main(String[] args)
Nedir
String[] args
?Bunları ne zaman kullanırsın
args
?
Kaynaklar ve / veya örnekler özet açıklamalara göre tercih edilir
Java'da program yazmaya yeni başladım. Aşağıdaki Java kodu ne anlama geliyor?
public static void main(String[] args)
Nedir String[] args
?
Bunları ne zaman kullanırsın args
?
Kaynaklar ve / veya örnekler özet açıklamalara göre tercih edilir
Yanıtlar:
Java'da args
, sağlanan komut satırı bağımsız değişkenlerini bir dizi olarak içerirString
nesne .
Başka bir deyişle, eğer programınızı çalıştırırsanız java MyProgram one two
o args
zaman içerecektir ["one", "two"]
.
Eğer içeriğini çıkarmak args
istiyorsanız, sadece bu şekilde döngü yapabilirsiniz ...
public class ArgumentExample {
public static void main(String[] args) {
for(int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}
args
İşletim sisteminden bağımsız olarak boşlukla ayrılması garanti ediliyor mu?
-version
örneğin, bu kadar java -version
ve java.exe -version
ancak java.exe /version
(girişimleri ana sınıf yüklemek için .version
). Birisi hiç tökezledi eğer sadece benim 2 sent.
Bunlar Java'daki komut satırı bağımsız değişkenleri içindir.
Başka bir deyişle, eğer
Java MyProgram bir iki
Sonra args
içerir:
[ "bir iki" ]
public static void main(String [] args) {
String one = args[0]; //=="one"
String two = args[1]; //=="two"
}
Bunun nedeni, uygulamanızı belirli bir şekilde çalışacak şekilde yapılandırmak veya ihtiyaç duyduğu bazı bilgileri sağlamaktır.
Java'da yeniyseniz, resmi Oracle'ın Java TM Eğiticilerini okumanızı şiddetle tavsiye ederim .
args
, çağırma üzerine Java programına iletilen komut satırı bağımsız değişkenlerini içerir. Örneğin, programı şöyle çağırırsam:
$ java MyProg -f file.txt
Sonra args
dizeleri "-f"
ve içeren bir dizi olacaktır "file.txt"
.
javac MyProg.java
çalıştırmak ve daha sonra derlemek zorunda kaldı java MyProg -f file.txt
. Bunun bir nedeni var, çünkü cevapların hiçbir yerinde bahsedilmiyor mu?
.class
dosyada derlemeniz gerekir .
Aşağıdaki cevap benim anlayış ve bazı test dayanmaktadır.
String [] args nedir?
Ans->
String [] -> Bildiğimiz gibi bunun basit bir String dizisi olduğunu.
args -> herhangi bir şey (örneğin, a, ar, argüman, param, parametre) olabilen bir dizinin adıdır.
Örnek
1) genel statik void main (String [] argümanı)
2) genel statik void main (String [] parametresi)
Bu argümanları ne zaman kullanırsınız?
Ans->
Ana işlev geliştiriciler tarafından çok akıllı bir şekilde tasarlanmıştır. Gerçek düşünme çok derindir. Temel olarak Komut satırı argümanına dayalı C & C ++ göz önünde bulundurularak geliştirildi, ancak bugünlerde kimse daha fazla kullanmıyor.
Şey 1- Kullanıcı komut satırından herhangi bir veri girebilir Sayı veya Dize olabilir ve derleyici tarafından hangi veri tipini kullanmamız gerektiğini kabul etmek gerekir? şeyi gör 2
Şey 2- String, Java'da int, long, float, double, bayt, shot, char gibi tüm ilkel veri tiplerini destekleyen veri tipidir. Herhangi bir ilkel veri tipinde kolayca ayrıştırabilirsiniz.
Örneğin , aşağıdaki program derlenmiş ve yürütülmüştür ve ben de test edilmiştir.
Giriş -> 1 1 ise
// one class needs to have a main() method
public class HelloWorld
{
// arguments are passed using the text field below this editor
public static void main(String[] parameter)
{
System.out.println(parameter[0] + parameter[1]); // Output is 11
//Comment out below code in case of String
System.out.println(Integer.parseInt(parameter[0]) + Integer.parseInt(parameter[1])); //Output is 2
System.out.println(Float.parseFloat(parameter[0]) + Float.parseFloat(parameter[1])); //Output is 2.0
System.out.println(Long.parseLong(parameter[0]) + Long.parseLong(parameter[1])); //Output is 2
System.out.println(Double.parseDouble(parameter[0]) + Double.parseDouble(parameter[1])); //Output is 2.0
}
}
Hatta tho OP sadece hakkında konuşuyor String[] args
, ben tam bir örnek vermek istiyorum public static void main(String[] args)
.
Public
: bu Yönteme kimlerin erişebileceğini tanımlayan bir Erişim Değiştiricidir . Genel, bu Yönteme herhangi bir Sınıf tarafından erişilebileceği anlamına gelir (Başka Sınıflar bu Sınıfa erişebiliyorsa).
Static
: sınıfla ilgili şeyi tanımlayan bir anahtar kelimedir. Bu, verilen Yöntem veya değişkenin örnekle ilgili değil, Sınıfla ilgili olduğu anlamına gelir. Bir Sınıf örneği oluşturmadan erişilebilir.
Void
: Yöntemin Dönüş Türünü tanımlamak için kullanılır. Yöntemin neyi döndürebileceğini tanımlar. Void, Yöntemin herhangi bir değer döndürmeyeceği anlamına gelir.
main
: Yöntemin adıdır. Bu Yöntem adı, JVM tarafından yalnızca belirli bir imzası olan bir uygulamanın başlangıç noktası olarak aranır.
String[] args
: ana Yöntemin parametresidir.
JDK kaynak koduna bakarsanız (jdk-src \ j2se \ src \ share \ bin \ java.c):
/* Get the application's main method */
mainID = (*env)->GetStaticMethodID(env, mainClass, "main",
"([Ljava/lang/String;)V");
...
{ /* Make sure the main method is public */
...
mods = (*env)->CallIntMethod(env, obj, mid);
if ((mods & 1) == 0) { /* if (!Modifier.isPublic(mods)) ... */
message = "Main method not public.";
messageDest = JNI_TRUE;
goto leave;
...
Bunu görebilirsiniz başlayan yöntem java adlandırılmalıdır main
ve özel bir imza olması gerekirpublic static void main(String[] args)
Kod ayrıca public static void main(String[] args)
düzeltilmediğini de söyler , (jdk-src \ j2se \ src \ share \ bin \ java.c) içindeki kodu başka bir imzayla değiştirirseniz, işe yarayacaktır, ancak bunu değiştirmek size başka olası sorunlar verecektir. Java özellikleri nedeniyle
Offtopic: OP bu soruyu sorduğundan bu yana 7 yıl geçti, tahminim OP'nin şu ana kadar kendi sorusunu cevaplayabileceğidir.
String [] args
Java'da bir dizi Dizeyi nasıl bildireceğinizdir.
Bu yöntem imzasında, args
yöntem çağrıldığında dizi değerlerle doldurulur (buradaki diğer örneklerde gösterildiği gibi). Yine de öğrendiğiniz için, bu args
dizinin tıpkı bir yöntemde kendiniz bir tane oluşturduysanız olduğu gibi anlamaya değer :
public void foo() {
String [] args = new String[2];
args[0] = "hello";
args[1] = "every";
System.out.println("Output: " + args[0] + args[1]);
// etc... the usage of 'args' here and in the main method is identical
}
Ayrılırdım
public static void main(String args[])
parçalar halinde.
"public" , main () öğesinin herhangi bir yerden çağrılabileceği anlamına gelir.
"statik" main () öğesinin belirli bir nesneye ait olmadığı anlamına gelir
"void" main () öğesinin değer döndürmediği anlamına gelir
"main" bir fonksiyonun adıdır. main () özel bir programdır çünkü programın başlangıcıdır.
"String []" bir String dizisi anlamına gelir.
"args" , String [] öğesinin adıdır (main () gövdesi içinde). "args" özel değildir; başka bir ad verebilir ve program aynı şekilde çalışır.
String[] args
terminaldeki programa yazılabilen bir boşlukla ayrılmış Dizeler koleksiyonudur. Yeni başlayanlar bu değişkeni daha fazla defa kullanmazlar, ancak her ihtimale karşı her zaman oradadır.Kodunuzu bitirdiğinizde, dosyayı çift tıklatarak çalıştırılabilen .java uzantılı bir dosyaya dönüştüreceksiniz, aynı zamanda bir konsol boyunca (mac'ta terminal, pencerelerde cmd.exe) birçok şey. Bir şey, çift tıkladıklarında göremedikleri konsol mesajlarını (System.out.print veya System.out.println) görebilmeleridir. Yapabilecekleri başka bir şey parametreleri belirtmektir, bu nedenle normalde
java -jar MyCode.jar
ile programın klasörüne gittikten sonra
cd C:My/Code/Location
pencerelerde veya
cd My/Code/Location
Mac'te (mac'un daha az tıknaz olduğuna dikkat edin), ancak kullanacağınız parametreleri belirtmek için
java -jar MyCode.jar parameter1 parameter2
Programınızda kullanabileceğiniz args dizisinde saklanan bu parametreler, kullanıcının hangi dosyanın kullanılacağı veya programın ne kadar belleğe sahip olabileceği gibi özel parametreleri kontrol etmesine izin vermek istersiniz. Bir dizinin nasıl kullanılacağını bilmek istiyorsanız, muhtemelen bu sitede bir konu bulabilir veya sadece Google'da bulabilirsiniz. Herhangi bir sayıda parametrenin kullanılabileceğini unutmayın.
Basit layman'ın dilinde açıklama.
Ana yöntem, JVM'yi sınıf adına yönlendirdiğimizde bazı argümanlar sunmamızı bekliyor. Bu, dosya adınızın Try.java olduğunu varsayalım, şimdi komut isteminde bunu yürütmek için "javac Try.java" yazıp ardından "java Try" yazacaksınız. Şimdi "java Try" yazmak yerine "java Try 1" yazdığınızı varsayalım. Burada "1" argümanını geçtiniz. Bu, kodunuzda kullanmasanız bile ana yönteminiz tarafından alınacaktır.
Ana yönteminizin gerçekten "1" argümanını alıp almadığını kontrol etmek istiyorsanız. Basitçe, ana yönteminizin içine aşağıdakileri yazın:
for(int i = 0; i < args.length; i++) {
System.out.println("Argument is: "+args[i]);
}
Bence String args[]
sadece çalıştırdığınızda uygulamanıza iletebileceğiniz bir dizi dize argümanı olan yukarıdaki cevaplarla kaplıdır . Tamamlama için, aynı zamanda, main
dizeye değişken değişken (varargs) olarak yönteme iletilen method parametresini tanımlamanın geçerli olduğunu da ekleyebilirim :
public static void main (String... args)
Başka bir deyişle, main
yöntem bir yöntem bağımsız değişkeni olarak bir String dizisi ( String args[]
) veya varargs ( String... args
) kabul etmelidir . Ve adında sihir de yok args
. Yazabilir arguments
hatta freddiefujiwara
aşağıdaki e.gs'de gösterildiği gibi bile olabilir . :
public static void main (String[] arguments)
public static void main (String[] freddiefujiwara)
Bir java sınıfı konsoldan yürütüldüğünde, ana yöntem denir. Bunun gerçekleşmesi için bu ana yöntemin tanımı
public static void main(String [])
Bu dize dizisinin args olarak adlandırılması, standart bir kuraldır, ancak kesinlikle gerekli değildir. Programınızı çağırdığınızda bu diziyi komut satırına yerleştirirsiniz
java MyClass a b c
Bunlar genellikle programınızın seçeneklerini, örneğin yazılacak veya okunacak dosyalar tanımlamak için kullanılır.
içinde public void ana (String args []) bağımsız değişken veri türü String konsol hattı bağımsız değişken bir dizidir. bu dizide, çeşitli dize argümanlarını aşağıda gösterildiği gibi komut satırında çağırarak depolayabilirsiniz: java myProgram Shaan Royal sonra Shaan ve Royal dizide arg [0] = "Shaan" olarak depolanır; arg [1] = "The Royal"; bunları komut satırında çağırmazsanız, programın içinde de manuel olarak yapabilirsiniz.
String[] args
Parametresi, OS komut satırı aracılığıyla uygulamayı çalıştırırken Strings bir dizi parametre olarak geçirilir.
Bu nedenle, bir myApp.jar
Java uygulaması derlediğinizi ve paketlediğinizi düşünün . Uygulamanızı işletim sisteminde çift tıklatarak çalıştırabilirsiniz, ancak aynı zamanda komut satırını kullanarak da çalıştırabilirsiniz (örneğin Linux'ta):
user@computer:~$ java -jar myApp.jar
Uygulamanızı aradığınızda, örneğin:
user@computer:~$ java -jar myApp.jar update notify
java -jar
Komutu dizeler geçecek update
ve notify
listenizepublic static void main()
yöntemle.
Daha sonra şöyle bir şey yapabilirsiniz:
System.out.println(args[0]); //Which will print 'update'
System.out.println(args[1]); //Which will print 'notify'
Önceki tüm yorumlara ek olarak.
public static void main(String[] args)
olarak yazılabilir
public static void main(String...arg)
veya
public static void main(String...strings)
args
mutlaka adlandırılmak zorunda değildirargs
(istediğinizi adlandırabilirsiniz ) - konvansiyonu takip etmek en iyisidir. AyrıcaString... args
zaman zaman eşdeğer görebilirsiniz.