5.面向对象编程--全局、局部变量

变量在程序中使用的范围不同--作用域(Scope),也就是变量的有效范围,变量的作用域取决于变量的访问性。

根据变量定义的位置(或者说变量作用域的范围)可以分为两大类:

        ·局部变量

        ·全局变量

局部变量:定义在函数或者代码块(也称为复合语句:{})内的变量称为局部变量(Local Variable),它的作用域仅限于函数和代码块内,在外部是无效的,外部使用会报错。

特点:

    1.没有修饰符

    2.使用前必须初始化,没有默认值

    3.作用域只限于对应的函数,一旦函数执行完毕,变量就消亡

    4.同一个作用域的变量是唯一的,不允许重名。不同的作用域允许变量重名:它们属于不同的变量,分配不同的内存单元,互不干扰。

注意:形参变量、在函数体内定义的变量都是局部变量。实参给形参传值的过程也就是给局部变量赋值的过程。

package com.lemon.java6.day4.section1;

public class Var {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
			/*变量
			 * 
			 * ·根据定义的位置不同(或者说变量作用域的范围)
			 * --全局变量
			 * --局部变量
			 */
		/*
		 * 局部变量特点:
		 * 没有修饰符
		 * 使用前必须初始化
		 * 作用域只限于对应的函数,一旦函数执行完,变量就消亡
		 * 同一个作用域范围的局部变量是唯一的,不能重名
		 */
	
		Var.sumFun(2, 2);	//执行函数
		
		//--2、代码块:{}作用域从定义到代码块结束
		{
			int b =23;
			System.out.println("代码块的变量:b="+b);
		}
//		System.out.println(b);//外部访问不到
		
		Var.paraFun(3, 4);	//执行函数
	
	}
	//--3、方法的形式参数:定义方法时定义的变量,作用域是整个方法内,无需显示初始化
	
	static int paraFun(int a,int b) {
		int sum = 0;
		sum = a+b;
		return sum;
		
	}
	//--1、方法内:作用域是定义处到结束处
	static void sumFun(int a ,int b) {
		System.out.println("方法内:sum="+(a+b));
	}

}

全局变量:在类范围内定义的变量(在所有函数外部定义的变量)(Global Variable),它的作用域默认为是真个程序,也就是整个源程序,它的作用域是从声明开始吗,到程序结束。

特点:

        1.可以添加修饰符:public、protected、private、static、final等

        2.可以不进行初始化,因为全局变量有默认值,也就是缺省值。

        3.全局变量必须定义在所有函数之外。

        4.在同一源文件中,允许全局和局部变量重名,在局部变量的作用域内,同名的全局变量不起作用。

package com.lemon.java6.day4.section1;

public class GlobalVar {
	/**
	 * 全局变量:在类范围内定义的变量
	 * 特点:
	 * 可以有修饰符:public、private、protected、final、static
	 * 可以不用初始化,会有缺省值
	 * 定义在函数外部
	 * 同作用范围内,变量不能重名
	 * 不同的作用域,变量能重名(为了提高代码的可读性,尽量不要重名)
	 */
	
	/**
	 * 变量命名规范:
	 * 小写字母开头,驼峰方式
	 * 不能与关键字、标志符重名
	 * 以
	 */
	static int age;//全局变量
	static String name;//全局变量
	static int[] a;//全局变量
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(age);
		System.out.println(name);
		System.out.println(a[0]);//会出现空指针异常,因为没有指向
	}
    public static void myFun() {
    	
    }
    public void myFun2() {
    	System.out.println(age);
    	System.out.println(name);
    }
}
注意:
public class Fun {

	public static void main(String[] args) {
		int aInt = 20;
		int bInt = 30;
		//创建一个方法,需要两个参数(整型),返回值为两个数的和
		int sum = add(aInt, bInt);//此时的aInt和bInt都是实参,传参的过程其实也就是传值的过程
		System.out.println(sum);
		}

	static int add(int aInt1,int bInt1) {//aInt1和bInt1都是形参
		int sum1;
		sum1 = aInt1 + bInt1;
		return sum1;
		//return (aInt1+bInt1);//匿名变量
	}



猜你喜欢

转载自blog.csdn.net/Vicky_zy/article/details/80910102
今日推荐