1.构造函数
构造函数:也是一个函数,目的是为了帮助我们简化的完成初始化对象的操作,省去那一坨的this.
特点:构造函数,是一个特殊的函数。
特殊一:构造函数的名字,跟类名必须一致。
特殊二:构造函数,不允许有返回值。
特殊三:构造函数的访问修饰符,也必须写成Public,因为经常在其他项目里访问。
特殊四:如果我们在类中,不写构造函数,会默认加入一个无参的构造函数如果写了一个新的,默认的无参数的就被干掉了。
构造函数的重载:
重载:方法的名字相同,参数不同,个数不同,类型不同。
构造参数重载执行:先执行this后面调用的构造函数,执行完成后,在执行自己【显示】调用的构造函数。
new的作用:
1.在内存中开辟空间
2.在开辟的空间里创建对象
3.调用对象的构造函数,初始化对象。
初始化对象的方式:
1.给每一个属性,依次的赋值
2.通过构造函数,给属性赋值
3.对象初始化器。
2.自动属性
自动帮助我们生成私有的字段和属性;
好处:不需要写字段了
坏处:不能对字段进行精确的限制
使用方法如下图所示,构成了自动属性:
3.静态和非静态(实例)
类中的成员可以分成两类,静态成员和非静态成员。
1.静态成员,需要被static标记。
2.实例成员,不允许被static标记
3.静态成员,需要被类名,静态成员的方式进行调用。
4.实例成员,调用的时候,需要对象名,实例成员的方式调用。
5.静态成员,属于类,实例成员属于对象。
6.非静态类中,可以包含实例成员和静态成员。
7.静态类中,只允许包含静态成员,静态类中不允许包含实例成员。
8.实例方法中,可以访问静态成员/静态方法中,不可以访问实例成员。
实例成员:创建对象,实例成员是属于对象的。
静态成员:程序一加载的时候,就在内存中开辟空间存储了。
静态成员是先一步实例成员进内存的。
有静态成员的时候,不一定有实例成员。
但是,有实例成员的时候,一定有静态成员了。
静态和非静态的使用场景:
静态特点:
1.先于实例成员加载进内存。
2.在整个程序运行过程中,除了关闭程序,否则静态成员不会被资源释放
3.实例成员,不用的时候,就被GC垃圾回收,自动销毁了。
4.-1静态成员,多用于【全局共享】的数据使用。
4-2作为【工具类】使用Console使用频率非常高、使用人数非常多static用来保存。
4-3静态类,不允许被创建对象
不用每次都得NEW
4.跨项目的使用类
1.添加引用
在解决资源管理器中找到添加引用这个功能。
找到需要的项目,添加到当前项目中来。
2.使用using关键字,导入命名空间
在上面用using关键字来导入需要的项目,导入命名空间。
3.将被访问的访问修饰符必须改成public
在public之后就可以调用跨项目的类了。
5.值传递与引用传递
类是引用类型传递:类传递的是地址:下图是类的传递原理图。如下所示:
6.字符串(特殊的引用类型)
1.字符串可以看作是char类型的只读数组。ToCharArray()
2.字符串的不可变性。堆里面的值是不可变的,每次给字符串重新赋值,都会在内存里开辟新的空间。
3.字符串拘留池。
4.字符串拼接会导致内存发生变化,但StringBulider拼接字符串,不会重新在内存开辟空间。
字符串判等三种方式:
1.“==”。 2.“s1.equals(s2)” 3."object.ReferenceEquals(s1,s2)"
toStirng()方法转换成字符串类型。