目录
一.静态关键字static
1.静态变量(被static修饰的成员变量)
2.静态方法(被static修饰的成员方法)
扩展:工具类的简单使用
三.static关键字的注意事项
一.静态关键字static
1.静态变量(被static修饰的成员变量)
特点:
(1)被该类的所有对象共享
(2)不属于对象,属于类
(3)随着类的加载而加载,优先于对象存在
调用方式:
类名调用(建议)
对象名调用
示范:
未使用static前,s1赋值了teacherName,s2不能用
使用static后
package Demo; public class Student { private String name; private int age; public static String teacherName; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } //行为 public void Study(){ System.out.println(name+"正在学习"); } public void show(){ System.out.println(name+", "+age); } }
package Demo; public class StudentTest { public static void main(String[] args) { //类名调用 Student.teacherName = "wangwu"; //创建对象 Student s1 = new Student(); Student s2 = new Student(); //赋值 s1.setName("zhangsan"); s1.setAge(18); //s1.teacherName = "wangwu"; s2.setName("lisi"); s2.setAge(19); //调用成员方法 s1.show(); s1.Study(); System.out.println(s1.teacherName); s2.show(); s2.Study(); System.out.println(s2.teacherName); } }
类名调用
2.静态方法(被static修饰的成员方法)
特点:
(1)多用于测试类和工具类中(工具类:不是用来描述一类事物的, 而是帮我们做一些事情的类)
(2)Javabean类中很少使用
调用方法:
类名调用(建议)
对象名调用
扩展:工具类的简单使用
注意:
(1)要进行私有化构造(不让外界创建它的对象)
(2)方法要定义为静态
代码示范:
package Demo; public class ArrayUtil { //私有化构造 //目的:不让外界创建它的对象 private ArrayUtil(){ } //方法需要定为静态,方便调用 //遍历数组 public static String printArr(int[] arr){ StringBuilder stb = new StringBuilder(); stb.append("["); for (int i = 0; i < arr.length; i++) { if(i == arr.length-1){ stb.append(arr[i]); }else{ stb.append(arr[i]).append(","); } } stb.append("]"); return stb.toString(); } public static double Avg(double[] arr){ double sum = 0; for (int i = 0; i < arr.length; i++) { sum += arr[i]; } return sum / arr.length; } }
package Demo; public class ArrayUtilTest { public static void main(String[] args) { int[] arr = {1,2,3,4}; String s1 = ArrayUtil.printArr(arr); System.out.println(s1); double[] arr1 = {1.2,2.3,3.4,4.5}; double b1 = ArrayUtil.Avg(arr1); System.out.println(b1); } }
结果展示:
三.static关键字的注意事项
1.静态方法只能访问静态变量和静态方法
2.非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成 员方法
3.静态方法中是没有this关键字