这是一个自定义类
/**
* @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核心技术卷一
文章展示了两个Java代码示例,一个是自定义Employee类,用以演示静态方法和静态域的使用,包括生成员工ID;另一个是DateTest类,用于打印日历,利用LocalDate和DayOfWeek类处理日期和星期。这两个例子涵盖了类的静态成员和日期处理的基本概念。
681

被折叠的 条评论
为什么被折叠?



