java函数调用(在一个类中怎么调用另一个类的变量和函数)

java函数调用(在一个类中怎么调用另一个类的变量和函数),第1张

import javautilScanner;

public class Student {// 带有主函数的类,Score类在下面

String name;

Score score = new Score();// 此句有重大嫌疑 nested class object as an attribute, no mistake here! 

public String introduce() {

return (name + "\t" + scorejava + "\t" + scoredb + "\t" + scorec

+ "\t" + scoresum() + "\t" + scoreavg());// name之后的全部显示为0

}

public static void main(String args[]) {

Student stu[] = new Student[10];

// Score score[] = new Score[10];

Scanner in = new Scanner(Systemin);

for (int i = 0; i < 3; i++) {

stu[i] = new Student();

// score[i] = new Score();

Systemoutprintln("学生" + (i + 1) + "的名字:");

stu[i]name = innext();

Systemoutprintln("学生" + (i + 1) + "java成绩:");

stu[i]scorejava = innextFloat();

// score[i]java = innextFloat();

Systemoutprintln("学生" + (i + 1) + "DB成绩:");

// score[i]db = innextFloat();

stu[i]scoredb = innextFloat();

Systemoutprintln("学生" + (i + 1) + "C语言成绩:");

stu[i]scorec = innextFloat();

// score[i]c = innextFloat();

}

Systemoutprintln("姓名\tjava成绩\tDB成绩是\tc语言成绩\t总成绩\t平均成绩");

for (int j = 0; j < 3; j++) {

Systemoutprintln(stu[j]introduce());

}

}

public class Score {// score类

float java, db, c;

public float sum() {

float ssum = java + db + c;

return ssum;

}

public float avg() {

return sum() / 3;

}

}

}

首先要说一下,java调用的是方法,不是函数,函数是在c语言中使用。

简单的例子

public class a{

public String b(){

String x="I love";

String y=c(x);

Systemoutprintln(y);

}

public String c(String st){

st=st+" China";

return st;

}

}

b方法运行后,会在后台打印出:I love China

希望对你有帮助

the 'aveRainfall' is a method, and you should add'(' ')', and it has an argument, you should pass it

我知道的有两种方法,一种是直接用JNI,另一种是则是用Jacob(实质上也用的是JNI)

先讲讲第一种方法

1编写Java程序TestDll,注意,这个类有两个作用,一个是用来做头文件,另外一个作用就是通过它来调用dll

public class TestDll {

static

{

SystemloadLibrary("DLLSample");//载入dll

}

public native static int DoubleValue(int i);//函数声明

}

2编译: javac TestDll

3生成头文件: javah TestDll

生成TestDllh文件,这里面只对函数DoubleValue作了声明

/ DO NOT EDIT THIS FILE - it is machine generated /

#include <jnih>

/ Header for class TestDll /

#ifndef _Included_TestDll

#define _Included_TestDll

#ifdef __cplusplus

extern "C" {

#endif

/

Class: TestDll

Method: DoubleValue

Signature: (I)I

/

JNIEXPORT jint JNICALL Java_TestDll_DoubleValue

(JNIEnv , jclass, jint);

#ifdef __cplusplus

}

#endif

#endif

4用VC制作DLL

修改DLLSample工程,程序中添加函数DoubleValue的实现,函数名必须用jni规定格式,可以照到h文件里的声

明来写:

#include "jni_mdh"

#include "TestDllh"

JNIEXPORT jint JNICALL Java_TestDll_DoubleValue (JNIEnv , jclass, jint p)

{

int j = p2;

return j;

JNIEXPORT,JNICALL,JNIEnv , jclass请都不要动,jint对应是java里的int

别忘了把TestDllh,jnih(这个文件在JDK/include下),jni_mdh(这个文件在jdk/include/win32下)复制到VC

工程目录中,然后编译生成dll

5把生成的DLLSampledll复制到jdk/bin下(确保PATH指向了这个目录)

6应用

我看到他们举的例子都是把调用写在了main里, 在这里我把应用取出来放在一个Servlet类中的测试的,同样可

以得到正确结果,这里体现国TestDll的第二个作用,它是调用dll的一个纽带

TestDll td = new TestDll();

Systemoutprintln("result= " tdDoubleValue(25));

注意:

如果更改了TestDll的内容或重使命名了这个文件,必须重新用它生成头文件,在dll里也要做相应修改,

因为必须要和java里面的声明一致才行

----------------------------------------

本文随写,若有什么错误,请多多指出,谢谢

说明:本文是west263的博文,作者并没有留名

java 一个类通过类名调用不在同一个包里的另一个类的函数,

这样你把函数写成静态的 static,然后就可以通过类名来调用了,

否则就是new对向后在调用

举个例子:

//文件 : Ajava

package comthread;

public class A {

public static void method(){

Systemoutprintln("call method");

}

}

//文件:Bjava

package comheatontest;

import comthreadA;

public class B {

public static void main(String[] args) {

// TODO Auto-generated method stub

}

public void callMethod(){

Amethod();//直接通过类名调用

}

}

这样调用

是指一个类调用另一个类的么?

如果是这样的话。。

//创建一个类

public class Text1{

public static void mian(String []agrs){

//实例化另一个类

Text2 t = new Text2();

tshow();

}

}

创建第二个类

public class Text2(){

//创建一个show方法

public void show(){

Systemoutprintln("我已经被调用了");

}

}

这就是类之间的调用。。

如果是想在方法里调用另一个类的方法

具体的也是和main()方法里的一样调用。(模仿main()方法)

首先明确一下 在java里面 函数就是方法 方法就是函数 这两者是一样的。

你的问题的意思是在静态方法里面怎么再调用其他方法 还是 怎么调用静态方法?

如果是静态方法里面怎么调用其他方法的话,分成调用静态方法和普通方法。

调用静态方法不需要实例就可以调用。直接通过类名静态方法名去调用。当然也可以用对象名静态方法名去调用。

如果是调用成员方法,那就只能通过实例,也就是对象名成员方法名去调用。

如果是怎么调用静态方法。那我上面已经说了 直接通过类名静态方法名去调用。当然也可以用对象名静态方法名去调用。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12176239.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存