当前位置:首页 > Windows程序 > 正文

17.2015.08.04第十八节课 C#2 (数值类型及调用、引用类型及调用、装拆箱、常量、

2021-03-27 Windows程序

一.数值类型及其调用原理

名称

 

说明

 

所占字节

 

范围

 

byte

 

字节型

 

1

 

-27~27-1

 

short

 

短整型

 

2

 

-215~215-1

 

int

 

整型

 

4

 

-231~231-1

 

long

 

长整型

 

8

 

-263~263-1

 

char

 

字符型

 

1

 

0~65535

 

float

 

单精度型

 

4

 

±1.5*10-45~±3.4*1038

 

double

 

双精度型

 

8

 

±5.0*10-324~±1.7*10308

 

bool

 

布尔型

 

1

 

只有true和false两个值

 

static void Main(string[] args)

{

int i = 10;

int j = i;//把i的值赋值给j

i = 20;

Console.WriteLine(j);

}

 

以上代码及图的说明

/*   数值类型赋值就是值的拷贝//// 

i的值存储在栈;

int j=I(意思是将i的值拷贝一份给J,同样也是存储在栈);

上面代码输出结果10        */

二.引用类型(数组、对象、string、object)

引用类型的变量又称对象,C#有两个内置的引用类型:object类型和string类型

object是所有类型的父类,可以将任何类型的赋值赋给object类型的变量。

string是字符串类型,字符串对象一旦创建,内容就不可以更改,它是不可变的。

/*以上代码的几点说明

string s1 = "a";

string s2 = s1;

s1 = "b";

Console.WriteLine(s2);

S2引用类型的值类型赋值如上图所示,输出结果是a           */

*/以上图示的几点说明:

1. 定义一个静态变量public static int i = 10;

2.定义一个静态无返回值的方法      

public static void Cry() {

Console.WriteLine("我爱哭");

}

3.以上静态变量和静态方法,不用实例化对象同样可以调用,

例如静态变量i的调用:Person.i

静态变量Cry方法的调用: Person.Cry;   

常用和公共的变量或方法一般都设置为静态.

4.存储在堆的非静态变量和方法区的调用,必须要通过实例化对象来调用,否则强制调用会产生错误.

例如

实例化一个对象:Person p=new Person,

Person的变量name的调用: p.name 

Person的方法Sayhi的调用: p.Sayhi()

5.如果已经完成实例化P的基础上,再实例化一个P1,那它的值在堆会整体打包复制一份.

三.装箱、拆箱

装箱:把值类型装换成引用类型

实例:

Int i=10;

String s=i.ToString();

Console.WriteLine(s);

拆箱:把引用类型转换成值类型

实例:

String s=”10”;

Int i=Convert.ToInt32(s);

Console.ReadKey();

注:装箱和拆箱都会耗用系统资源,如处理大量数据的时候会造成系统缓慢.在开发中尽量避免装箱和拆箱.   避免的处理办法可以使用泛型方法.

四、常量和变量

常量的定义方法,例如const double pi=3.14

成员变量也叫全局变量,写在类的里面(class program),方法的外面(staic void Main(string[]) args)的变量称为全局变量,在本类中任何地方都可调用.

局部变量,写在方法的里面的变量称为局部变量.只能在该方法里面调用.

五、数据类型转换

隐式转换:低精度转为高精度,直接转。

int i=123;

Double b=i;

显式转换:高精度转为低精度,必须指明要转换的目标类型,由于数据的差异,有可能丢失部分数据。

Class Program

{

static void Main()

{

double x=1223.4;

int a;

a=(int)x;

System.Console.WriteLine(a);

}

}
注:高精度类型向低精度类型转型,数值会发生改变.例如1223.4变成1223

六、C#中的运算符使用

14.1算术运算符

+(加)、-(减)、*(乘)、/(除)和%(取余数)五个二元运算符和++(自增)、- -(自减)两个一元运算符

Eg:class Program

{

static void Main(string[] args)

{

int a = 12345;

int b = 234567;

int c, d;

long e, f;

c = a * b / b;

d = a / b * b;

e = (long)a * b / b;

f = (long)a / b * b;

Console.WriteLine(c);

Console.WriteLine(d);

Console.WriteLine(e);

Console.WriteLine(f);

}

}

结果:

-5965

0

12345

0

++(自增)、- -(自减)的用法

14.2赋值运算符

操作符

 

运算规则

 

意义

 

=

 

a=b

 

将b赋值给a

 

+=

 

a+=b

 

a=a+b

 

-=

 

a-=b

 

a=a-b

 

/=

 

a/=b

 

a=a/b

 

*=

 

a*=b

 

a=a*b

 

%=

 

a%=b

 

a=a%b

 

??

 

a=b??c

 

B为null吗,为null则a=c不为null则a=b

 

*赋值运算必须是类型兼容的,即左边的变量必须能够接受右边的表达式的值,否则会产生编译错误。

如果是对象赋值,则称为引用赋值。将右边对象的引用值(地址)赋给左边的变量,这样,两个变量地址相同,即指向同一对象。

问号的两个实例

//int i = 3 > 2 ? 10 : 20;

//Console.WriteLine(i);

以上代码单问号是三目运算,意思是I =3是否大于2,如果成立返回10,反则返回20.

//string s1 = null;

//string s2 = s1 ?? "aa";

//Console.WriteLine(s2);

以上代码双问号是变量为空的判断,S2的返回值,如果S1为空返回aa,反则返回S1的值.

14.3关系运算符

==,!=,<,>,<=,>=

14.4逻辑运算符

A

 

B

 

!A

 

A&B

 

A|B

 

A^B

 

A&&B

 

A||B

 

False

 

false

 

true

 

false

 

false

 

false

 

false

 

false

 

False

 

true

 

true

 

false

 

true

 

true

 

false

 

true

 

True

 

false

 

false

 

false

 

true

 

true

 

false

 

true

 

True

 

true

 

false

 

true

 

true

 

false

 

true

 

true

 
               

Eg:

class Program

{

public static void Main()

{

int x = 1;

int y = 2;

int z = 3;

bool u = false;

u = !((x >= --y || y++ < z--) && y == z);

Console.WriteLine(u);

以上代码说明:

将以上代码分解

  a=x>==y 即1>=1 返回true;       b=y++<z--  即3<2  返回false;

A1=    a || b 即 true || false返回 true ;

2.    B1=    y==zz 即2=3 返回 false;

3.    !(A1 && B1)  即true && false  返回 false    !(false)=true 非假=真

14.5优先级

从高到低:一元运算符----二元运算符---关系运算符----逻辑运算符-----赋值运算符

七、String

1、字符串恒定性

1) 字符串我们可以看成是一个字符数组。

2) str.Length表示字符串里面字符的个数。

3) 字符串对象一旦被创建,这个对象就不能被修改。

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/68675.html