Bootstrap

自学java第8Day

学习目标:深入学习面向对象


学习内容:

ststic


学习时间:

下午 3 点-下午 6 点


学习产出:

static

        static表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量

        1.被static修饰的成员变量,叫做静态变量

        特点:

                被该类所有对象共享

                不属于对象,属于类

                随着类的加载而加载,优先于对象存在

        调用方式:

                类名调用(推荐)

                对象名调用

        2.被static修饰的成员方法,叫做静态方法

        特点:

                多用在测试类和工具类中

                JavaBean类中很少会用

        调用方式:

                类名调用(推荐)

                对象名调用

public class Student {
    private String name;
    private int age;
    private String gender;
    public static String thachername;

    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;
    }
    public void study(){
        System.out.println(name+"正在学习");
    }
    public void show(){
        System.out.println(name+", "+age+", "+gender+", "+thachername);
    }
}
public class StdentTest {
    public static void main(String[] args) {
        Student.thachername="全聚德一级码师";
        Student s1=new Student();
        s1.setName("张三");
        s1.setAge(23);
        s1.setGender("男");
        //s1.thachername="全聚德一级码师";
        s1.study();
        s1.show();

        Student s2=new Student();
        s2.setName("蛋姐");
        s2.setAge(21);
        s2.setGender("女");

        s2.study();
        s2.show();
    }
}

运行结果:

张三正在学习
张三, 23, 男, 全聚德一级码师
蛋姐正在学习
蛋姐, 21, 女, 全聚德一级码师

工具类

javabean类用来描述一类事物的类。比如,Student,Teacher,Dod,Cat等
测试类用来检查其他类是否书写正确,带有main方法的类,是程序的入口
工具类不是用来描述一类事物的,而是帮我们做一些事情的类

练习:定义数组工具类

        需求:在实际开发中,经常会遇到一些数组使用的工具类

        请按照如下要求编写一个数组的工具类:ArrayUtil

        1.提供一个工具类方法printArr,用于返回整数数组的内容

                返回的字符串格式如:[10, 20, 50, 34, 100](只考虑整数数组,且只考虑一维数组)

        2.提供这样一个工具方法getAerage,用于返回平均分(只考虑浮点型数组,且只考虑一维数组)

        3.定义一个测试类TestDemo,调用该工具类的工具方法,并返回结果

代码如下:

public class ArratUtil {
    private ArratUtil(){}

    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]+", ");
            }
        }
        sb.append("]");
        return sb.toString();
    }

    public static double getAerage(double[] arr){
        double mun=0;
        for (int i = 0; i < arr.length; i++) {
            mun+=arr[i];
        }
        return mun/arr.length;
    }
}
public class TestDemo {
    public static void main(String[] args) {
        int[] arr={23,34,65,78};
        System.out.println(ArratUtil.printArr(arr));
        double[] arr1={2.1,4.5,8.3,4.7};
        System.out.println(ArratUtil.getAerage(arr1));
    }
}

运行结果:

[23, 34, 65, 78]
4.9

练习:定义一个学生工具类

        需求:定义一个集合,用于存储3个学生对象

        学生类的属性为:name、age、gender

        定义一个工具类,用于获取集合中最大学生的年龄

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;
    }
}
import java.util.ArrayList;

public class MaxUtil {
    private MaxUtil(){}
    public static int maxAge(ArrayList<Student> list){
        int max=list.get(0).getAge();
        for (int i = 1; i < list.size(); i++) {
            int age=list.get(i).getAge();
            if(age>max){
                max=age;
            }
        }
        return max;
    }
}
import java.util.ArrayList;

public class StudentTest {
    public static void main(String[] args) {
        ArrayList<Student> list=new ArrayList<>();
        Student s1=new Student("张三",23,"男");
        Student s2=new Student("蛋姐",21,"女");
        Student s3=new Student("李四",22,"男");

        list.add(s1);
        list.add(s2);
        list.add(s3);
        int maxage=MaxUtil.maxAge(list);
        System.out.println(maxage);
    }
}

运行结果:

23

static的注意事项

        静态方法中,只能访问静态

        非静态方法中可以访问所有

        静态方法中没有this关键字

;