Javaweb微专业第七讲-----函数与变量作用域

1.函数的定义、调用

1.1函数的定义

public static 返回值类型 函数名(参数列表) {
}

参数列表可以为空为无参函数
返回值类型为void为无返回值函数

1.2函数的调用

函数名(参数列表);

函数不能嵌套定义,但可以嵌套调用(递归)

1.3关于return的使用

给调用者返回一个值,结束该函数的调用。

2.函数的递归调用

2.1递归求解斐波那契数列

class Test {
    public static long fib1(int n){
        if(n==1){
            return 1;
        }else if(n==2){
            return 2;
        }else{
            return fib1(n-1)+fib1(n-2);
        }
    }
    public static void main(String[] args) {
        System.out.println(fib1(5));
    }
}

2.2递归求阶乘

class Test {
    public static long factorial(int n){
        if(n==1){
            return 1;
        }else{
            return n*factorial(n-1);
        }
    }
    public static void main(String[] args) {
        System.out.println(factorial(5));
    }
}

2.3关于递归的一些问题

递归有一个允许的递归深度问题,具体是多深,我也忘记了。但是请不要使用无限递归,多了会报一个栈溢出错误。

3.变量作用域

3.1全局变量与局部变量

1.通常函数外面是属于全局变量,在其他函数中可以调用,这其实是default权限(这将在后面面向对象部分提到)
2.函数内部定义的变量和代码块中定义的变量起作用范围就是在整个函数内或代码块中,出了这个代码块或函数该变量将不可见。属于局部变量。函数参数也是局部变量的作用范围。
3.

4.可变参数

4.1如何使用可变参数

class Test  {
    public static int sum(int ...nums){
        int sum = 0;
        for (int num : nums) {
            sum+=num;
        }
        return sum;
    }
    public static void main(String[] args) {
        System.out.println(sum(1,2,3,4,5,6,7,8,9));
    }
}

4.2关于可变参数需要注意的几点

1.可变参数位置问题,可变参数必须放在参数列表最后
2.可变参数可以看做是数组,传值的时候可以传数组
3.可变参数最多只能有一个
4.参数传递的问题
基本数据类型:形式参数的改变不影响实际参数。传值传递
引用数据类型:形式参数的改变直接影响实际参数。传引用传递
请问java中的参数传递既有基本类型,也有引用类型,那么,引用类型到底是值传递还是引用传递?
:值传递。java中只有值传递,引用类型传递的也是一个值,地址值。

5.命令行参数

5.1命令行参数的使用

class Test {

    public static void main(String[] args) {
        for (String string : args) {
            if("hello".equals(string)){
                System.out.println("this is hello cmd");
            }else if("bye".equals(string)){
                System.out.println("this is bye cmd!I'll quit");
            }
        }
    }
}

5.2 cmd下如何输入命令行参数
命令行参数的使用

5.3eclipse下如何传入命令行参数
想要在Eclipse中输入命令行参数,可以在目录中该程序上右键,选择“Run As”,选择”Run configurations”,如图:
eclipse传入命令行参数

运行结果在下方的console了部分
运行结果如下所示

最近看javascript权威指南,感觉自己以前对javascript认识的太过于肤浅。有好多方面,很欠缺。比如对作用域来说。 大家都知道一个变量作用域(scope)是程序定义这个变量的区域。全局(global)变量作用域全局性的,在javascript,它的存在都有定义。而在函数之内声明的变量,就只在函数体内部有定义。它们是局部(local)变量作用域全局性的。函数的参数也是局部变量,它们只在函数体内部有定义。 在函数体内部,局部变量的优先级比同名的全局变量高。比如给一个局部变量或者函数的参数声明的名字与某个全局变量名字一样的话,那么引用的就是那个局部变量或者函数的参数声明啦,间接隐藏了那个全局变量 var scope=”jquery”; function checkscope(){ var scope=”javascript”; alert(scope); } checkscope(); 上面的代码就是显示alert出javascript,之前定义全局变量jquery有效的被隐藏。 但是如果一个函数定义嵌套在另外一个函数,那么嵌套的函数有声明的变量就具有嵌套的局部作用域。当然我们知道全局变量全局对象的属性,而局部变量是一个特殊的调用对象的属性,那么我们就可以再次关注一下变量作用域的表示法,对它进行再定义。有关作用域的新描述给理解多环境下的变量提供了一种有用的方法,它为javascript的工作过程提供了一个强大的新理解。 每个javascript执行环境都有一个和它关联在一起的作用域链(scope chain).这个作用域链是一个对象列表或对象链。当javascript需要查询变量x的值时,它就开始查看该链的第一个对象。如果那个对象有一个叫x的属性,那么就采用这个属性的值。要是第一个对象没有叫x的属性,那么继续查询链的第二个对象。如果第二个没有继续查,依次类推。 转自http://www.jqueryba.com/68.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小嘉丶学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值