一、被static修饰的成员变量叫做静态变量
特点:被该类所有对象共享,不属于对象,属于类,随着类的加载而加载,优先于对象存在
调用方式:1.类名调用 2.对象名调用
二、被static修饰的成员方法,叫做静态方法
特点:多用在测试类和工具类中,JavaBean类中很少会用
调用方式:1.类名调用 2.对象名调用
JavaBean类:用来描述一类事物的类,比如Student,Teacher等
测试类:用来检查其他类是否书写正确,带有main方法的类,是程序的入口
工具类:不是用来描述一类事物的,而是帮我们做一些事情的类
三、static的注意事项:
1.静态方法只能访问静态变量和静态方法
2.非静态变量可以访问静态变量或静态方法,也可以访问非静态的成员变量和非静态的成员方法
3.静态方法中没有this关键字
练习1:编写一个工具类ArrayUtil
①提供一个工具类方法printArr,用于返回整数数组的内容,返回的字符串格式如:[10,20,50,34,100](只考虑整数数组,且只考虑一维数组)
②提供这样一个工具方法getAerage,用于返回平均分(只考虑浮点型数组,且只考虑一维数组)
③定义一个测试类TestDemo,调用改工具的工具方法,并返回结果
ArrayUtil
package a02staticdemo2;
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=sum+arr[i];
}
return sum/arr.length;
}
}
TestDemo
package a02staticdemo2;
public class TestDemo {
public static void main(String[] args) {
//测试工具类中的两个方法是否正确
int[] arr1 = {1, 2, 3, 4, 5};
String str = ArrayUtil.printArr(arr1);//ctrl+alt+v自动生成左侧
System.out.println(str);
double[] arr2 = {1.5, 3.7, 4.9, 5.8, 6.6};
double avg = ArrayUtil.getAverage(arr2);
System.out.println(avg);
}
}
运行结果:
练习2:定义学生工具类
定义一个集合,用于存储三个学生对象,学生类的属性为:name,age,gender
定义一个工具类,用于获取集合中最大学生的年龄
JavaBean
package a03staticdemo3;
public class Student {
private String name;
private int age;
private String gender;
public Student() {
}
public Student(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
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 String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
工具类:
package a03staticdemo3;
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++) {
int tmpAge=list.get(i).getAge();
if(tmpAge>max){
max=tmpAge;
}
}
return max;
}
}
测试类:
package a03staticdemo3;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
//1.创建一个集合用来存储学生对象
ArrayList<Student> list=new ArrayList<>();
//2.创建三个学生对象
Student stu1=new Student("zhangsan",23,"男");
Student stu2=new Student("luhan",34,"男");
Student stu3=new Student("tiankong",42,"男");
//3.把学生对象添加到集合当中
list.add(stu1);
list.add(stu2);
list.add(stu3);
int maxAgeStudent=StudentUtil.getMaxAgeStudent(list);
System.out.println(maxAgeStudent);
}
}
运行结果:
标签:Java,String,int,list,static,Student,public,name From: https://blog.csdn.net/TNTxd/article/details/136843306