『壹』 java如何調用另個程序的main函數
Main方法是用static修飾的,有2種方法可以調用:
1、類名.main(參數);
2、new創建實例,實例.main(參數);
這個地方注意必須傳遞字元串數組的參數 或者 null !另外舉一個用反射機制調用Main方法的例子。
這個類是被調用的main方法類:
Java代碼:
public class Run
{
public static void main(String[] args)
{
String str=args[0]+"Hello World";
System.out.println(str);
}
}
下面是調用main方法的類:
Java代碼:
public class JobRun
{
public static void main(String[] args)
{
String idStr = "YAya";
try
{
Method method = Run.class.getMethod("main", String[].class);
method.invoke(null, (Object) new String[] { idStr });
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
main方法是一個特殊的方法,是程序執行的入口,一個Java程序從main方法開始執行。Java虛擬機在執行Java程序之前會事先分配一個主線程,然後在主線程裡面執行我們這個main方法。
線程就是一個程序裡面不同的執行路徑!總之,就記住,Java程序從main方法開始執行,
比如:
public static void main(String[] args) {
System.out.println("nihao");
}
在這里當程序運行的時候,從main方法進來,然後做的第一件事就是System.out.println("nihao");
注意: main方法執行結束,程序也就執行結束了!
『貳』 java中一個函數如何多次調用另一個函數
java中要多次調用函數(方法),無參數的函數(方法)只需寫上函數名即可,有參數的函數(方法)把參數傳進來即可。
具體事例代碼如下:
public class Demo {
public static void main(String[] args) {
int a = a(2);//第一次調用
int b = a(4);//第二次調用
}
private static int a(int i){
return i;
}
}
要注意的是:在調用沒有返回值的函數(方法)時,不能給變數賦值,因為函數(方法)本身沒有返回值,就沒有值賦值給變數了。
『叄』 java中一個類怎麼調用另一個類中的函數
首先這兩個類不在同一個包
1 在usermn中導包
import md.md5;
2.在usermn中創建md5的對象
md5 XX = new md5();
接下來就可以用XX.getMD5ofStr(String inbuf);
調用到md5類裡面的函數
滿意請採納 多謝合作!!
『肆』 java中含參函數怎麼調用
系統不會在調用有參構造方法的時候自動調用無參構造方法。需要自己手工實現
1、在有參構造函數中調用無參構造函數
例如:
public
class
ta{
public
ta(){//定義無參構造函數
}
public
ta(int
a){//定義有參構造函數
this();//調用無參構造函數
}}
『伍』 java 內部類怎麼調用外部類的函數
你好!
方法1:定義內部類的一個對象,用該對象調用外部類的成員函數
方法2:直接用語句:this.外部類的成員函數名。
僅代表個人觀點,不喜勿噴,謝謝。
『陸』 JAVA如何調用C函數
要在java中調用c語言的庫,需要使用Java提供了JNI。
舉例說明
在c語言中定義一個 void sayHello()函數(列印Hello World);然後在Java中調用這個函數顯示Hello Word.
現在分別從Java和C語言兩部分說明:
1. Java 部分
首先定義一個HelloNative,在其中申明sayHello函數,函數要申明為Native 類型的.如下:
public class HelloNative {
public native void sayHello();
}
編譯這個類,生成class文件:
javac HelloWorld.java
利用javah生成需要的h文件
javah HelloNative
生成的 h文件大概如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloNative */
#ifndef _Included_HelloNative
#define _Included_HelloNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloNative
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloNative_sayHello
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
可以看一下上面自動生成的程序,程序include了jni.h,這個頭文件在 $JAVA_HOME下的include文件夾下. 還可以發現生成的函數名是在之前的函數名前面加上了Java_HelloNative。
2. C語言部分
根據上面生成的h文件編寫相應的代碼實現,建立一個 HelloNative.cpp用來實現顯示Hello World的函數.如下:
#include <stdio.h>
#include "HelloNative.h"
JNIEXPORT void JNICALL Java_HelloNative_sayHello(JNIEnv *, jobject)
{
printf("Hello World!\n");
}
代碼編寫完成之後,我們再用gcc編譯成庫文件,命令如下;
gcc -fPIC -I/usr/lib/jvm/java-7-openjdk-i386/include -I/usr/lib/jvm/java-7-openjdk-i386/include/linux -shared -o libHelloNative.so HelloNative.cpp
這樣就會在當前目錄下生成一個libHelloNative.so的庫文件.這時需要的庫已經生成,在C語言下的工作已經完成了.
接下來需要在Java中編寫一個程序測試一下.在程序前,需要將我們的庫載入進去.載入的方法是調用Java的 System.loadLibrary("HelloNative");
public class TestNative
{
static {
try {
System.loadLibrary("HelloNative");
}
catch(UnsatisfiedLinkError e) {
System.out.println( "Cannot load hello library:\n " + e.toString() );
}
}
public static void main(String[] args) {
HelloNative test = new HelloNative();
test.sayHello();
}
}
但是再編譯後,運行的時候,問題又出現了.
Cannot load hello library:
java.lang.UnsatisfiedLinkError: no HelloNative in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: HelloNative.sayHello()V
at HelloNative.sayHello(Native Method)
at TestNative.main(TestNative.java:13)
載入庫失敗,但是庫明明就是放在當前文件夾下的,怎麼會載入失敗呢?
用System.getProperty("java.library.path")查看,發現java.library.path中並不u存在當前的目錄.主要有以下的幾個解決辦法:
1) 將生成的庫復制到java.library.path有的路徑中去,當然這樣不是很好
2) 設置環境變數export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ,將當前的目錄加入到LD_LIBRARY_PATH中
3) 設置java 的選項,將當前的目錄加入到其中 .java -Djava.library.path=. $LD_LIBRARY_PATH
這樣之後程序就能夠成功的運行了.可以看見顯示的"Hello World!"了
『柒』 java 函數調用
貌似你的第一個類和後面的代碼沒什麼聯系吧。然後你把第二個類的代碼寫了兩次。如果我沒看錯的話,應該是完全一樣的。然後你在第二個類中將一個函數遞歸調用,並把參數原封不動地傳來傳去。估計是你打錯了吧。你想寫的是不是
gouzao_hanshuyong1.java:
public class gouzao_hanshuyong1 {
int a = 123;
void hanshu_1() {
System.out.print("hanshu_1" + a);
}}
gouzao_hanshuyong2.java:
class gouzao_hanshuyong2{
public static void main(String[] args) {
hanshu_2(new gouzao_hanshuyong1());
}
public static void hanshu_2(gouzao_hanshuyong1 g)
{g.hanshu_1();}
}
如果是這樣的話,運行結果應該是hanshu_1123
如果不是,請把你的問題說的清楚點,或者說明一下你的程序是要幹嘛
『捌』 JAVA中定義了函數,有返回值,怎麼調用
sum是在方法中,當這個方法執行完之後,sun就消失了。調用的話可以在主方法或者其他方法中定義
int
sum
=
add(1,2);返回值就賦值給新的sum了。至於列印的話,直接在return前面加個輸出語句就行了。
system.out.println("sum是:"+sum);
『玖』 java函數調用(在一個類中怎麼調用另一個類的變數和函數)
import java.util.Scanner;
public class Student {//帶有主函數的類,Score類在下面
String name;
Score score=new Score();//此句有重大嫌疑
public String introce()
{
return(name+"\t"+score.java+"\t"+score.db+"\t"+score.c+"\t"+score.sum()+"\t"+score.avg());//name之後的全部顯示為0
}
public static void main(String args[])
{
Student stu[]=new Student[10];
Score score[]=new Score[10];
Scanner in=new Scanner(System.in);
for(int i=0;i<3;i++)
{
stu[i]=new Student();
score[i]=new Score();
System.out.println("學生"+(i+1)+"的名字:");
stu[i].name=in.next();
System.out.println("學生"+(i+1)+"java成績:");
score[i].java=in.nextFloat();
System.out.println("學生"+(i+1)+"DB成績:");
score[i].db=in.nextFloat();
System.out.println("學生"+(i+1)+"C語言成績:");
score[i].c=in.nextFloat();
}
System.out.println("姓名\tjava成績\tDB成績是\tc語言成績\t總成績\t平均成績");
for(int j=0;j<3;j++)
{
System.out.println(stu[j].introce());
}
}
} //錯誤之二:少了一個右邊大括弧,造成第一個類不完整
class Score {//score類 錯誤地方一:在一個java文件中只允許有一個功能類 去掉public 就好了
float java,db,c;
public float sum()
{
float ssum=java+db+c;
return ssum;
}
public float avg()
{
return sum()/3;
}
}