


私有构造函数
特点:不能在外面直接实例化
作用:可以限制创建的对象,因为外面无法创建对象,创建对象是通过静态方法来的,我们可以在方法里边进行一些限制,比如只允许同时存在一个对象。比如单例模式需要这样设计。
值类型与引用类型
值类型与引用类型的区别?
对象是属于值类型还是引用类型?,对象是引用类型
int是属于值类型还是引用类型?,int是值类型
字符串是属于值类型还是引用类型?
字符串是引用类型,但是是一个特殊的引用类型
特殊在哪里?
字符串内容是不可变的,如果你把内容改变了,根本就不是同一个字符串了,而是重新创建的一个。
字符串的错误用法
字符串的拼接效率问题:
如果在大量拼接字符串的时候会不会有效率问题?会存在效率问题
怎么解决?
使用操作字符串的对象StringBuilder。这个对象用于使用字符串拼接的,使用这个对像的append方法可以做字符串拼接但是不会重新去创建对象。
静态
加上static关键字就是静态的
静态类:
静态方法: 主函数是一个静态函数
静态字段:
静态属性:
静态方法和实例方法:
静态方法可以直接调用普通方法嘛?静态方法不能直接调用普通方法
普通方法可以直接访问静态方法嘛?普通方法可以直接访问静态方法
静态方法可以直接调用静态方法嘛?可以
静态成员特点:
1:静态成员先于非静态创建
2:静态成员只有一份
静态成员的访问方式:
非静态成员:使用对象.非静态成员
静态成员 : 类名.方法名
为什么静态方法不能直接访问普通方法:
创建顺序的问题:静态方法创建的时候,非静态方法还没有出生,还不存在,所以无法直接访问
为什么普通方法可以直接访问静态方法:
因为静态方法先创建,且只创建一份,当普通方法存在的时候静态方法一定是存在的,所以可以直接调用。
静态类特点:
静态类能不能被实例化?不能
静态类能不能包含普通方法或者普通的属性、字段?不能
静态成员的执行顺序:
静态字段—>静态构造函数—>主函数(主函数也是静态的)
如下面一个经典的例子:
class A
{
public static int X;
static A()
{
X = B.Y + 1;
}
}
class B
{
public static int Y = A.X + 1;
static B()
{
}
static void Main()
{
Console.WriteLine("X={0},Y={1}", A.X, B.Y);
}
}
很多人都以为先执行的是主函数,其实不是的,应该是最先执行主函数所在类的静态字段也就是的这句:public static int Y = A.X + 1;
然后执行主函数所在类的静态构造函数:
static B()
{
}
最后才是执行的主函数
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)