day04-2021-12-03

湖南Java

局部变量 全局变量

1.变量

1.1概念

可以改变的数,称为变量。在Java语言中,所有的变量在使用前必须声明。
一般通过“变量类型 变量名 = 变量值 ;”这三部分来描述一个变量。如:int a = 3 ;
变量的使用原则:就近原则,即尽量控制变量的使用范围到最小

1.2局部变量

位置:定义在方法里或者方法的声明上
注意:必须手动初始化来分配内存.如:int i = 5;或者int i; i = 5;
生命周期:随着方法的调用而存在,方法运行完毕就释放了

1.3成员变量

位置:定义在类里方法外
注意:不用初始化,也会自动被初始化成默认值
生命周期:整个类中,类消失了,成员变量才会释放

1.4变量的默认值测试

创建包:cn.tedu.basic
创建类:TestVariable1.java

    package cn.tedu.design;
   /*本类用于测试各种类型变量的默认值*/
    public class TestVariable1 {
        static String name;
        static byte b;//整数类型默认值都是0
        static short c;
        static int d;
        static long e;
        static float f;//小数类型的默认值是0.0
        static double g;
        static char j;//char类型的默认值是\u0000
        static boolean h;//boolean类型的默认值是false

    public static void main(String[] args) {
        System.out.println(name);//null,引用类型的默认值
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        System.out.println(e);
        System.out.println(f);
        System.out.println(g);
        System.out.println(h);
        System.out.println(j);
        System.out.println(h);
    }
}

1.5练习:局部变量与成员变量测试

创建包:cn.tedu.basic
创建类:TestVariable2.java

package cn.tedu.oop;
/**本类用于测试变量的使用*/
public class TestVariable2 {
    //2.定义成员变量:
    //1)位置:类里方法外
    //2)无需手动初始化,会自动赋予对应类型的默认值
    //3)作用域:在整个类中生效,类消失,变量才会消失
    static int count;

//3.变量有一个使用的原则:就近原则
static int sum = 200;
public static void main(String[] args) {
    //1.定义局部变量:
    //1)位置:在方法里/局部代码块里
    //2)必须手动初始化
    //3)作用域:在方法/局部代码块中,对应的代码执行完局部变量就被释放
    int sum = 100;//定义在方法中的局部变量sum
    System.out.println(sum);//变量的就近原则:使用的都是自己附近的变量,100
    System.out.println(count);
   
    for (int i = 0; i < 10; i++) {//局部变量i只能在循环中使用
        System.out.println(i);
    }
    //System.out.println(i);//报错:无法引用变量i:i cannot be resolved to a variable
}

}

2.方法

2.1方法定义的格式

2.2方法调用顺序图

2.3练习:测试方法的调用顺序/参数/返回值

创建包:cn.tedu.method
创建类:TestMethod.java

 package cn.tedu.method;
 /**本类用于测试方法*/
 public class TestMethod {
//1.创建程序的入口函数main()
public static void main(String[] args) {
	  System.out.println(1);
	  /**2.我们通过方法名+参数列表的方式来调用方法的功能*/
	  method1();//调用method1()
	  System.out.println(2);
	  method2(3);//调用method2()
	  int result = method3(1,2);//调用method3()
	  System.out.println(result);
          }

/**3.如果方法想要返回值,必须修改返回值类型
 * 并且return对应类型的结果
 * 如果方法的返回值类型是void,不允许有返回值
 * */
/*本方法用来测试方法的返回值类型*/
public static int method3(int i, int j) {
	/**4.通过return关键字将方法结果返回到调用位置*/
	return i+j;
}

/**1.方法的修饰符 方法的返回值类型 方法名(方法参数){方法体}*/
/*method1()想测试方法的调用顺序*/
public static void method1() {
	System.out.println(5);
	System.out.println(6);
	System.out.println(7);
}

/*本方法用来测试方法的参数,参数的位置在小括号里*/
public static void method2(int a) {
	System.out.println("海绵宝宝今年:"+ a +"岁啦~");
}	
}

2.5方法的重载

方法的重载是指在一个类中定义多个同名的方法,但是每个方法的参数列表不同(也就是指参数的个数和类型不同),程序在调用方法时,可以通过传递给他们的不同个数和类型的参数来决定具体调用哪个方法

2.6练习:测试方法的重载

创建包:cn.tedu.method
创建类:TestMethodOverload.java

 package cn.tedu.method;
 /**本类用于测试方法的重载*/
 public class TestMethodOverload {
  	public static void main(String[] args) {
	/**1.我们根据方法名+参数列表确定具体调用哪个方法*/
	/**2.方法的重载:
	 * 在同一个类中,存在方法名相同,但参数列表不同的方法
	 * 如果在同类中,同名方法的参数个数不同,一定构成重载
	 * 如果在同类中,同名方法的参数个数相同,
	 * 需要查看对应位置上参数的类型,而不是参数名,与参数名无关
	 * (int a,String b)与(int b,String a)--不构成重载
	 * (int a,String b)与(String a,int b)--构成重载
	 * */
	//2.调用method()
	method();
	//4.调用method(int)
	method(666);
	//6.调用method(int,String)
	method(888,"泡泡");
}

//1.创建一个无参的method()
public static void method() {
	System.out.println("哈哈哈哈我没参数");
}
//3.创建一个method(int n)
public static void method(int n) {
	System.out.println("哈哈哈哈我的参数是:"+n);
}
//5.创建一个method(int n,String s)
public static void method(int a,String b) {
	System.out.println(b+"今晚要干他"+a+"碗大米饭");
}
public static void method(String a,int b) {
	System.out.println(b+"今晚要干他"+a+"碗大米饭");
}

}

3拓展 成员变量与局部变量的区别

posted @ 2021-12-03 08:44  elliottmoo  阅读(23)  评论(0编辑  收藏  举报