静态方法的使用
静态方法与静态变量一样,属于类本身,而不属于那个类的一个对象。调用一个被定义为static的方法,可以通过在它前面加上这个类的名称,也可以像调用非静态方法一样通过类对象调用。
实例方法必须通过类的实例来使用。实例方法可以使用类的非静态成员,也可以使用类的静态成员。
类的静态方法,静态变量是在类装载的时候装载的。但是要特别注意,类的静态变量是该类的对象所共有的,即是所有对象共享变量。所以建议尽量少用静态变量。尽量在静态方法中使用内部变量
方法调用
静态方法与实例方法唯一不同的,就是静态方法在返回类型前加static关键字。静态方法的调用有两种途径:
(1)通过类的实例对象去调用
调用格式为: 对象名.方法名
(2) 通过类名直接调用
调用格式为: 类名::方法名
静态方法和非静态方法的区别总结如下:
1、静态方法属于类所有,类实例化前即可使用;
2、非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员;
3、因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存;
4、static内部只能出现static变量和其他static方法!而且static方法中还不能使用this等关键字,因为它是属于整个类;
5、静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁;
6、静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存。
主要区别:静态方法在创建对象前就可以使用了,非静态方法必须通过new出来的对象调用。
静态方法与实例方法在性能和占用内存上没有明显的区别,是否声明为静态方法需要从类型的非静态字段、事件、面向对象扩展和多态这三方面来考虑。
构造器:
定义:
一种只用来初始化对象信息的特殊方法,
作用:
初始化对象信息( 不是用来创建对象 )
格式:
修饰符 类名([参数列表]){
…
}
只能跟随new一起使用,没有办法调用
构造器不能和static(因为static跟随类), fianl ,abstract 一起使用
如果没有自定义构造器,编译器会自动为你添加一个空构造(默认)
如果存在自定义构造器,编译器都不会再为你提供任何构造器
构造器也是方法。
构造器没有返回值
构造器与类统名
每个类可以有一个以上的构造器
构造器可以有0个、1个或多个参数
构造方法是一种特殊的成员方法,它的定义方式与普通方法类似,其语法如下所示:
class 类名称 {
访问权限 类名称(类型1 参数1,类型2 参数2,…) { // 构造方法没有返回值
程序语句 ;
}
}
在使用构造方法的时候请注意以下几点:
1它具有与类名相同的名称 。
2它没有返回值,也没有返回类型。
3每一个类可以有多个构造方法。
4构造方法在创建对象时自动执行,一般不能显式地直接调用。
构造函数,
是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。
特点:
百度百科
浅拷贝:原始类型为值传递,对象类型仍为引用传递。
深拷贝(对象/数组):所有元素或属性均完全复制,与原对象完全脱离,也就是说所有对于新对象的修改都不会反映到原对象中。 显然,浅拷贝会带来一个很大的问题。就是,如果我复制的值是一个引用地址,那么我通过一个变量去修改这个对象,会导致所有该对象的引用都发生变化。