本文目錄一覽:
- 1、JAVA中定義了函數,有返回值,怎麼調用?
- 2、java中的函數調用怎麼理解?
- 3、java 在主函數中調用函數的方法
- 4、怎樣通過Java調用自己編寫的R函數?
- 5、JAVA如何調用C函數
- 6、java怎麼在一個函數里調用另一個函數的數組
JAVA中定義了函數,有返回值,怎麼調用?
你可以這樣理解add(a,b)中向ab傳值,在方法add中處理ab 然後得出一個數,例如sum = a+b;,然後這個方法就返回這個數,當然這個數的類型是你定義的。然後在某個地方你要用到這個sum,你就可以這樣用 Sums = add(a,b);可以這樣用,其實有返回類型的方法你可以認為它就是一個值來用就行了。\x0d\x0a\x0d\x0apublic static void main(String args[]){\x0d\x0a System.out.println(“add(a,b)當a=1,b=2的時候,a+b的值為”+add(1,2));//有返回類型的方法可以直接看成是一個值\x0d\x0a\x0d\x0a}
java中的函數調用怎麼理解?
函數調用可以理解為:
你想去買一樣東西,這時,可能會叫你的秘書去幫你買它。
您的秘書可能不熟悉市場,這時她委任採購部門去幫她購買你需要的東西。
不好意思,昨天有事匆忙留下一段,還有一段沒有完成。。。
在JAVA中怎麼使用 什麼時候能用到?
我就大致的回答一下吧。如果不合心意,還請諒解!
OOP強調低耦合,高內聚。單一職責原則。還有許多模式以及原則,使你的系統富有彈性,易於擴展,修改,維護。
內聚就是一個模塊內各個元素彼此結合的緊密程度,高內聚就是一個模塊內各個元素彼此結合的緊密程度高。
所謂高內聚是指一個軟體模塊是由相關性很強的代碼組成,只負責一項任務,也就是常說的單一責任原則。
耦合:一個軟體結構內不同模塊之間互連程度的度量(耦合性也叫塊間聯繫。指軟體系統結構中各模塊間相互聯繫緊密程度的一種度量。模塊之間聯繫越緊密,其耦合性就越強,模塊的獨立性則越差,模塊間耦合的高低取決於模塊間介面的複雜性,調用的方式以及傳遞的信息。) 對於低耦合,粗淺的理解是:
一個完整的系統,模塊與模塊之間,儘可能的使其獨立存在。
也就是說,讓每個模塊,儘可能的獨立完成某個特定的子功能。
模塊與模塊之間的介面,盡量的少而簡單。
如果某兩個模塊間的關係比較複雜的話,最好首先考慮進一步的模塊劃分。
這樣有利於修改和組合。[1]
引用:
代碼的話,我就不多說了。自己估量估量,就知道是怎麼回事了。
java 在主函數中調用函數的方法
調用方法:先生成一個對象,用「對象.方法()」的方式調用。
調用說明:java中的main方法是靜態的,用於程序的入口,在靜態方法中無法調用非靜態方法,只能調用靜態方法。想調用靜態方法的話就要先生成該類的一個對象,通過對象調用非靜態方法。
調用舉例:
public class A{
public static void main(String[] args){
A a = new A();
a.aaa();
}
public void aaa(){}
}
怎樣通過Java調用自己編寫的R函數?
Java調用R,就是使用JRI.jar中的Api,執行一條R語言命令,當然首先你要了解R語言的語法。\x0d\x0a1.JRI中主要的API\x0d\x0aRengine R引擎,通過它進行R語言的啟動、運算、畫圖、關閉等功能。\x0d\x0a一個線程只能實例化一次,推薦使用單例模式。\x0d\x0a實例化代碼:\x0d\x0aRengine engine = new Rengine(null,false,null);\x0d\x0aRengine.versionCheck() //R版本校驗,返回true:版本校驗通過 返回false:版本校驗未通過\x0d\x0aengine.waitForR() //R載入校驗,返回true:載入成功 返回false:載入失敗\x0d\x0aengine.end() //結束R,在後續沒有調用R的情況下使用,否則R將退出,不能繼續使用R。\x0d\x0a\x0d\x0a2.REXP\x0d\x0aR計算結果表達式\x0d\x0aREXP rexp = engine.eval_r(String str) //執行R命令,返回結果REXP\x0d\x0arexp.asInt() rexp.asDouble() rexp.as.. //將REXP轉成java類型\x0d\x0aengine.assign(String name,double d) //定義R變數,name為R中變數的名字\x0d\x0a\x0d\x0a以上大概了解了JRI的基本API,下面寫個簡單的例子。\x0d\x0a//求n個數的最大值\x0d\x0aRengine engine = new Rengine(null,false,null);\x0d\x0aint[] arr = new int[]{-1,2,1,-3,5,4,-2};\x0d\x0aengine.assign(“x”,arr);\x0d\x0aREXP rexp = engine.eval_r(“max(x)”);\x0d\x0aint max = rexp.asInt();\x0d\x0aSystem.out.println(max);\x0d\x0aengine.end();
JAVA如何調用C函數
要在java中調用c語言的庫,需要使用Java提供了JNI。\x0d\x0a舉例說明\x0d\x0a在c語言中定義一個voidsayHello()函數(列印HelloWorld);然後在Java中調用這個函數顯示HelloWord.\x0d\x0a現在分別從Java和C語言兩部分說明:\x0d\x0a1.Java部分\x0d\x0a首先定義一個HelloNative,在其中申明sayHello函數,函數要申明為Native類型的.如下:\x0d\x0apublicclassHelloNative{\x0d\x0apublicnativevoidsayHello();\x0d\x0a}\x0d\x0a\x0d\x0a編譯這個類,生成class文件:\x0d\x0ajavacHelloWorld.java\x0d\x0a\x0d\x0a利用javah生成需要的h文件\x0d\x0ajavahHelloNative\x0d\x0a\x0d\x0a生成的h文件大概如下:\x0d\x0a\x0d\x0a/*DONOTEDITTHISFILE-itismachinegenerated*/\x0d\x0a#include\x0d\x0a/*HeaderforclassHelloNative*/\x0d\x0a\x0d\x0a#ifndef_Included_HelloNative\x0d\x0a#define_Included_HelloNative\x0d\x0a#ifdef__cplusplus\x0d\x0aextern”C”{\x0d\x0a#endif\x0d\x0a/*\x0d\x0a*Class:HelloNative\x0d\x0a*Method:sayHello\x0d\x0a*Signature:()V\x0d\x0a*/\x0d\x0aJNIEXPORTvoidJNICALLJava_HelloNative_sayHello\x0d\x0a(JNIEnv*,jobject);\x0d\x0a\x0d\x0a#ifdef__cplusplus\x0d\x0a}\x0d\x0a#endif\x0d\x0a#endif\x0d\x0a\x0d\x0a可以看一下上面自動生成的程序,程序include了jni.h,這個頭文件在$JAVA_HOME下的include文件夾下.還可以發現生成的函數名是在之前的函數名前面加上了Java_HelloNative。\x0d\x0a2.C語言部分\x0d\x0a根據上面生成的h文件編寫相應的代碼實現,建立一個HelloNative.cpp用來實現顯示HelloWorld的函數.如下:\x0d\x0a\x0d\x0a#include\x0d\x0a#include”HelloNative.h”\x0d\x0a\x0d\x0aJNIEXPORTvoidJNICALLJava_HelloNative_sayHello(JNIEnv*,jobject)\x0d\x0a{\x0d\x0aprintf(“HelloWorld!\n”);\x0d\x0a}\x0d\x0a\x0d\x0a代碼編寫完成之後,我們再用gcc編譯成庫文件,命令如下;\x0d\x0agcc-fPIC-I/usr/lib/jvm/java-7-openjdk-i386/include-I/usr/lib/jvm/java-7-openjdk-i386/include/linux-shared-olibHelloNative.soHelloNative.cpp\x0d\x0a\x0d\x0a這樣就會在當前目錄下生成一個libHelloNative.so的庫文件.這時需要的庫已經生成,在C語言下的工作已經完成了.\x0d\x0a接下來需要在Java中編寫一個程序測試一下.在程序前,需要將我們的庫載入進去.載入的方法是調用Java的System.loadLibrary(“HelloNative”);\x0d\x0a\x0d\x0apublicclassTestNative\x0d\x0a{\x0d\x0astatic{\x0d\x0atry{\x0d\x0aSystem.loadLibrary(“HelloNative”);\x0d\x0a}\x0d\x0acatch(UnsatisfiedLinkErrore){\x0d\x0aSystem.out.println(“Cannotloadhellolibrary:\n”+e.toString());\x0d\x0a}\x0d\x0a}\x0d\x0apublicstaticvoidmain(String[]args){\x0d\x0aHelloNativetest=newHelloNative();\x0d\x0atest.sayHello();\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0a但是再編譯後,運行的時候,問題又出現了.\x0d\x0aCannotloadhellolibrary:\x0d\x0ajava.lang.UnsatisfiedLinkError:noHelloNativeinjava.library.path\x0d\x0aExceptioninthread”main”java.lang.UnsatisfiedLinkError:HelloNative.sayHello()V\x0d\x0aatHelloNative.sayHello(NativeMethod)\x0d\x0aatTestNative.main(TestNative.java:13)\x0d\x0a\x0d\x0a載入庫失敗,但是庫明明就是放在當前文件夾下的,怎麼會載入失敗呢?\x0d\x0a用System.getProperty(“java.library.path”)查看,發現java.library.path中並不u存在當前的目錄.主要有以下的幾個解決辦法:\x0d\x0a1)將生成的庫複製到java.library.path有的路徑中去,當然這樣不是很好\x0d\x0a2)設置環境變數exportLD_LIBRARY_PATH=.:$LD_LIBRARY_PATH,將當前的目錄加入到LD_LIBRARY_PATH中\x0d\x0a3)設置java的選項,將當前的目錄加入到其中.java-Djava.library.path=.$LD_LIBRARY_PATH\x0d\x0a這樣之後程序就能夠成功的運行了.可以看見顯示的”HelloWorld!”了
java怎麼在一個函數里調用另一個函數的數組
import java.util.Scanner;
interface getGrade{
public void finGrade();
}
class First implements getGrade{
int a[];
public First(){}
public First(int grade[]){
a=grade.clone();
}
public void finGrade(){
int sum;
for (int i=0;i=4;i++)
{
sum=sum+a[i];
}
int num;
num=sum/5;
System.out.println(“平均636f70793231313335323631343130323136353331333335313736成績為:”+num);
}
};
class Second implements getGrade{
int a[];
public Second(){}
public Second(int grade[]){
a=grade.clone();
}
public void finGrade(){
int j,k,t;
for (j=1;j5;j++)
for (k=0;k5-j;k++)
if (a[k]a[k+1])
{
t=a[k];
a[k]=a[k+1];
a[k+1]=t;
}
a[0]=0;
a[4]=0;
int sun;
for (int i=0;i=4;i++)
{
sun=sun+a[i];
}
int nun;
nun=sun/3;
System.out.println(“平均成績為:”+nun);
System.out.println(“(去掉一個最高分和一個最低分)”);
}
};
public class exer4 {
public static void main (String args[]){
System.out.println(“請依次輸入評委所給的分數”);
System.out.println(“(默認為五個評委)”);
int a[] = new int [5];
Scanner reader = new Scanner(S
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/303852.html