杂乱的小知识

*************************************

* 注意自己的命名,

* [JIT]即时编译:运行到哪里编译到哪里,编译之后就放到了内存之中。

* 局部变量(在方法中申明)必须先付值在使用。

* 越抽象的类就可以当做父类。
* 里氏替换原则:

就是需要一个父类的类型的时候给了一个子类的对象是可以的。

*:快捷键

   *导入命名空间(shift+alt+F10)

   *构造函数:CTOR

   * :base():表示调用父类的构造函数

**This来调用本类的成员,base来调用父类中的成员。

**访问级别约束

*多态的实现 

*:静态的构造函数

    *:在静态类中所包含的所有成员都必须的是静态成员。静态属性只有用类名.出来,不能用实例化对象来点出来。<静态成员的生命周期是很长的,一般在程序退出的时候才会被回收释放资源,而实例化的对象一用完就会被GC回收。>

*记录代码的时候要记其主要的结构,主要的步奏。

    这个是在类里面声明一个静态的属性,其次就是一个隐藏静态的构造函数。静态构造函数只执行一次,(第一次使用静态类,静态成员,静态方法)

静态的构造函数不能手动调用,而是在第一次使用静态类的时候自动调用的,没有访问修饰符,也没有任何参数。具体的值是在里面设置好的。

多态<同一段代码在执行的时候有不同的功能>

*类型的另外一种类型转换

   <只是这种转换不提示错误,值变为null,强类型转换则直接报异常。>

   Student a=p as Student();

  *抽象类

  《就是在类前面加一个abstract就是抽象类》

一般的类就是抽象的,但是抽象类是比较高级的抽象的类,不能被实例化。

下面是抽象类的一般特性

  抽象类只定义不能在其中有具体的实现,智能在继承的子类中进行重写。

*注意以后在使用类属性的时候,在给其属性赋值的时候都要放在构造函数(CTOR)里面。

**练习实例

*:值类型与引用类型

  值类型:以字节保存在内存《保存在栈》里面,不可继承

  <int char double long short enum decime等>

  引用类型;在堆,栈里面都有保存,在栈里面只保存堆里面的地址,实际的值是放在堆里面的。可以继承

  <string 数组 类 接口,委托 >

  <引用传递,值传递>

      ……引用传递:拷贝栈中的堆地址,指向同一块堆;

      ……ref的引用传递:两个变量指向同一个栈(栈中有数据)的地址,那就是他们指向的堆是同一个,不管改变那一个,堆里面的数据都会改变。

      ……值传递:拷贝栈中的内容,将其作为一个副本。

  (栈里面数据进行拷贝的时候是复制数据,为一个副本)

*:接口问题探讨

在Java里面老师说就看下楼层上面的管道,这样就可以可联想到接口的具体意义。

接口的定义与命名

  *一般接口以大写I开头,-able结尾,关键字是interface

  *接口里面只能包含方法(方法,属性,索引器,事件)。

  *接口里面都不能写任何访问修饰符。<接口中默认为public的访问修饰符>

  *接口不能被实例化,属性只能写(get;set;)方法,不能再继续写。

  *接口中的成员子类必需全部实现。接口可以“多继承”一个类只能继承自一个父类但是可以实现多个接口。

Public class interface IFlyable

{

    Void SayHi();

    //索引器

    String this[int index]

   {

       get;set;

    }

}

*:接口实例

接口的实现分为两种,直接实现,显示实现接口,直接实现是公共的public,而显示实现接口是解决重名问题的,为私有的。

*类型转换

*显式转换,隐式转换,强类型转换(容易丢失精度)

1:sizeof判断其占用几个字节,

{console.writeline(sizeof(int))}

2:隐式转换(当其数据类型一致,且大字节转换为小字节的会发生类型转换。)

3:所有数组的父类是Array类型。

*异常处理<try---catch----finally>

*运行时程序出现的错误

  *finally: 代码清理,释放资源,无论发生了什么它里面的内容都讲会被执行。相当与在C语言里面switch后面的define的含义。

  *当程序中某行代码出错,后面的代码就不会往后执行。

  *对于异常的处理我们可以写多个catch(里面的异常方法不一样)来处理各自的异常。

*手动异常的抛出<多使用逻辑判断来解决异常。为了不浪费资源。>

  Throw new Exception(“有异常了”)

*方法会为返回值单独设置变量,这样子返回值里面的值就不会改变了。

Ref和Out比较

*比较两个对象是否为同一个对象

  Console.writeline(object.ReferenceEquals(p1,p2));

  Console.writeline(object.ReferenceEquals(p1,p3));

若p1和p2为同一对象则返回值为true,若不是则返回值为false.

*关键字sealed<此为密封类>

   在其前面加上一个关键字sealed表示此类不被继承。

*字符串(string )的不可变性和字符串池

    1:String的相加减是字符串的叠加,会开批新的堆内存。

2:字符串常量的保存将能保存到堆内存中,也就是保存在了字符串池中。也相当与保存到块表里面。<string.IsInterned()>

*字符串

1:字符串格式化

这里是取代站位符,Console.WriteLine(“我今年(0,-10,c2)岁了”,22);

2:StringBuilder类的使用

一般的情况都是在使用字符串拼接的时候才会用到,因为它的速度快。

  3:监视字符串等C#程序的快慢的方法

在需要添加监视的程序前面实例化Stopwatch对象。

Stopwatch watch=new Stopwatch();

watch.Start()

//这中间是需要看执行时间的程序

