Java学习—自定义类

这是一个自定义类
/**
 * @author: qihang
 * @CreateDate: 2023/03/14/ 20:30
 * @Project: Study
 */
public class StaticTest {
    //main方法是一个静态方法,不对任何对象进行操作
    public static void main(String[] args) {
        Employee[] staff = new Employee[3];
        staff[0] = new Employee("康熙", 2000);
        staff[1] = new Employee("雍正", 4000);
        staff[2] = new Employee("乾隆", 6000);

        for (Employee e : staff) {
            e.setId();
            System.out.println("name:" + e.getName() + 
            "salary:" + e.getSalary() + "id:" + e.getId());
        }
        int n = Employee.getNextId();
        System.out.println("next id is " + n);
    }
}

class Employee {
    //此处static的含义是:属于类但是不属于类对象的参数或函数
    //静态域 nextId 属于类 Employee,不属于任何独立的对象
    private static int nextId = 1;

    //实例域,每一个对象都有自己一份拷贝
    private String name;
    private double salary;
    private int id;

    //final 实例域:构建对象时必须初始化,并且不能够对其进行修改
    //常用于 基本类型域 和 不可变类(eg.String)的域
    //private final String name;

    //构造器快捷键 : alt + insert
    //构造器在 new 时被调用
    public Employee(String name, double salary) {
        //this代表隐式参数,即 new 的对象(也可以不写 this)
        this.name = name;
        this.salary = salary;
        this.id = 0;
    }

    public String getName() {
        return name;
    }

    public double getSalary() {
        return salary;
    }

    public int getId() {
        return id;
    }

    public void setId() {
        this.id = nextId;
        nextId++;
    }

    //静态方法,没有隐式参数(不能像对象施加操作)
    //可以通过类名调用静态方法(对象也可以但是不建议)
    public static int getNextId() {

        return nextId;
    //使用静态方法的两种情况:
    //    1.方法不需要访问对象状态。其所需参数都是通过显式参数提供的
    //    2.方法只需要访问类的静态域
    }

    //用于测试,永远不会被执行
    public static void main(String[] args) {
        Employee zqh = new Employee("薛之谦", 20000);
        System.out.println(zqh.getName() + " " + zqh.getSalary());
    }
}
这是一个打印日历的demo
public class DateTest {
    public static void main(String[] args) {
        //获取当前时间
        LocalDate date = LocalDate.now();
        //获取当前月份
        int month = date.getMonthValue();
        //获取当前日期
        int today = date.getDayOfMonth();
        //当前月份的第一天
        date = date.minusDays(today - 1);
        //当前月份的第一天是周几
        DayOfWeek weekday = date.getDayOfWeek();
        int value = weekday.getValue();
        //打印表头
        System.out.println(" Mon Tue Wed Thu Fri Sat Sun");
        //打印日历首行空格,对齐日期和周几
        for (int i = 1; i < value; i++) {
            System.out.print("    ");
        }
        //
        while (date.getMonthValue() == month) {
            //三位输出,不够三位右对齐
            System.out.printf("%3d", date.getDayOfMonth());
            //当天打印 * 号
            if (date.getDayOfMonth() == today)
                System.out.print("*");
            else
                //其余空格补位
                System.out.print(" ");
            //日期加 1
            date = date.plusDays(1);
            //如果下一天是周一,打印换行
            if (date.getDayOfWeek().getValue() == 1) System.out.println();
        }
        if (date.getDayOfWeek().getValue() != 1) System.out.println();
    }
}

Java学习—自定义类_第1张图片

来自Java核心技术卷一

你可能感兴趣的:(Java,java,学习)