书籍:《Java核心技术卷I 基础知识》
内容:第四章4.3-4.5
主要内容:使用和自定义类,静态域与静态方法,方法参数
笔记:(连着昨天第四章4.1-4.2部分)
import java.io.*; // 使用Console类
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.nio.file.*; //使用Paths
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.util.*; // Scanner类
import static java.lang.Math.*;
public class C4 {
public static void main(String[] args) {
//Date类
new Date();//构造器名字与类名相同,在构造器前加new字符.初始化了一个新对象,此对象被胡世华为当前日期时间
System.out.println(new Date());//将此对象传递给一个方法
String s = new Date().toString();//toString 方法,返回字符串描述
Date birthday = new Date();//为了构造的对象能多次使用,存放在一个变量内
System.out.println(s);
/*
* 对象变量不是对象,也没有引用变量,不能将任何类的方法应用于其上
* 一定要认识到:一个对象变量并没有实际包含一个对象,而仅仅引用一个对象.
* */
//Eg .
Date deadline = new Date(); //表达式 new Date() 构造了一个Date类型的对象,并且它的值是对新创建对象的引用.这个引用存储在变量 deadline中。
//LocalDate类
LocalDate.now();//使用静态工厂方法代表调用构造器.
LocalDate newYearEve = LocalDate.of(1999, 12, 31);
int y = newYearEve.getYear();
int m = newYearEve.getMonthValue();
int d = newYearEve.getDayOfMonth();
System.out.println("NewYearEve:" + y + "." + m + "." + d);
LocalDate _1000D_later = newYearEve.plusDays(1000);
y = _1000D_later.getYear();
m = _1000D_later.getMonthValue();
d = _1000D_later.getDayOfMonth();
System.out.println("_1000D_later:" + y + "." + m + "." + d);
{//编写日历
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(" ");
date = date.plusDays(1);
if (date.getDayOfWeek().getValue() == 1)
System.out.println();
}
if (date.getDayOfWeek().getValue() != 1)
System.out.println();
}
//编写类 Employee
Employee[] staff = new Employee[3];
staff[0] = new Employee("42",743,2008,1,1);
staff[1] = new Employee("Mlynar",367*3,1998,4,15);
staff[2] = new Employee("Texas",670,2000,5,17); //总是使用new操作符调用
staff[0].raise_salary(330); //staff[0]为隐式参数,330为显式参数
staff[1].raise_salary(180);
staff[2].raise_salary(55*2);
for(Employee e:staff){
System.out.println("name = "+e.getName()+", salary = "+ e.getSalary()+", hireDay = "+ e.getHireDay());
}
}
}
//类:Employee
class Employee{
private final String name; //private确保只有只有Employee类自身的方法可以访问这些实例域
private double salary;
private final LocalDate hireDay; // 类中没有方法能更改此值,所以使用final
public Employee(String n,double s,int y,int m,int d){
name = n;
salary = s;
hireDay = LocalDate.of(y,m,d);
}// 构造器,与类同名
public String getName(){
return name;
}
public double getSalary(){
return salary;
}
public LocalDate getHireDay(){
return hireDay;
}
public void raise_salary (double per)
{
double raise = salary * per / 100;
salary += raise;
}
//静态域
/*
private static int nextId = 1;
public void setId(){
id = nextId;
}
*/
//静态常量,如Math类中的: public static final double PI = 3.14159265358979323846;
//静态方法,如Math中的pow(x,a)
//工厂方法
//main方法:可在类中单独添加main方法,然后使用java (类名)就可以单独执行此类中的main方法
/*方法参数
* 按值调用 & 按引用调用
* 一个方法无法修改一个基本数据类型的参数,可以改变一个对象参数的状态
* */
}
有错误还请dalao指正Orz