构造方法:
是一个特殊的方法。
普通方法格式:
修饰符 返回值类型 方法名(参数列表){
执行语句;
return 返回值;
}
构造方法格式:
修饰符 类名(参数列表){
执行语句;
}
构造方法支持方法重载
普通方法需要调用,才会执行
构造方法创建对象时自动调用,且仅调用一次
如果类中没有定义构造器,那么系统会提供一个构造器
public 类名(){},以便能成功建立对象。
如果类中提供了构造器,那么系统不再提供。
特别注意,假如类中一旦提供了无论什么参数类型的构造器,系统都不会提供
class Person{
private String name;
private int age;
public Person(){
// this("aa",19);
}
public Person(int a){
this();
age = a;
}
public Person(String n,int a){
this(a); //调用构造器
name = n;
// age = 20;
}
//set/get方法
public void show(){
System.out.println(name+"...."+age);
}
构造方法的主要作用是用于给对象的属性进行初始化。
Person p = new Person(“张三”,20);实例化过程:
- 在堆中开辟空间,并分配内存地址值
- 将对象的属性存储到该空间,并赋予默认值
- 找到对应的构造方法,并进栈执行
- 将“张三”,20两个数据值存储到堆中的那个空间里,构造方法执行完毕,出栈;
对象建立完毕。
5.将堆中空间引用地址值赋值给p引用。
注意:
- 如果构造方法用private修饰,那么只能在本类中创建对象,外部其他不可以创建
- 构造方法可以调用其他普通方法
- 普通方法不能调用构造方法
构造方法间的调用:
this关键字用法:
- 可以调用重载构造器
this(参数列表),必须放在构造器的第一行。
但是不能交叉使用,就是不能循环使用,向下面这样。
class Person{
private String name;
private int age;
public Person(){
this("aa",19);
}
public Person(int a){
this();
age = a;
}
public Person(String n,int a){
this(a); //调用构造器
name = n;
// age = 20;
}
2.解决局部位置和成员位置变量名重名问题
谁调用this所在的方法,那么该this就代表谁
static关键字
静态的意思,成员修饰符,用于类中的成员。
一。静态方法(类方法):
所以,如果不用创建对象,就能直接调用方法,这样就不会出现空间浪费了。
当加载一个class文件到内存时,首先会在内存中查找是否有该文件,如果有直接用;如没有到硬盘中找该文件,再加载。将静态成员存放到方法区的静态区域,将非静态成员存放到非静态区域。 比如:构造方法就存放到非静态区域。
注意:
- 静态方法不能访问非静态成员(方法或者是变量)。
- 非静态方法可以访问静态方法(静态成员)也可以访问非静态方法。
- 静态方法中不能出现this或者super关键字
静态成员变量(类变量):
是被所有对象所共享,一旦被修改,对其他对象都有影响。
有两种访问方式:类名.静态变量名(推荐); 对象名.静态变量名;
静态成员是随着类的加载而加载,随着类的消失而消失----声明周期长。
如果变量存的值是共享数据建议用static修饰;
如果是工具类,建议类中的方法用static修饰,例如Arrays,Collections,Matchs(一般喜欢结尾加个s)…
设计模式:
对通用问题的解决方案。一共有23种。
单例设计模式:
目的:保证对象在内存中的唯一性。
步骤:
- 私有化构造器
- 创建本类实例对象
- 提供公共访问,用于返回本类实例对象
class Single{ //饿汉式单例设计模式 /*int sum; private static Single s = new Single(); private Single(){ } public static Single getInstance(){ return s ; }*/ //懒汉式单例设计模式 int sum ; private static Single s = null; private Single(){ } public static Single getInstance() { if(s== null) s = new Single(); return s ; } }
单例设计模式分为:饿汉式 和 懒汉式
饿汉式:
弊端:类加载时在堆中开辟了空间,该类如果不需要使用对象,就会造成浪费。
懒汉式(对象延时加载):什么时候用对象,什么时候才在堆中开辟空间。
弊端:多线程访问时,存在安全问题。