一、方法:

java中的方法语法格式为:


[修饰符列表] 返回值类型 方法名(形式参数列表){
//方法体;
}


java中有三种方法:静态方法、构造方法、实例方法。

1、静态方法

语法:


public static 放回值类型 方法名 (形参){
//方法体;
}


调用静态方法:


类名 . 方法名(实参);


注意:静态方法顾名思义就是静态的,不用创建对象即可调用。当你的方法体中没有实例变量时可以选择静态方法。

2、构造方法

语法:


public 方法名(形参){ //注意方法名和类名相同
//方法体;
}


调用构造方法:


new 方法名(实参);//方法名即类名,此语法也是创建对象的语法。


注意:构造方法,它的作用有两个,一个是创建对象,一个是给对象赋值。我们调用构造方法时一般不是简单写上面的语法,而是补充了一些代码,如


Student xiaoMing = new Student();
//或者同时初始化
Student xiaoMing = new Student(实参);
//此语法可以类比刚开始学会的
int i = 10 ;
/*int和Student都是数据类型,i和xiaoMing都是一个“名”,
new Student(实参)和10其实是类似的,即一个“对象”和“数值”
*/


在一个类中,养成一个好习惯,写下无参构造方法


public 类名(){
//方法体;
}


3、实例方法

语法:


public 返回值类型 方法名(形参){
//方法体;
}


调用实例方法:


//先创建一个对象,如
Student xiaoMing = new Student();//省略了Student类代码,且不初始化值
//有了对象才能调用实例方法,根本原因可通过内存图了解
//调用方法:
引用 . 方法名(实参);//引用即xiaoMing , 注意不是类名 . 方法名();根本原因也可通过内存图了解!


注意:区分好实例方法和静态方法,区别在于一个有static一个没有。利用一个类来创建一个对象时我们可称为将其实例化,可根据这个来理解实例方法。实例方法是作用于对象上的,没有对象也就无法调用实例方法。

变量:java中有三种变量,局部变量、实例变量、静态变量(实例变量和静态变量合称为成员变量)。

首先,局部变量位于方法体内,成员变量位于方法体外!简单理解就是一个在大括号内一个在大括号外。

1、局部变量

局部变量就是最开始学习的变量,很简单,举个例子就好


public class Text{
    public static void main(String[] args){
        int i = 1 ;//方法体内,局部变量
        //调用方法:直接变量名就可以了,没有什么类名和引用(不用学着学着学乱了)
        System.out.println(i);//输出1
    }
}


2、静态变量和实例变量

静态变量需要掌握的不多,我们要将它和实例变量一起来看。

它们的区别有两点:一是定义,二是调用


//定义
class A{
  int i ;//没有static,且在方法体外,为实例方法
  static int t ;//有static,且在方法体外,为静态方法
//养成一个好习惯,封装变量
  privete int i ;
  //不确定是否要封装静态变量。就先不封装吧。不过封装是可以编译的,只不过需要一个方法来调用
  //private static int t ;//private和static谁前谁后没关系,不过注意静态变量不需要setter方法,因为不想让人修改嘛  
  static int t = 1 ;
}
//调用
//根据内存图可知,静态变量位于方法区,而实例变量位于堆内存
//所以实例变量需要“引用.方法名”调用(有引用,故需先创建对象)
//而静态变量规范上我们使用“类名.变量名”调用



测试:


//中国人  类
class Chinese{
	//无参静态方法
	public static void wuChang(){
		System.out.println("无参静态方法执行了");
	}
	//有参静态方法
	public static int jiaFa(int a , int b ){
		System.out.println("有参静态方法执行了。"+ a + "+" + b  + "=" + (a+b));
		return (a+b) ;
	}
	//实例变量
	private int old ;
	//静态变量,封装????有什么意见请交流一下,我觉得应该封装
	static String guoJi = "中国";
	//无参构造方法
	public Chinese(){
		System.out.println("无参构造方法执行了");
	}
	//有参构造方法
	public Chinese(int old){//此处的old为局部变量
		this.old = old ;//this.old 为前面实例变量的old,等号右边的old为上一行的局部变量old
		System.out.println("有参构造方法执行了,并初始化了年龄为:"+old);
	}
	// setter and getter(也就是实例方法)
	public void setOld(int old){
		if(old > 100 || old < 1 ){
			System.out.println("非法年龄");//封装的好处:防止bug,如初始化年龄为1000岁。
			return ;
		}
		this.old = old ;
	}
	public int getOld(){
		return old ;
	}

}

//测试类(不要把类和测试类写在同一个文件中)
class ChineseText{
	public static void main(String[] args){
		//调用静态方法,无需创建对象,直接类名.方法名();
		Chinese.wuChang();
		Chinese.jiaFa(1 , 3 );
		//调用静态变量,规范上使用类名.变量名;
		System.out.println("静态变量为:"+Chinese.guoJi);
		//调用实例变量和实例方法都需要先创建对象,创建对象使用构造方法
		Chinese people1 = new Chinese();//调用的是无参构造
		Chinese people2 = new Chinese(18);//调用有参构造方法
		//调用实例变量,使用get实例方法,引用.方法名();
		System.out.println("get方法执行。people2 的年龄为:"+people2.getOld());
		//给实例变量赋值,使用set实例方法,引用.方法名(实参);
		people2.setOld(24);
		System.out.println("set方法执行。修改people2 的年龄为:"+ people2.getOld());
		people2.setOld(1000);//bug
	}
}