‘壹’ 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;
}
}