恩。。。。在java中一般称为方法,不叫它函数来着。
你先声明数据权限,例如public private等;
再加上对方法是否返回值,不返回的话用void,若返回加上返回值类型就好啦;
之后是方法名,后面用括号括住需要的参数,无参的话括号里为空就行了;
之后是方法内容用大括号括起来;
举个例子,寻找输出一个数的因子的方法
public void f(int a){//用于寻找因子的方法
for(int i=1;i<a;i++){
if(a%i==0)
Systemoutprint(i+" ");
}
}
我是只小白。。。。不知道说的符合你要的不?
程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法。目的达到。在C/C++中,要用回调函数,被掉函数需要告诉调用者自己的指针地址,但在JAVA中没有指针,怎么办?我们可以通过接口(interface)来实现定义回调函数。\x0d\假设我是程序员A,以下是我的程序a:\x0d\[java]viewplaincopyprint\x0d\publicclassCaller\x0d\{\x0d\publicMyCallInterfacemc;\x0d\\x0d\publicvoidsetCallfuc(MyCallInterfacemc)\x0d\{\x0d\thismc=mc;\x0d\}\x0d\\x0d\publicvoidcall(){\x0d\thismcmethod();\x0d\}\x0d\}\x0d\还需要定义一个接口,以便程序员B根据我的定义编写程序实现接口。\x0d\\x0d\publicinterfaceMyCallInterface\x0d\{\x0d\publicvoidmethod();\x0d\\x0d\}\x0d\于是,程序员B只需要实现这个接口就能达到回调的目的了:\x0d\publicclassBimplementsMyCallInterface\x0d\{\x0d\publicvoidmethod()\x0d\{\x0d\Systemoutprintln("回调");\x0d\}\x0d\\x0d\publicstaticvoidmain(Stringargs[])\x0d\{\x0d\Callercall=newCaller();\x0d\callsetCallfuc(newB());\x0d\callcall();\x0d\}\x0d\}
一是,记住声明的格式
二是,理解这个格式所表达的意思
List<String> list = new ArrayList<String>();
这个就是格式,
意思是:新建一个List,这个List里面放的全部是String
要表示这样一个语法,就是在List后面加尖括号,尖括号里面写存放东西的类型
主要就是尖括号,尖括号里面填一个类型,表示这个数据结构里面放的全部是这种类型的东西,别的类型放步进去,同样的,取出来也全不是这种类型,不可能是其他类型。
就是这么个理解思路。
另外,还可以从使用泛型的好处, 以及 如何定义泛型类 去更深的理解
public class StringUtils001 {
public static void main(String[] args) {
String input = getInputString();
int numCount = countNum(input);
JOptionPaneshowMessageDialog(null, "字符串 [" + input + "] 中数字的个数为:" + numCount );
}
/ 计算字符串中数字的个数 /
public static int countNum(String str){
int count = 0;
for(char c:strtoCharArray()){
if(CharacterisDigit(c)){
count++;
}
}
return count;
}
private static String getInputString() {
String input = null;
while(true){
input = JOptionPaneshowInputDialog("请输入字符串");
if(input == null || inputtrim()length() == 0)
JOptionPaneshowMessageDialog(null, "忽悠我是吧, 别正个空的字符串啊 ~");
else
return input;
}
}
}
在Java中可以这样定义:
public void test(String args){
for(String arg : args){Systemoutprintln(arg);}
}
ActionScript 中参数可变的函数可以进行如下格式的定义:
private function sum( nums):Number {
var total:Number = 0;
for(var i:int = 0; i < numslength;i++){
total += nums[i];
}
return total;
}
希望我的回答对你有所帮助。
不能…… 但是可以在函数中来直接实现一个接口,这样就可以自定义一些函数了。
像下面这样:
public static void main(String[] args){
Map<Object,Object> map = new Map<Object, Object>() {
@Override
public int size() {
return 0;
}
@Override
public boolean isEmpty() {
return false;
}
@Override
public boolean containsKey(Object key) {
return false;
}
@Override
public boolean containsValue(Object value) {
return false;
}
@Override
public Object get(Object key) {
return null;
}
@Override
public Object put(Object key, Object value) {
return null;
}
@Override
public Object remove(Object key) {
return null;
}
@Override
public void putAll(Map<, > m) {
}
@Override
public void clear() {
}
@Override
public Set<Object> keySet() {
return null;
}
@Override
public Collection<Object> values() {
return null;
}
@Override
public Set<Entry<Object, Object>> entrySet() {
return null;
}
};
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)