zoukankan      html  css  js  c++  java
  • 【阶段试题分析】阶段一试题总结

    String类型对象比较

    注意是值的比较还是引用地址的比较

    “==”比较两个对象是否为同一个对象

    Equals则是对其对象的值进行比较

    String s1 = "123";
    String s2 = "123";
    Console.WriteLine(s1 == s2);
    Console.WriteLine(s1.Equals(s2));
     
    char[] ch = new char[3] { '1', '2', '3' };
    String s3 = new String(ch);
    object obj1 = s1; //获取地址
    object obj3 = s3;
     
    Console.WriteLine(obj1 == obj3);  //结果是True
    Console.WriteLine(obj1.Equals(obj1));  //结果是False

    ===================昏割线,以下内容转自于博客园====================

    Person p1 = new Person("aa", 12);
     
    Person p2 = new Person("aa", 12);
     
    Console.WriteLine("Equals和= =(等于号)的比较");
     
    Console.WriteLine("p1==p2  " + (p1 == p2));//fals
     
    Console.WriteLine("p1.Equals(p2)  " + p1.Equals(p2));

    对于 p1==p2 比较的结果是false,这点是毫无疑问的,因为他俩是两个不同的变量,所以引用的地址也是不同的。但是对于p1.Equals(p2) 返回false,可能有人会产生疑问,p1 和p2的内

    容是相同的啊,为什么他俩的比较结果却是为false呢?。原因就在于在Equals是Object中的一个虚方法,而person类中没有对她进行重写,因此此时调用的仍是父类中的Equals方法。但是父

    类是无法知道你都有哪些成员字段的,因此返回的是false。要想让他能够比较两个变量的内容是否相同,那就应该重写Equals方法。

    来自:http://www.cnblogs.com/chen0720/p/3209398.html  

    关于string讲解: Equals() 和 运算符 == 重载准则

    ===================昏割线==========================

    继承中override和new问题

    先贴上阶段一的考试题:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace NO8
    {
        public class Animal
        {
            protected int i;
            public Animal()
            {
                Add(1);
            }
            public int GetI()
            {
                return i;
            }
            public virtual void Add(int v)
            {
                i += v;
            }
        }
     
        public class Dog : Animal
        {
            public Dog()
            {
                Add(2);
            }
            public override void Add(int v)
            {
                i += v * 2;
            }
        }
     
        public class Program
        {
            static void Main(string[] args)
            {
                Dog dog = new Dog();
                dog.Add(5);
                Console.WriteLine(dog.GetI());
                Console.Read();
            }
        }
    }

    问题:运行结果是多少?答案:16
    考点:涉及到override的使用,以及实例化子类对象时需要调用父类的构造函数

    当父类的中的virtual方法被子类重写了,那么当实例化子类对象时需要调用父类的构造函数,其中构造函数中Add方法则是子类中重写过的;
    当virtual方法没有被重写时,子类中的方法Add被new修饰时,父类中构造方法调用的则是本类中的virtual修饰的Add方法。

    异常捕获的顺序

    从子类到基类的顺序

    对于List集合作为参数使用 

    List<object>与List<food>不是同一回事

    关于反射

    反射一个类的对象时不执行这个类的构造函数;不可访问该类中的私有字段(如何获取私有字段?)

  • 相关阅读:
    linux shell dash&bash(转)
    GNU Linux Boot ID Machine ID
    MAC地址对照表
    设备树中的spi设备以及内核对spi节点的处理流程(转)
    CRC32 逆向算法的C语言实现(转)
    ZYNQ7045 系统升级实现方法(multiboot)(转)
    echarts 如果打开多个页面直折线图不展示,及echarts和radio-group的结合使用
    Openwrt SSH免密码登录linux服务器
    让windows10支持多用户连接
    打印SQL日志
  • 原文地址:https://www.cnblogs.com/qingsongwang/p/3266105.html
Copyright © 2011-2022 走看看