Java中如何调用函数和自定义函数

Posted

tags:

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

调用函数

System.out.println("hello world");

println即为函数,out为是输出对象,System为java系统类。

java是面向对象语言,调用非静态方法时,需要创建一个类的对象才能调用方法;

调用静态方法时,直接用类名调用即可。

import java.util.Array; //调用其他包下的方法时需要导包

Array.sort(arr); //Array是工具类,方法都为静态方法


定义函数

修饰符 返回值类型 方法名(参数类型 参数名)

...
方法体
...    

return 返回值

;

方法包含一个方法头和一个方法体。下面是一个方法的所有部分:

    修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。

    返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。

    方法名:是方法的实际名称。方法名和参数表共同构成方法签名。

    参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。

    方法体:方法体包含具体的语句,定义该方法的功能。

注意: 在一些其它语言中方法指过程和函数。一个返回非void类型返回值的方法称为函数;一个返回void类型返回值的方法叫做过程。

拓展内容

java

Java源程序(.java文件)——>java字节码文件(.class文件)——>由解释执行器(java.exe)将字节码文件加载到java虚拟机(jvm)——>字节码文件(.class)就会在java虚拟机中执行。

Java的基本包
java.lang 其中包含有:
接口:Comparable、Cloneable、Runable等
类:八个基本数据类型封装类、Math、Runtime、Object、String、StringBuffer、Thread、Exception等

参考技术A

1.调用函数方法:对象名.函数名

需要实例化对象,后调用

2.自定义函数:

结构为:[方法修饰符] <方法返回值类型> <方法名>([<参数列表>])

方法体

有以下几种函数:


方法有2种修饰符
1)有public、protected、private三种显示的访问控制修饰符
2)还可以有static 、 final  、abstract    这三个修饰符

方法含有修饰符的例子:


扩展:构造方法

构造函数具有如下特点:

(1)构造方法的方法名必须与类名相同,其它方法不能和类名相同。

