黑马程序员技术交流社区

标题: 【西安校区】Java中static方法和普通方法的举例说明 [打印本页]

作者: 逆风TO    时间: 2020-2-18 13:27
标题: 【西安校区】Java中static方法和普通方法的举例说明
以实际的例子去解释使用static 关键字的意义:
static (静态成员变量):

用来修饰成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象的。 意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见。既然属于类,就可以不靠创建对象来调用了。

类变量:
当 static 修饰成员变量时,该变量称为类变量。该类的每个对象都共享同一个类变量的值。任何对象都可以更改该类变量的值。

定义格式:

static 数据类型 变量名;

举例:

static int grade;

静态方法:
当 static 修饰成员方法时,该方法称为静态方法 。静态方法在声明中有 static ,可直接使用类名来调用

定义格式:

修饰符 static 返回值类型 方法名 (参数列表){
//执行语句
}

举例:在Student类中定义静态方法

public static void showNum() {
System.out.println(“num:” + numberOfStudent);
}

静态方法调用的注意事项:

静态方法可以直接访问类变量和静态方法。
静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。
静态方法中,不能使用this关键字。
下面开始举例说明:
如图所示,假如需要定义一个关于课表的学生类,里面有姓名,年龄,学号,上课教室,这里的共有信息:上课教室(用红色标注)。对于姓名,年龄,学号而言,每个对象都要用自己独立的数据,

但是对于上课教室而言,应该是多个对象共享同一份数据才对。因为同一班级的同学的是一个集体,上课的教室也是一个共有的属性,假如下一节课要换一所教室上课的话,如果不用static修饰成员变量,则需要全部对象都更改一遍,此处举例三人,但是一个班的同学的数据会更多,所需代码也就会越多,也会消耗更多内存。

代码如下:
[Java] 纯文本查看 复制代码
public class Student {

    private String name;   //学生姓名
    private int age;   //学生年龄
    private int studentid;   //学生学号
    public static String Classroom;   //上课教室

}

static静态变量在内存中的原理图解:

总结:
对于此类情况的成员变量处理,一旦用了static关键字,那么这样的内容不再属于对象自己,而是属于类的,所以凡是本类的对象,都共享同一份数据。简单来说就是大家都绑定在一起的变量定义,比如上课时间,上课地点等。则使用static 关键字去定义,如果是每个对象独有的,如学号,姓名等。则使用private 去定义。对于static修饰的方法也是同样的道理。







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2