一 类和对象
1.1成员变量与局部变量
作用域不同
局部变量的作用域仅限于定义它的方法
成员变量的作用域在整个类内部都是可见的
初始值不同
系统会给成员变量一个初始值
系统不会给局部变量赋予初始值
1.2 static
静态变量和实例变量两者的区别:
静态变量在内存中只有一个内存空间,在加载类的过程中完成静态变量的内存分配;每创建一个新的实例对象,就会为实例变量分配不同的内存。
静态变量可以直接通过类名来访问,实例变量需要通过各个对象访问。
静态方法和实例方法两者的区别:
- 静态方法只能访问静态变量;实例方法既可以访问实例变量,也可以访问静态变量
- 静态方法在Main方法中可以直接使用;实例方法在Main方法中必须通过对象调
1.3 this
this:指的是类的实例
this的用法:
1、当成员变量和局部变量同名时,如果想调用成员变量,用this
2、当构造方法互相调用时,用this
1.4 构造方法
定义:
方法名称和类名一致的方法,没有任何返回类型,并且也没有void。
特征:如果没用写构造方法 系统会默认提供一个无参的构造方法,方法里面是空的
如果写 会覆盖系统默认的
作用:初始化成员变量
1.5 方法重载
同一个类中的多个方法可以有相同的方法名称,但是有不同的参数列表,这就称为方法重载
方法的重载的规则:
- 方法名称必须相同。
- 参数列表必须不同。
- 方法的返回类型可以相同也可以不相同。
- 仅仅返回类型不同不足以称为方法的重载。
1.6 对象的引用
class Test14
{
int a = 1;
void Get()
{
Console.WriteLine(a);
}
void Get2(Test14 t)//第三种引用
{
t.a++;
}
Test14 Get3(Test14 t)//第四种引用
{
t.a++;
return t;
}
static void Main(string[] args)
{
Test14 t = new Test14();
t.a = 2;//第一种引用
Test14 t2 = t;//第二种引用
//Console.WriteLine(t.a+"\t"+t2.a);// 2 2
//t2.Get();
//t.Get2(t);
//Console.WriteLine(t.a + "\t" + t2.a);// 3 3
Test14 t3 = t.Get3(t);
t3.a++;
Console.WriteLine(t.a + "\t" + t3.a);// 4 4
}
}
二 数组
2.1 定义
3W:why what when
1H:how
Why:解决大批量数据计算问题
有10万个变量:其中3万个整数,4万个双精度,2万个字符串,1万个对象
整数数组:3万个整数
双精度数组:4万个双精度
字符串数组:2万个字符串
对象数组:1万个对象
What:定义
动态数组(显示数组):数据类型[] 变量名=new 数据类型[大小];
int[] a=new int[30000];
2.2 访问
数组的访问:a[i] i:下标(从0开始);
2.3 排序
void Get5()
{
//冒泡排序
int[] a = { 95, 74, 63, 87, 55 };
int t;
for (int i = 0; i < a.Length; i++)
{
for (int j = i; j < a.Length; j++)
{
if (a[i] > a[j])//由小到大
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
for (int i = 0; i < a.Length; i++)
{
Console.WriteLine(a[i]);
}
}
2.4 求最大值
void Get6()
{
//求最高分
int[] a = { 45, 74, 63, 87, 55 };
//1、假设数组中的一个数为最高分
int max = a[2];
//2、循环数组,找出比max还大的分,把这个分赋值给max
for (int i = 0; i < a.Length; i++)
{
if (a[i] > max)
{
max = a[i];
}
}
Console.WriteLine(max);
}