码迷,mamicode.com
首页 > 其他好文 > 详细

值类型与引用类型 运算符与case语句和跳转语句

时间:2015-09-23 19:28:49      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:

首先总结一下值类型与引用类型

老师最经典的一句话:值类型的变量和值是一体的  引用类型的变量和值是分开的。

值类型的变量和值都是在线程堆栈中产生    引用类型中的变量是在线程堆栈中,值是在托管堆中   变量与值是一种引用关系!!!!!!1

看下下面的代码

 static void Main(string[] args)
        {
            //值类型  变量和值是一体的
            int i = 0;
            double x = 1.23;

            //引用类型 变量和值是分开的
            Student student1 = new Student();
            student1.Name = "小明";
            Student student2 = student1;
            Console.WriteLine("{0}\t{1}", student1.Name, student2.Name);
            //有点点C语言指针的意味
            student2.Name = "小王";
            Console.WriteLine("{0}\t{1}", student1.Name, student2.Name);
            Console.ReadKey();
        }

运行结果:

技术分享

归纳一下:

值类型:整型 浮点型 布尔型 字符型

引用类型:所有的类,接口和委托 字符串(比较特殊) 数组 集合 哈希表......

 

接着简单总结一下一元运算符。

一元运算符主要就是++,--。

不过要区别运算符放在变量位置的前后顺序

i++ 是先对i进行取值 i再进行+1;

++i 是i先进行+1 再对i进行取值;

代码如下:

 int i = 0;
            Console.WriteLine(i++);//输出结果是0
            Console.WriteLine(++i);//输出结果是2

二元运算符:+ - * / %

这儿只需要注意/: /法运算的结果 与最高位的精度(类型)相同!!!!

三元运算符:?:

这个主要用于进行判断然后赋值 类似于if else的作用  不过相当简便

代码如下:

 //求两个数最大值
            int x = 12;
            int y = 1;
            int Result=x>y?x:y;//满足条件 则取第一个值 不满足条件取第二个值
            Console.WriteLine(Result);//输出结果=12
            Console.ReadKey();

赋值运算符:+=   -=   ...........

关系运算符:> < ==  >= <= != 

逻辑运算符:

!  非运算

&或者&& 与运算

| 或者||  或运算

这儿讲解一下 &与&& |与||的区别:

A&B A和B都要进行计算   A&&B A计算结果为false 则不计算B。

A|B A和B都要计算         A||B A计算为true 则不计算B

由此可见  &&与||更为高效 合理。

 

位运算符:

>> 右移

<< 左移

& 与

| 或

~ 异

^ 异或

所有的位运算 都是将数值转换为二进制进行运算。

代码和详细情况如下:

int a = 12; //二进制码:1100
            int b = 5 ; //二进制码:0101
            //与运算 相同位数都为1 则为1 其余均为0
            //结果:0100 十位数=4
            int c = a & b; //结果为4

            //或运算 相同位数只要一个或两个为1 则为1 其余均为0
            //结果:1101
            int d = a | b;//结果为13

            //非运算 0取1 1取0 只针对一个数
            //结果:0011
            int e = ~a;//结果为3

            //异或运算 相同位数相同则为1 不同则为0
            //结果为0110
            int f=a^b;//结果为5

            //左移运算 在这儿把a移两位
            //结果: 110000
            int g=a<<2; //结果为48  实际上是把a乘2的移动次数的次方
            
            //右移运算 在这儿把a移两位
            //结果: 0011
            int h = a >> 2; //结果为3  实际上是把a除以2的移动次数的次方

 

下面是跳转语句

关键字 goto

代码如下

 static int  Main(string[] args)
        {
            int x = 6;
            if (x > 0) goto large;
            x = -x;
        large: return x;
        }

如果x>0满足  就直接跳转到large(标签)后面的语句

一般都不提倡这种  不过在特殊情况:深层次的循环中 break只能跳出到上一层 就必须使用跳转语句彻底跳出循环。

 

下面是switch和case

具体的很简单 这儿主要讲解一下break再其中的运用  swich是判断语句 退出是依靠break 如果一个case 后面没有break ,则会继续执行 直到break出现。

具体应该根据实际情况来运用  如果有多个情况 都是使用一种处理办法  就不能每句话都加break了。

看下面的代码:

///输出一年每个月的天数
            //输入年份:
            int nYear = int.Parse(Console.ReadLine());

            for(int i=1;i<13;i++)
            {
                switch(i)
                {
                    case 1:
                    case 3:
                    case 5:
                    case 7:
                    case 8:
                    case 10:
                    case 12:
                        Console.WriteLine("{0}月有31天",i);
                        break;
                    case 4:
                    case 6:
                    case 9:
                    case 11:
                        Console.WriteLine("{0}月有30天",i);
                        break;
                    case 2:
                        if(((nYear%4==0)&&(nYear%100!=0))||nYear%400==0)
                            Console.WriteLine("2月有29天");
                        else Console.WriteLine("2月28天");
                        break;
                }
              }

这样可以更加简便 快捷 注意一下那个关于闰年判断的语句  与>或

  

 

值类型与引用类型 运算符与case语句和跳转语句

标签:

原文地址:http://www.cnblogs.com/Huaran1chendu/p/4833089.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!