static
static表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量
被static修饰的成员变量,叫做静态变量,被static修饰的成员方法,叫做静态方法
静态变量的特点:
- 被该类所有对象共享
- 不属于对象,属于类
- 随着类的加载而加载,优先于对象存在
调用方式:
- 类名调用(推荐)
- 对象名调用
静态方法的特点:
- 多用在测试类和工具类中
- Javabean类中很少会用
调用方式:
- 类名调用(推荐)
- 对象名调用
工具类:帮助我们做一些事情的,但是不描述任何事物的类
要求:
- 类名见名知意
- 私有化构造方法
- 方法定义为静态
工具类练习:
package com.itheimaa01staticdemo1;
public class ArrayUtil {
//私有化构造方法
//为了不让外界创建它的对象
private ArrayUtil(){}
//需要定义为静态的,方便调用
public static String printArr(int[] arr){
StringBuilder sb=new StringBuilder() ;
sb.append("[");
for (int i = 0; i < arr.length; i++) {
if(i==arr.length-1)
{
sb.append(arr[i]);
}
else {
sb.append(arr[i]).append(",");
}
}
sb.append("]") ;
return sb.toString();
}
public static double getAverage(double[] arr){
double sum=0;
for (int i = 0; i < arr.length; i++) {
sum+=arr[i];
}
return sum/arr.length;
}
}
package com.itheimaa01staticdemo1;
public class TestDemo {
public static void main(String[] args) {
//测试工具类中的两个方法是否正确
int[] arr1={1,2,3,4,5};
String str = ArrayUtil.printArr(arr1);
System.out.println(str);
double[] arr2={1.5,3.7,4.9,5.8,6.6};
double av = ArrayUtil.getAverage(arr2);
System.out.println(av);
}
}
前面还有Javabean没写
package com.itheima;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
//创建一个集合用来存储学生对象
ArrayList<Student> list =new ArrayList<>();
//创建三个学生对象
Student stu1=new Student("zhangsan",18,"男");
Student stu2=new Student("lisi",19,"女");
Student stu3=new Student("wangwu",25,"男");
//将学生对象添加到集合当中
list.add(stu1);
list.add(stu2);
list.add(stu3);
//调用工具类中的方法
int maxage=StudentUtil.getMaxAgeStudent(list);
System.out.println(maxage);
}
}
package com.itheima;
import java.util.ArrayList;
public class StudentUtil {
private StudentUtil(){};
//静态方法
public static int getMaxAgeStudent(ArrayList<Student>list)
{
//定义一个参照物
int max=list.get(0).getAge();
//循环遍历集合
for (int i = 1; i < list.size(); i++) {
if(list.get(i).getAge() >max){
max=list.get(i).getAge();
}
}
return max;
}
}
static 的注意事项
- 静态方法只能访问静态变量和静态方法
- 非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法
- 静态方法中没有this关键字