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)静态常量

 

posted @ 2018-12-06 14:47  rOtk1992  阅读(152)  评论(0)    收藏  举报