小鲁哥哥白话笔记-static
前言: 进入到就业班第一天,大家离自己的梦想更近了一步,但是课程难度和知识量都加大了,大家对一些知识的掌握就不如基础班时那么清晰了,黑马程序员济南中心的老师就用白话的方式给大家写一写每一天的笔记,通俗易懂,让大家更好的去理解当天所学知识。 第一天主要介绍了static关键字,我们先聊一聊这个关键字的来源:在绝大多数的面向对象程序设计语言中,静态域被称为类域,术语“static”只是沿用了C++的用法,并无实际意义。看到了吧,static这个关键字不要对他恐惧,其实它只是对于静态域的一种描述。它有什么能力呢?为什么要有这么一个修饰符呢,因为当在定义类的时候,类中都会有相应的属性和方法。而属性和方法都是通过创建本类对象调用的。当在调用对象的某个方法时,这个方法没有访问到对象的特有数据时,方法创建这个对象有些多余。可是不创建对象,方法又调用不了,这时我们就用static来修饰方法和变量,就可以直接通过类名来调用。 A: 被static修饰的成员变量属于类,不属于这个类的某个对象。(也就是说,多个对象在访问或修改static修饰的成员变量时,其中一个对象将static成员变量值进行了修改,其他对象中的static成员变量值跟着改变,即多个对象共享同一个static成员变量) B: 被static修饰的成员可以并且建议通过类名直接访问 访问静态成员的格式: C: 静态的加载优先于对象,随着类的加载而加载 课上我们讲了以下3中用法,1.静态代码块;2.静态方法;3.静态常量。大家初识static字时,对它充满了好奇,恨不得类里边的每个方法,每个变量都用它来修饰,这里来提醒大家,一般static用户工具类中,一般我们的应用类可能会有几个方法是用到了static来修饰。有的同学问我,什么是工具类,为什么工具类都用static来修饰。上述我们已经讲了,被static修饰的方法我们可以直接通过类名去调用。这就好比修汽车的工具,不管多少量汽车有故障,我们直接从工具箱拿工具修理就可以了,而不用再去生产一种专门修理每一种汽车的工具,是不是方便了很多。例子如下: [Java] 纯文本查看 复制代码 //传智播客
public class Car {
public static void main(String[] args) {
System.out.println(““汽车有问题,需要修理”);
ToolCabinet.screwdriver();
}
}
class ToolCabinet{
public static void screwdriver() {
System.out.println(“螺丝刀修理洗车”);
}
} 我发现有的同学在使用static修饰的工具类时,喜欢实例化对象,在通过对象去调用,其实这是很浪费的,就像汽车明明可以直接踩油门开着走了,你偏偏要推着走,所以这就需要我们给这个行为加个限制,所以我们要私有化工具类的构造函数,让汽车不能手推行走,只能开车走,示例如下: [Java] 纯文本查看 复制代码 //传智播客
//因为私有化了构造函数,所以只能开车行走,不能推车行走
class Car{
private Car(){}
public static void driver() {
System.out.println(“开车行走”);
}
public void cart(){
System.out.println(“推车行走”);
}
} 终上所述,大家有没有发现,static其实应用的范围挺局限,一般都是用于工具类的书写,所以我们在需要写一些工具类时,就要想到用static关键字去修饰方法或者变量。
|