课后作业2
一 , static
静态方法(或称为类方法),指被 static 修饰的成员方法。
(一)静态方法,属于类,而不属于类的对象。
1)它通过类直接被调用,无需创建类的对象。
2)静态方法中,不能使用 this 关键字,也不能直接访问所属类的实例变量和实例方法;
3)静态方法中,可以直接访问所属类的静态变量和静态方法。
4)同this 关键字,super 关键字也与类的实例相关,静态方法中不能使用 super 关键字。
(二)语法格式:
访问权限 [static] 返回值类型 方法名(参数列表 ) { 语句… }
方法的返回值: return 表达式;
(三)static的特点:
1、随着类的加载而被加载;
2、优先于对象存在;
3、被所有对象共享;
4、可以通过类名调用。
(四)静态方法与静态变量好处:
1. 属于类级别,无需创建对象就即可直接使用,使用方便。
2. 全局唯一,内存中唯一,静态变量可以唯一标识某些状态。
3. 类加载时候初始化,常驻在内存,调用快捷方便。
静态方法与静态变量缺点:
1. 静态方法不能调用非静态的方法和变量。
2.不能使用this和super关键字。
静态方法与静态变量适用场景:
1. 静态方法,最适合工具类中方法的定义;比如文件操作,日期处理方法等。
2.静态方法,适合入口方法定义;比如单例模式,因从外部拿不到构造函数,所以定义一个静态的方法获取对象非常有必要。
3.静态变量适合全局变量的定义;举例:用一个布尔型静态成员变量做控制标志。
二 , 子方去掉static的原因
1 public static void main(String[] args) { 2 int result; 3 4 for (int x = 1; x <= 10; x++) { 5 result = square(x); 6 // Math库中也提供了求平方数的方法 7 // result=(int)Math.pow(x,2); 8 System.out.println("The square of " + x + " is " + result + "\n"); 9 } 10 } 11 12 // 自定义求平方数的静态方法 13 public int square(int y) { 14 return y * y; 15 }
错误提示 :
不能对非静态方法 square(int)进行静态引用
原因:
静态成员不能直接访问非静态成员。
主函数是静态类型,只能访问静态类型的子方法
(三)Java的“方法重载
1 public static void main(String args[]) { 2 System.out.println("The square of integer 7 is " + square(7)); 3 System.out.println("\nThe square of double 7.5 is " + square(7.5)); 4 } 5 6 public static int square(int x) { 7 return x * x; 8 } 9 10 public static double square(double y) { 11 return y * y; 12 }
The square of integer 7 is 49 The square of double 7.5 is 56.25