由于数值类型都是结构类型,可用new语句调用其构造函数初始化数值类型变量,
例如:int j=new int()。
请注意,用new语句并不是把int变量变为引用变量,j仍是值类型变量,
这里new仅仅是调用其构造函数。所有的数值类型都有默认的无参数的构造函数,其功能就是为该数值类型赋初值为默认值。
对于自定义结构类型,由于已有默认的无参数的构造函数,不能再定义无参数的构造函数,但可以定义有参数的构造函
***引用类型分类
--类:C#语言中预定义了一些类:对象类(object类)、数组类、字符串类、自定义类等
--接口
C#语言引用类型变量无论如何定义,总是引用类型变量,不会变为值类型变量。
C#语言引用类型对象一般用运算符new建立,用引用类型变量引用该对象。
(1)对象类(object类)
C#中的所有类型(包括数值类型)都直接或间接地以object类为基类。
对象类(object类)是所有其它类的基类。任何一个类定义,如果不指定基类,默认object为基类。
C#语言规定,基类的引用变量可以引用派生类的对象(注意,派生类的引用变量不可以引用基类的对象),
因此,对一个object的变量可以赋予任何类型的值
object关键字是在命名空间System中定义的,是类System.Object的别名
(2)数组
C#语言中数组是类System.Array类对象,和java中的数组用法基本一致,不说了。
(3)string:和java的api中的功能类似,可以对比学习,现在先大致了解即可,用到时再查
C#还定义了一个基本的类string,专门用于对字符串的操作。
这个类也是在名字空间System中定义的,是类System.String的别名
注意,两个字符串的比较比较的是值:string a,b; a==b,而java中时比的是hashcode
3.加框(boxing)和消框(unboxing)
加框(boxing)和消框(unboxing)是C#语言类型系统提出的核心概念,加框是值类型转换为object(对象)类型,
消框是object(对象)类型转换为值类型。有了加框和消框的概念,对任何类型的变量来说最终我们都可以看作是object类型
可以理解成java中的拆箱与装箱操作,java中时自动拆装箱,这个需要手动操作
c#中的更加宽泛,需要自己在使用中慢慢理解。
4.关于运算符:和java中的几乎一致,如有遇到不一致的,就直接去查。
(1)typeof运算符:操作符用于获得指定类型在system名字空间中定义的类型名字
例如:
Console.WriteLine(typeof(System.Int32));
输出如下:
System.Int32
(2)溢出检查操作符checked和unchecked
在进行整型算术运算(如+、-、*、/等)或从一种整型显式转换到另一种整型时,有可能出现运算结果超出这个结果所属类型值域的情况,
这种情况称之为溢出。整型算术运算表达式可以用checked或unchecked溢出检查操作符,决定在编译和运行时是否对表达式溢出进行检查。
如果表达式不使用溢出检查操作符或使用了checked操作符,常量表达式溢出,在编译时将产生错误,表达式中包含变量
,程序运行时执行该表达式产生溢出,将产生异常提示信息。而使用了unchecked操作符的表达式语句,即使表达式产生溢出,
编译和运行时都不会产生错误提示。但这往往会出现一些不可预期的结果,所以使用unchecked操作符要小心。
下面的例子说明了checked和unchecked操作符的用法:
using System;
static void Main(string[] args){
const int x=int.MaxValue;
unchecked//不检查溢出
{
int z=x*2;//编译时不产生编译错误,z=-2
Console.WriteLine("z={0}",z);//显示-2
}
checked//检查溢出
{
int z1=(x*2);//编译时会产生编译错误
Console.WriteLine("z={0}",z1);
}
}
(3)new运算符
和java不同之处是可以创建值类型的变量(基本数据类型),java中只能创建对象。
new操作符可以创建值类型变量、引用类型对象,同时自动调用构造函数。
例如:
int x=new int();//用new创建整型变量x,调用默认构造函数
Person C1=new Person ();//用new建立的Person类对象。Person 变量C1对象的引用
int[] arr=new int[2];//数组也是类,创建数组类对象,arr是数组对象的引用需注意的是,
int x=new int()语句将自动调用int结构不带参数的构造函数,给x赋初值0,x仍是值类型变量,
不会变为引用类型变量
4.控制语句
控制语句几乎和java相同,这里只之处不同之处,可以会有遗漏的地方,请指正,需要在使用中体会,
这里只是快速的从java到c#的学习过程。
(1)foreach(类型 变量名 in 表达式) 循环语句
其中表达式必须是一个数组或其它集合类型,每一次循环从数组或其它集合中逐一取出数据,
赋值给指定类型的变量,该变量可以在循环语句中使用、处理,但不允许修改变量,
该变量的指定类型必须和表达式所代表的数组或其它集合中的数据类型一致。
例子:
using System;class Test()
{
public static void Main(){
int[] list={10,20,30,40};//数组
foreach(int m in list)
Console.WriteLine("{0}",m);
}
}
对于一维数组,foreach语句循环顺序是从下标为0的元素开始一直到数组的最后一个元素。
对于多维数组,元素下标的递增是从最右边那一维开始的。同样break和continue可以出现在foreach语句中,功能不变
(2)异常处理语句和java相同,try,catch,finally
5.类的继承
(1)和java中的类的继承几乎一样,都是单继承,构造函数不能继承
语法格式有区别:
父类:Person