(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。

(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。

(4)构造方法不能由编程人员调用,而由系统调用。

(5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。

(6)构造方法可以重载,以参数的个数,类型,或排列顺序区分。

使用无参数构造函数的例子:

class Test
String name;
Test()
name="张三";

public static void main(String[] args)
Test t1=new Test();
System.out.println(t1.name);
t1.name="拉拉";
System.out.println(t1.name);


参考技术B

这里应该说的是调用方法,java中一般讲函数成为方法。

可以将方法分为两大类:静态方法和实例方法。

    1.调用静态方法时,直接使用<类名>.<方法名>(参数)的方式进行调用,代码如下

可以查看StringUtils.isBlank的源码如下

可以看到isBlank方法被,static关键字修饰,表明该方法是一个静态方法。在调动静态方法时不需要初始化实例,直接使用<类名>.<方法名>(参数)的方式进行调用即可。

    2.调用实例方法,顾名思义调用实例方法时,需要先初始化对应的实例,才可以调用该方法,先来看一下实例方法的定义代码:

上述代码中,定义了testMethod这个实例方法,在调用的时候,需要先实例化对象test,让后在调用test.testMethod方法。执行结果如下

参考技术C

不是很专业,我说说最简单的吧!

函数的定义

public void addMethod(int a,int b)
    System.out.println("a="+a);
    return a+b;

上述代码中

    public是方法的访问控制符,其余还有private protected和默认,详情请百度;

    void 是函数的返回类型为空,这个如果有点基础都应该是知道的,我就不赘述了;

    addMethod是方法名,在调用的时候会使用;

    int a ,int b就是方法的参数,在调用的时候一定要传入,和定义的方法的参数一样的类型和数量,不然找不到我们定义的方法;

函数的调用

System.out.println(addMethod(3,4));

这是 控制台就会打印

a=3
7

这是最简单的一种了,纯手打,谢谢

参考技术D

    需要先把调用的函数所在的包引入,例如import java.util.HashMap,如果在同一个包内,就不需要引入.

    如果是static(静态)方法,直接"类名.方法名"调用,如果不是静态方法,需要实例化对象再调用.

    自定义函数和系统函数都是一样的调用规则

pytest + yaml 框架 -5.调用内置方法和自定义函数

前言

在yaml用例文件中,有些数据不是固定的,比如注册账号,我需要每次生成不一样的,那么我们可以调用自己定义的函数
pip 安装插件

pip install pytest-yaml-yoyo

yaml 中调用内置方法

pytest-yaml-yoyo 插件使用了强大的jinja2 模板引擎,所以我们在yaml文件中可以写很多python内置的语法了。
举个例子:
我定义了一个变量username的值是test123,但是我引用变量的时候只想取出前面四个字符串,于是可以用到引用变量语法

$(username[:4])

可以直接对变量用python的切片语法

test_fun1.yml

# 作者-上海悠悠 微信/QQ交流:283340479
# blog地址 https://www.cnblogs.com/yoyoketang/
config:
  name: 引用内置函数
  variables:
    username: test123

teststeps:
-
  name: post
  request:
    method: POST
    url: http://httpbin.org/post
    json:
      username: $username[:4]
      password: "123456"
  validate:
    - eq: [status_code, 200]
    - eq: [$..username, test]

命令行执行用例

pytest test_fun1.yml

运行结果

POST http://httpbin.org/post HTTP/1.1
Host: httpbin.org
User-Agent: python-requests/2.28.1
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 42
Content-Type: application/json

"username": "test", "password": "123456"

字典对象取值

如果定义一个字典类型的变量,我们在取值的时候也可以根据key取值
如定义变量

  variables:
    username: test123
    body:
      user: yoyo
      email: 123@qq.com

user和email的取值用2种方式,通过点属性或者用字典取值方法[key]

      username: $body.user
      email: $body["user"]

test_fun2.yml完整示例

# 作者-上海悠悠 微信/QQ交流:283340479
# blog地址 https://www.cnblogs.com/yoyoketang/
config:
  name: 引用内置函数
  variables:
    username: test123
    body:
      user: yoyo
      email: 123@qq.com

teststeps:
-
  name: post
  request:
    method: POST
    url: http://httpbin.org/post
    json:
      username: $body.user
      password: "123456"
      email: $body["user"]
  validate:
    - eq: [status_code, 200]
    - eq: [$..username, '$body.user']

自定义函数功能

自定义函数的实现,需在conftest.py (pytest 框架内置的插件文件)文件中实现

# conftest.py
# 作者-上海悠悠 微信/QQ交流:283340479
# blog地址 https://www.cnblogs.com/yoyoketang/

from pytest_yaml_yoyo import my_builtins
import uuid
import random


def random_user():
    """生成随机账号 4-16位数字+字符a-z"""
    return str(uuid.uuid4()).replace('-', '')[:random.randint(4, 16)]


# 注册到插件内置模块上
my_builtins.random_user = random_user


if __name__ == '__main__':
    print(random_user())

实现基本原理是自己定义一个函数,然后注册到插件内置模块 my_builtins。这样我们在用例中就能找到该函数方法了

test_fun3.yml 用例中引用内置函数示例

config:
  name: 引用内置函数
  variables:
    username: $random_user()
teststeps:
-
  name: post
  request:
    method: POST
    url: http://httpbin.org/post
    json:
      username: $username
      password: "123456"
  validate:
    - eq: [status_code, 200]
    - eq: [$..username, '$username']

函数传参数

在引用自定义函数的时候,也可以传变量

# conftest.py
# 作者-上海悠悠 微信/QQ交流:283340479
# blog地址 https://www.cnblogs.com/yoyoketang/

from pytest_yaml_yoyo import my_builtins

def func(x):
    return f"hellox"


my_builtins.func = func

test_fun4.yml示例

config:
  name: 引用内置函数
teststeps:
-
  name: post
  request:
    method: POST
    url: http://httpbin.org/post
    json:
      username: $func("xxx")
      password: "123456"
  validate:
    - eq: [status_code, 200]

函数还能引用自己在config 中定义的变量

config:
  name: 引用内置函数
  variables:
    var: test123
teststeps:
-
  name: post
  request:
    method: POST
    url: http://httpbin.org/post
    json:
      username: $func(var)
      password: "123456"
  validate:
    - eq: [status_code, 200]

函数返回的结果也能二次取值

如果一个函数返回list类型,我们在用例中也能取出其中的一个值

# conftest.py
# 作者-上海悠悠 微信/QQ交流:283340479
# blog地址 https://www.cnblogs.com/yoyoketang/

from pytest_yaml_yoyo import my_builtins

def func_list():
    return ['test1', 'test2', 'test3']


my_builtins.func_list = func_list

test_fun5.yml示例

config:
  name: 引用内置函数

teststeps:
-
  name: post
  request:
    method: POST
    url: http://httpbin.org/post
    json:
      username: $func_list().1
      password: "123456"
  validate:
    - eq: [status_code, 200]

list类型支持2种取值方式$func_list().1 或者 $func_list()[1]

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

EL函数和自定义EL函数

MySQL存储过程和自定义函数Navicat for mysql创建存储过程和函数调用存储过程和函数的区别

pytest + yaml 框架 -5.调用内置方法和自定义函数

oracle存储过程和自定义函数

JSP JSTL入门 - JSTL函数和自定义函数

WP 插入 post PHP 函数和自定义字段