Java语法
一.类
1.对象与对象变量
Date date = new Date();
使用构造方法初始化对象,使用new加构造方法来初始化对象,new创建的对象放在堆中,new的返回值是一个引用;Date date是声明,date是一个对象变量,存在栈中,放着new放回的引用,Date声明指出对象变量date的引用所指向的对象的数据类型是Date型。

(1)new Date()来初始化;(2)引用已存在的对象,已经Date birthday = new Date(); Date deadline = birthday; 则两个对象变量引用同一个对象,用哪个引用都可以找到对象,谁都可以对它做修改;

(3)局部变量不会自动初始化为null!成员变量(实例域)会自动初始化为默认值!显示的Date date = null; 表示该引用暂时不指向任何对象,日后复制,保证暂时编译通过。
所以的java对象都存在堆中!构造起随着new操作符的执行而被调用。
2.自定义类
class Employee { private String name; private double salary; private LocalDate hireday; //构造 public Employee(String name, double salary, int year, int month, int y) { this.name = name; this.salary = salary; this.hireday = LocalDate.of(year, month, day); } //更改器访问器 ... //加薪方法 public void raiseSalary(double byPercent) { double raise = this.salary * byPercent / 100; this.salary+=raise; } }
若em001是一个Employee对象,调用加薪提升5%
em001.raiseSalary(5);
(1)隐式参数与显示参数
此时的raiseSalary方法有两个参数
<1>em001为隐式参数,在方法名前,对象变量,为方法的调用者;每一个方法中,this表示隐式参数(调用者,对象变量),将实例域与方法内的局部变量区分开!
<2>方法括号中的显示参数。
显示参数在方法明显声明,隐式参数没有声明。JAVA中所有方法必须在类内部定义!
(2)基于类的访问权限
Class Employee { private String name; //更改器访问器 ... public boolean equals(Employee other) { return this.name.equals(other.name); } }
若harry与boss都是Employee类的对象,则可以通过harry.equals(boss)来调用,看这两个对象的name是否相等。
注意⚠️:这里的harry的公有方法访问了boss的私有域name,因为boss是Employee类的对象,Employee类的方法可以访问Employee类的任何一个对象的私有域!
(3)final
构建对象时必须初始化final修饰的实例域,------->>确保每一个构造起执行后,这个值被设置,且之后不能对其进行修改---->>这个域没有set方法。
3.静态域静态方法static
(1)静态域
<1>static修饰实例域,每个类中只能有一个static域;
<2>类存在,这个域就存在,与是否有实例话为对象无关;static域属于类,不属于对象。
(2)静态常量

浙公网安备 33010602011771号