JavaBean的特点:
? private 成员属性 
? public成员方法
? 有get/set方法对成员变量进行赋值/取值
? 有空构造方法
符合这些条件的称为标准的JavaBean。构造方法
[修饰符] 构造方法名(形参列表){
 //零到多条可执行语句组成构造方法的执行体
} 
class Student{
 public Student(){
 System.out.println("这是学生类的空参构造方法");
 }
}
class Person{
 private int id;
 public Person(){} //空参构造方法
 public Person(int a ){ //重载构造方法,有一个int型的参数
 id = a ; //在构造方法中对实例变量赋值
 System.out.println("这是一个带参的构造方法");
 }
 public Person(int a ,int b){
 System.out.println("这是一个带两个参数的构造方法");
 }
}
构造方法定义时注意事项:
1.构造方法必须和类同名
2.构造方法没有返回值,也不能使用void,一旦加了返回值或者void,那么这个方法就是一个成员方法,而不是构造方法了
class Demo{
//public Demo(){} 如果没有定义任何构造方法的时候,系统自动加上一个无参构造方法 
public void show(){
 System.out.println("Hello world");
}
}
class Demo{
 public Demo(int id){
 System.out.println("这是一个带参的构造方法");
 }
}
//定义一个员工类,自己分析出几个成员,然后给出成员变量,构造方法,getXxx()/setXxx()方法,
//以及一个显示所有成员信息的方法。并测试。
class Employee{
 private String name;
 private String employeeId;
 private int age;
 //构造方法
 public Employee(){}
 //getXxx()/setXxx()方法
 public String getEmployeeId(){
 return empoloyeeId;
 }
 public void setEmployeeId(String employeeId){
 this.employeeId=empoloyeeId;
 }
 public String getName(){
 return getName;
 }
 public void setName(String name){
 this.setName= name;
 }
 public int getAge(){
 return age;
 }
 public void setAge(int age){
 this.age = age;
 }
 public void show(){
 System.out.println("员工编码是:"+getEmployeeId +"姓名是:" +getName+"年龄是:"+getAge);
 }
}
class EmployeeTest{
 public static void main(String[] args){
 //创建对象
 Employee e = new Employee();
 //给成员变量赋值
 e.steEmployeeId("1234");
 e.steName("李四");
 e.setAge(19);
 e.show();
 }
}
//定义一个算数类MyMath,提供基本的加减乘除功能,然后进行测试。
import java.util.Scanner{
 class MyMath{
 public int add(int a ,int b){
 return a+b;
 }
 public int sub(int a ,int b){
 return a-b;
 }
 public int num(int a ,int b){
 return a*b;
 }
 public int div(int a ,int b){
 return a/b;
 }
 }
 //测试类
 class MyMathTest{
 Scanner s = new Scanner(System.in);
 System.out.println("输入第一个数");
 int a = s.nestInt();
 System.out.println("输入第二个数");
 int b = s.testInt();
 MyMath mm = new MyMath();
 System.out.println(mm.add(a,b));
 System.out.println(mm.sub(a,b));
 System.out.println(mm.mul(a,b));
 System.out.println(mm.div(a,b));
 }
} // this 关键字》》》》》》》》》》》》》》》》》》》》》》》》》》》

 class Person{
 public Person(){}
 public void sayHai(){
 System.out.println("Hello");
 }
 public void speak(String content){
 // Person p = new Person();
 // p.sayHi();
 this.syaHi();//sayHi();//调用本对象的另一个方法,可以省略this关键字
 System.out.println("我想说的是:" +content);
 }
 }class PersonText{
 public static void main(String[] args){
 Person pp = new Person();
 pp.speak();
 }
}//this关键字在构造方法中,对成员变量进行初始化
class Person{
 private String name;
 private int id;
 private String gender;
 public Person(){}//空参构造方法
 //带有三个参数的构造方法,由于形参和成员变量同名,用this关键字区分
 public Person(String name, int id,String gender){
 this.name=name;
 this.id = id;
 this.gender = gander;
 }
 public Person(String name,int id){
 this.name = name;
 this.id = id;
 }
}
//this关键字是用来指代当前对象的,在构造方法中可以使用this关键字
//*********************************************
有static修饰的成员变量/成员方法,称为类变量/类方法,
没有static修饰的成员变量/成员方法称为实例变量/实例方法>>>>>>>>>>>静态只能访问静态
class Teacher{
 public int num=10;
 public static int num2 = 20;
 public void show(){
 System.out.println(num);//隐含的告诉你访问的是成员变量
 System.out.println(this.num)//明确告诉你访问的是成员变量
 }
}



静态方法可以访问的是:
1.静态成员变量
2.静态成员方法
非静态方法可以访问的是:
1.静态/非静态成员变量
2.静态/非静态成员方法
总结,简单记:
静态只能访问静态,非静态两种都能访问

对象初始化过程包含两个方面:
构造代码块的执行 + 构造方法的执行

构造代码块:抽取构造方法中共同的语句,在构造方法执行前执行
静态代码块:在类加载时执行一次,用于对类(成员变量)进行初始化