静态方法和非静态方法的区别:

1.静态方法不需要类实例化就可以调用,反之非静态方法需要实例化后才能调用;
2.静态方法只能访问静态成员和方法,非静态方法都可以访问;
3.静态方法不能标记为override,导致派生类不能重写,但是可以访问;
4.静态成员是在第一次使用时进行初始化。非静态的成员是在创建对象的时候,从内存分配上来说静态是连续的,非静态在内存的存储上是离散的,因此静态方法和非静态方法,在调用速度上,静态方法速度一定会快点,因为非静态方法需要实例化,分配内存,但静态方法不用,但是这种速度上差异可以忽略不计

何时用静态方法,何时用实例方法:

1.一个方法和他所在类的实例对象无关,不依赖new出来的实例,那么它就应该是静态的
2.不需要面向对象的理念的时候用静态;比如动物-> RUN ,因为你可能会扩展出猫 run、狗 run,这时候就需要用非静态的方法

关于线程安全:

静态方法只有一个实例,当有静态变量的时候,对于高并发的时候,并发的所有执行都走那个方法,静态变量的值就会发生改变,导致出现问题;
当然并发不安全跟方法本身没关系,跟共享的那个资源有关系比如某个变量,每个线程都对其进行操作,都能改变其值,多线程(并发其实就是多线程),操作它,其值混乱,就有问题了

为什么要用非静态方法

  这是本人写的一个方法,当初直接写成static方法,没有别人的原因,是因为不想实例化可以少些一行代码,并没有想过静态和非静态的区别= =!~~;当然写成非static的方法也是可以的;

  原因

  1.因为方法需要重复的调用,每次都去new一次会造成内存的开销,使用静态的方法就会一直在内存中,不需要重新new一块空间初始化数据;

  2.不需要去做OO;

  3.方法不依赖new出来的内容;

  比较经典的static方法,DBHelp里面基本上都是static方法

转载于:https://www.cnblogs.com/12xiaole/p/8676115.html

C#中静态方法和非静态方法的区别相关推荐

  1. java中静态方法与非静态方法的区别及非静态方法的注意事项

    一旦使用static修饰成员方法,那么这就成为了静态方法.静态方法不属于对象,而是属于类的. 如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用它. 如果有了static关键字,那 ...

  2. java中synchronized修饰静态方法和非静态方法有什么区别?

    Synchronized修饰非静态方法 Synchronized修饰非静态方法,实际上是对调用该方法的对象加锁,俗称"对象锁". Java中每个对象都有一个锁,并且是唯一的.假设分 ...

  3. C#中静态与非静态方法比较

    C#静态方法与非静态方法的区别不仅仅是概念上的,那么他们有什么具体的区别呢?让我们通过本文向你做一下解析. C#的类中可以包含两种方法:C#静态方法与非静态方法.那么他们的定义有什么不同呢?他们在使用 ...

  4. java静态方法 问题_Java中堆、栈,静态方法和非静态方法的速度问题

    一.堆和栈的速度性能分析 堆和栈是JVM内存模型中的2个重要组成部分,自己很早以前也总结过堆和栈的区别,基本都是从存储内容,存储空间大小,存储速度这几个方面来理解的,但是关于堆和栈的存储速度,只知道堆 ...

  5. php 静态方法特点,浅析php静态方法与非静态方法的用法区别

    在php编程中,static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为"类属性"或"类方法" 如果访问控制 ...

  6. java堆和客栈_JAVA中堆、栈,静态方法和非静态方法的速度问题

    一.堆和栈的速度性能分析 堆和栈是JVM内存模型中的2个重要组成部分,自己很早以前也总结过堆和栈的区别,基本都是从存储内容,存储空间大小,存储速度这几个方面来理解的,但是关于堆和栈的存储速度,只知道堆 ...

  7. java静态方法和非静态方法的区别_史上最全阿里 Java 面试题总结

    关注[ToBeTopJavaer],回复[答案],获取全套面试题答案,为明年的金三银四,做好充分的准备. JAVA基础 JAVA中的几种基本数据类型是什么,各自占用多少字节. String类能被继承吗 ...

  8. 静态方法与非静态方法区别

    一.静态方法 静态方法又称类方法,是加staic关键字修饰的方法,在类定义的时候就被分配和装载入内存中. 静态方法属于类所有,类实例化前即可使用,同时不能使用super和this关键字. 静态方法只能 ...

  9. 静态方法和非静态方法的区别JAVA

    最近在写JAVA程序的时候报了一个错. No enclosing instance of type FileRead is accessible. Must qualify the allocatio ...

最新文章

  1. python获取路径下所有图片:
  2. 《Linux设备驱动开发详解 A》一一2.3 接口与总线
  3. 选择 Reac​​tJS 的五大理由
  4. 蓝桥练习-算法训练 区间k大数查询
  5. js根据应纳税所得额计算税金
  6. JVM学习笔记二:JVM参数
  7. qemu+linux+x86+64,kvm 内部错误:无法找到适合 x86_64 的模拟器
  8. JetBrains IDE 调试快捷键(debug、全)
  9. 【leetcode】423. Reconstruct Original Digits from English
  10. 专家称纳米机器人未来将“入侵”人脑,让人类将获得“超能力”
  11. Echarts教程篇:概览
  12. 香农编码,哈夫曼编码与费诺编码的比较
  13. lwj_C#_作业 ListT应用
  14. MSN聊天记录显示方式
  15. ch10_ex32nbsp;荷兰国旗问题
  16. keil出现stdin(‘-’)combined with other files
  17. 【windows10】 解决PPT不能播放视频
  18. linux编译ice,linux环境下编译安装ICE
  19. Cassandra 3.x官方文档_cassandra.yaml配置文件
  20. Nginx代理https强制http跳转https

热门文章

  1. go---字符串截取
  2. IE8下submit表单没反应
  3. html5的消息通知
  4. Hadoop常见面试45问
  5. angularJs中ngModel的坑
  6. GitHub上排名前100的iOS开源库介绍(来自github)
  7. 0726------Linux基础----------线程池
  8. 找某個ColumnName在那些Tables
  9. MVC中使用 事物
  10. HTML DOM教程 21-HTML DOM Event 对象