请教Java怎样自定义函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教Java怎样自定义函数相关的知识,希望对你有一定的参考价值。

高三了,今个学期才正式学习Java基础知识,之前我学VB都不错的,研究过AMXX插件,稍微了解过C++.

我问过老师关于Java的自定义函数都比起VB,C++等复杂,还要新建一个类来编译.没啥时间指教.

请教下给位编程熟悉的,把C++的这个方法怎样在Java使用呢~?

int addition (int a, int b)

int sum;
sum=a+b;
return (sum);


int main ()

int z;
z = addition (5,3);
printf("Result = %i",z);
return 0;


VB:

Private Function addition(a, b)
addition = a + b
End Function

Private Sub Form_Click()
Dim sum
sum = addition(2, 3)
Print sum
End Sub

熟悉的根据这个做个例子吧,先谢谢``

java 与c类语言既是一脉相承,但又略有不同,java程序运行的基础与c++,C#等面向对象语言都一样,都是以类为基础,而类中又以方法(在java中不叫函数)来完成需要解决的问题的,方法的运行就跟c类似了都需要一个主方法来运行它就是main()方法,下面是例子:
public class Test
static int addition(int a, int b)

int sum;
sum=a+b;
return (sum);


public static void main(String args[])

int z;
z = addition(5,3);
System.out.println("Result = "+z);

参考技术A 朋友
java 是靠java
虚拟机加载的,虚拟机执行一个java编译后的字节码的时候,首先寻找编译后的
main
方法,由于
main
方法必须由
虚拟机加载所以,它也必须为静态的,main
方法前面必须要有
static
修饰符,你不能改变这个规律的,高级语言都有这条规律,除非你写的不是java
应用程序,而是applet
程序的话, 也要使用它规定的
initmain
貌似是的哈,没有写过。。。。所以你不能改变,他不是脚本语言,不是让你想怎么就怎么写的,你也没有办法固定执行的入口
参考技术B 楼上正解!
你们是什么学校,开设了这么多计算机编程的课程!
“我问过老师关于Java的自定义函数都比起VB,C++等复杂,还要新建一个类来编译.没啥时间指教.”
这句话有点问题,不用新建类也可以编译的。java的主程序类需要包含一个静态的main方法。
参考技术C public class Test
static int addition(int a, int b)

int sum;
sum=a+b;
return (sum);


public static void main(String args[])

int z;
z = addition(5,3);
System.out.println("Result = "+z);

参考技术D <script language=javascript>
function okwin()
alert("ok");

window.open("test.htm");
</script>

java-fastjson怎样使用自定义DateFormatDeserializer

参考技术A 反序列化问题
如何使用fastjson成功反序列如下json串?
“id”:1,”status”:200
显然,如果直接用Json.parseObject()方法进行反序列化,会报如下错误信息:
Exception in thread “main” com.alibaba.fastjson.JSONException: parse
enum com.netwaymedia.exhibition.nio.common.dto.Msg$StatusCodeEnum
error, value : 200 at
com.alibaba.fastjson.parser.deserializer.EnumDeserializer.deserialze(EnumDeserializer.java:48)
at
com.alibaba.fastjson.parser.deserializer.DefaultFieldDeserializer.parseField(DefaultFieldDeserializer.java:33)
原因分析:前面已经提过,fastjson默认使用ordinal值去查找对应的枚举实例,显示是获取不到的,所以抛出异常,需要修改status值为0才运行OK。
序列化问题
如果使用JSON.toJSONString()方法对上述Msg对象进行序列化,会得到如下json串
“id”:1,”status”:”OK”
显示不是我们所期待的原始字符串
“id”:1,”status”:200
如何解决上述两大问题?
优雅的解决方案
答案就在于fastjson提供注解JSONField。通过JSONField可灵活控制字段的序列化和反序列,重新修改Msg结构如下:
public class Msg

private int id;

private StatusCodeEnum statusCode;

public int getId()
return id;


public void setId(int id)
this.id = id;


@JSONField(name = "status")
public int getStatus()
return statusCode.getCode();


@JSONField(name = "status")
public void setStatus(int code)
this.statusCode = StatusCodeEnum.getEnum(code);


@JSONField(serialize = false)
public StatusCodeEnum getStatusCode()
return statusCode;


@JSONField(deserialize = false)
public void setStatusCode(StatusCodeEnum statusCode)
this.statusCode = statusCode;


public static enum StatusCodeEnum
OK(200, "正常"), BAD_REQUEST(400, "服务器出错");

private static final Map<Integer, StatusCodeEnum> CODE_MAP = new HashMap<Integer, StatusCodeEnum>();

static
for (StatusCodeEnum typeEnum : StatusCodeEnum.values())
CODE_MAP.put(typeEnum.getCode(), typeEnum);



StatusCodeEnum(int code, String meaning)
this.code = code;
this.meaning = meaning;


public int getCode()
return code;


public String getMeaning()
return meaning;


public static StatusCodeEnum getEnum(Integer code)
return CODE_MAP.get(code);


private final int code;
private final String meaning;

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

思路是通过修改字段名为statusCode,并用JSONField注解该字段不进行序列和反序列化,但是提供getStatus/setStatus方法来定制化枚举变量statusCode的序列和反序列,完美的解决前面提到的两大问题。
这个方法我在网上还没看到过,是我自己尝试出来的,特别拿出来跟大家分享,不用谢,请叫我雷锋。

以上是关于请教Java怎样自定义函数的主要内容,如果未能解决你的问题,请参考以下文章

在Delphi中如何使用SQL自定义函数,参数怎样传递给自定义函数?

C语言中怎样输出自定义函数的输出

python怎样用自定义函数对列表排序?

linux 如何自定义命令函数?

请教自定义CheckBox样式的问题

sql server 怎样用select语句调用自定义表值函数