Watch.Stop();

Console.WriteLine(watch.Elapsed);

4:弱引用

就是变量在初始化完成之后,在栈里面没有地址指向它,则它将被GC回收,此时用WeakReference重新申明一下,就是将其弱引用下,以后使用的时候直接使用就可以使用。<WeakReference wr=new WeakReference(p)>

时间: 2024-08-10 20:51:36

杂乱的小知识的相关文章

iOS 小知识-tips

--->1<--- arc的项目中使用非arc代码,则添加-fno-objc-arc: 非arc项目中使用arc代码,则添加-fobjc-arc. --->2<--- 实用的类 NSKeyedArchiver [UIScreen mainScreen] [UIDevice currentDevice] [UIFont familyNames] [UIApplication sharedApplication] [NSUserDefaults standardUserDefaults

Linux 小知识翻译 - 「syslog」

这次聊聊「syslog」. 上次聊了「日志」(lgo).这次说起syslog,一看到log(日志)就明白是怎么回事了.syslog是获取系统日志的工具. 很多UINIX系的OS都采用了这个程序,它承担了「获取系统全部的日志」这个维持系统正常运行的重要任务. syslog的本体是「syslogd」这个daemon(一般翻译成守护进程),常驻内存中获取日志. syslog的特点是可以通过配置文件「/etc/syslog.conf」,对「哪种应用程序?哪种重要度的信息?记录在哪个文件中?」等进行细致的

Linux 小知识翻译 - 「日志」(log)

这次聊聊「日志」. 「日志」主要指系统或者软件留下的「记录」.出自表示「航海日志」的「logbook」. 经常听说「出现问题的时候,或者程序没有安装自己预期的来运行的时候,请看看日志!」. 确实,记录了系统和软件详细运行情况的「日志」是信息的宝库,通过日志来解决问题的事例也非常多. 但事实上,「无论如何也不会看日志」的用户也有很多.理由很简单,日志的信息量非常大,全部用眼睛来看的话是非常吃力的. 而且,英语写的日志也会让英文不好的人敬而远之. 虽说「要养成用眼睛来看日志的习惯」,但实行起来却非常

Linux 小知识翻译 - 「编译器和解释器」

这次聊聊「编译器和解释器」. 编程语言中,有以C为代表的编译型语言和以Perl为代表的解释型语言.不管是哪种,程序都是以人类能够理解的形式记录的,这种形式计算机是无法理解的. 因此,才会有编译器和解释器. 对于编译型语言,是使用编译器将人类可读的代码转换为机器能够理解的「机器语言」文件,然后通过执行这个「机器语言」文件来实现程序的执行. 另一方面,对于解释型语言,是使用解释器将人类可读的代码逐行解释,一边解释一边执行这个程序.(这里的解释是将代码解释成机器语言,让计算机能够理解) 甚至有的语言既

Linux 小知识翻译 - 「补丁」(patch)

这次,聊聊补丁. 当有bug或者安全漏洞的时候,就会发布补丁.打上补丁之后,就能解决相应的bug或者安全漏洞. 那么,「补丁」到底是什么呢? 「补丁」只有少量的代码,一般都是对程序的一部分进行更新或者追加,包括bug修正,安全漏洞修正,功能追加或者变更等等.当然,只有「补丁」是无法运行的. 即,只有将「补丁」附加到原来的程序中,更新原来的程序后,才能运行. 「补丁(patch)」本来是指「打补丁用的小布头」.「patch」正是为了补足现有的程序,堵住程序漏洞的「布头」. 打「补丁」的时候需要用到

Linux 小知识翻译 - 「协议(protocol)」

对于理解服务器和网络来说,「协议」是不可缺少的概念. 「协议(protocol)」有「规则,规定」的意思. 实际上「协议」的函数很广,在通信领域,「协议」规定了「在通信时,什么样的情况下,以什么样的顺序,什么样的方式交互什么样的数据」. 抽象的去理解「协议」可能会比较困难,下面来举个例子. 通过Web以HTML方式交互时使用的协议是「HTTP」(Hyper Text Transfer Protocol).这个协议最重要的就是规定了服务器和客户端之间以HTML方式交互的规则. 比如,客户端连接上服

Linux 小知识翻译 - 「Linux」怎么读?

主要讨论日语中的读法,所以没有完全按照原文来翻译. 「linux」的读法有很多(这里指在日语中),代表性的读法有以下几种: A). 李纳苦思 B). 李奴苦思 C). 纳依纳苦思 A和B相同的是将 linux开头的「li」发音成「李」.这也是linux之父Linus Torvalds的名字的日语假名(「リーナス?トーバルズ」)的由来. linux中「nu」的发音是怎么样的呢?Linux Online的网页上有说明,而且视频中还有 Linus Torvalds 的发音. http://www.li

Android 48个小知识

1.判断sd卡是否存在 boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); 2.TextView部分文字设置颜色 TextView tv = new TextView(this); //添加css样式 tv.setText(Html.fromHtml("<font color="#ff0000">红色<

Jquery:小知识;

Jquery:小知识: jQuery学习笔记(二):this相关问题及选择器 上一节的遗留问题,关于this的相关问题,先来解决一下. this的相关问题 this指代的是什么 这个应该是比较好理解的,this就是指代当前操作的DOM对象. 在jQuery中,this可以用于单个对象,也可以用于多个对象. $('btn').click(function(){ alert(this.innerHTML); // 单个对象,this指代当前id为btn的DOM对象 }); $('div').each