基础加强
学习了这门语言这么一段时间了,距离接触核心的知识还比较遥远;无论怎样都需要把基础打好,这样的话,以后才会学以致用或者理解他人写的优秀代码;
-----------------------------------------------------------------------------------------
要点一、
(1)之前在咱们的学习过程中是不是经常定义变量,在整个程序运行的过程中都可以无限次赋值,除此外还可以定义常量,一尘不变的量;
(2)除此外还有枚举和结构的声明(采用pascal命名规范):枚举限定了变量的取值范围,程序处理起来更为方便,关键字(enum);至于结构(struct)呢:为了一次声明多个不同类型的变量;
(3)当然还有数组,为的是连续保存多个数值:四种声明方式
(1)int[] nums=new int[1]{1,2}; (2)int[] nums=new int[]{1,2};
(3)int[] nums={1,2}; (4)int[] nums=new int[1]};
有些时候通过数组存放变量会变得不灵活,不确定存放长度;这个时候Params派上用场了,通过在方法中参数前面添加Params关键字,即可实现多类型的定义数组--Params object[] 变量英文名。
test2("zzhasan",1,2,3); // 可以把函数外的多个数当做数组来用
static void test2(string name, params int[] score){};
要点二、
(1)try-catch的目的:解决一些可能会发生异常的程序,用于一些提示信息等等;
(2)方法(函数)(Pascal命名规则):方便代码重用;包括传参数和返回值两个部分。
注意:两种方法中的变量不可以混合使用(指从A中未经定义直接使用B中变量)
1、ref参数
//ref参数侧重于将一个值带到函数中进行改变,再讲改变后的值返回。
//ref参数在函数内不用赋值;函数外必须为ref参数赋值。
//常用于将值类型转变为引用类型后进行赋值运算
2、out参数
//侧重于在函数中返回多个类型的值。
//必须在形参括号中进行声明与定义;并且在函数中进行赋值。
//主函数中不用赋值。
要点三、
了解以上知识便开始接触面向对象的知识了,这也是目前采用的灵活的编程方法。
(1)对象是一个可以看得到、摸得着的具体实体,而非统称;统称一般称作类;
区别:对象称作类的示例(instance);类不占用内存,对象反之。
(2)类的实例化:类 实例名=new 类()
----->类的成员(字段(private最好)、属性、方法);
------>定义访问级别:public、private(internal、protected)默认不定义的成员当做private私有访问级别。
(3)属性:
定义:get(读)和set(写),延伸-读写、只读、只写;
目的:保护与之对应的字段;
(4)构造函数:
目的:解决多类重复赋值、剔除写操作,防止不安全;
特点:无返回值,非静态,但是有参数(默认状态下参数)
扩展:构造函数可以重载,使之构成不同的构造函数。
补充:实例化静态类的时候,默认调用的类的构造函数
----------------------------------------------------------------------------------------------->
要点四(字符串的重要特性)、
String类:
- 不可变性,我们不管对字符串做什么操作,都会在内存中产生一块新的实例。
- 驻留池:字符串为引用类型,在堆里面开辟空间的时候,先检查是否存在一个赋值的字符串。
- GC(Garbage Collection)垃圾回收池:每隔一段时间,会扫描整个内存,如果有的空间没有被指向。则立即把它销毁。
- 我们可以将一个字符串看作是char类型的只读数组。若想改变字符串,先转变为数组,然后变为字符串。
出现缘由:因为多次使用字符串后,会在内存中产生大量的垃圾,因此stringBuilder产生;
它就是拼接字符串的一个工具,拼成完成后,还是需要将它转回字符串。
stringBulider sb=new stringbuilder();
sb.append(); //追加字符串
sb.tostring(); //此时转换为将stringbuilder中的值转换为字符串,重写了其中的tostring的方法;之前tostring会输出变量的命名空间
sb.insert(); //按照字符的个数来添加
sb.replace();