详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp65
1、大家都以为“实例方法需要先创建实例才可以调用,比较麻烦,静态方法不用,比较简单”
事实上如果一个方法与他所在类的实例对象无关,那么它就应该是静态的,而不应该把它写成实例方法。所以所有的实例方法都与实例有关,既然与实例有关,那么创建实例就是必然的步骤,没有麻烦简单一说。 当然你完全可以把所有的实例方法都写成静态的,将实例作为参数传入即可,一般情况下可能不会出什么问题。
从面向对象的角度上来说,在抉择使用实例化方法或静态方法时,应该根据是否该方法和实例化对象具有逻辑上的相关性,如果是就应该使用实例化对象 反之使用静态方法。这只是从面向对象角度上来说的。 如果从线程安全、性能、兼容性上来看 也是选用实例化方法为宜。
2、大家都以为“ 静态方法常驻内存,实例方法不是,所以静态方法效率高但占内存。”
事实上,他们都是一样的,在加载时机和占用内存上,静态方法和实例方法是一样的,在类型第一次被使用时加载。调用的速度基本上没有差别。
3、大家都以为“ 静态方法在堆上分配内存,实例方法在堆栈上”
事实上所有的方法都不可能在堆或者堆栈上分配内存,方法作为代码是被加载到特殊的代码内存区域,这个内存区域是不可写的。
方法占不占用更多内存,和它是不是static没什么关系。
因为字段是用来存储每个实例对象的信息的,所以字段会占有内存,并且因为每个实例对象的状态都不一致(至少不能认为它们是一致的),所以每个实例对象的所以字段都会在内存中有一分拷贝,也因为这样你才能用它们来区分你现在操作的是哪个对象。
但方法不一样,不论有多少个实例对象,它的方法的代码都是一样的,所以只要有一份代码就够了。因此无论是static还是non-static的方法,都只存在一份代码,也就是只占用一份内存空间。
同样的代码,为什么运行起来表现却不一样?这就依赖于方法所用的数据了。主要有两种数据来源,一种就是通过方法的参数传进来,另一种就是使用class的成员变量的值……
相关推荐
**简介**:FindBugs是一款由马里兰大学开发的静态分析工具,它能够检测Java程序中的潜在缺陷。通过分析字节码,FindBugs可以识别出可能导致错误的行为。 **功能**: - **缺陷检测**:基于预定义的缺陷模式,检测...
目前市场上的 Java 静态代码分析工具种类繁多且各有千秋,我们项目调研现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),其中引入并集成了Checkstyle,FindBugs,PMD这三种静态代码工具。
Java静态分析和Java代码检查是软件开发中至关重要的步骤,主要目的是在代码执行之前发现潜在的错误和不规范之处,从而提升代码质量和可维护性。Parasoft Jtest是一款强大的工具,专门针对Java应用程序,提供了静态...
JAVA语言静态变量和静态方法的分析及其应用研究.pdf
文章中提到了几种主流的Java静态分析工具:Checkstyle、FindBugs、PMD和Jtest。 #### Checkstyle Checkstyle专注于检查Java代码的格式问题,如缩进、空格、括号使用是否规范等。它确保代码遵循一定的编码规范,有...
FindBugs是一款Java静态代码分析工具,与其他静态分析工具(如Checkstyle和PMD)不同,FindBugs 不注重样式或者格式,它专注于寻找真正的缺陷或者潜在的性能问题,它可以帮助java工程师提高代码质量以及排除隐含的...
Java静态代码分析插件Checkstyle在Java开发中的应用是一个重要的质量保证工具,它能帮助开发者遵循编码规范,提高代码的可读性和可维护性。Checkstyle通过对源代码进行检查,指出不符合约定或潜在问题的地方,使得...
- **静态分析**:检查代码是否存在潜在的错误,例如未定义的方法调用、空指针异常等。 - **性能分析**:识别可能导致性能瓶颈的方法调用链,如深度递归或者频繁调用的耗时方法。 - **重构建议**:提供自动化重构的...
【Java的静态方法调用】 Java中的方法调用分为两种主要类型:静态方法调用和非静态(实例)方法调用。静态方法调用是指在不创建对象的情况下直接通过类名来调用的方法,它与类相关联,而不是类的实例。这种方式在...
FindBugs是一款Java静态代码分析工具,与其他静态分析工具(如Checkstyle和PMD)不同,FindBugs 不注重样式或者格式,它专注于寻找真正的缺陷或者潜在的性能问题,它可以帮助java工程师提高代码质量以及排除隐含的...
- **静态代码分析工具**:探索静态代码分析工具,以优化静态方法和变量的使用,提高代码质量和可维护性。 - **Java内存模型**:深入研究Java内存模型,了解静态方法和变量是如何存储和访问的。 通过不断学习和实践...
java面试题静态加载顺序构造方法 继承与static 面试题目如下:请写出程序执行完成之后的结果。 package extend; public class X { Y y=new Y(); static{ System.out.println("tttt"); } X(){ System....
Java静态分析和代码检查是软件开发过程中的关键环节,旨在提升代码质量和可读性,减少潜在的运行时错误。Parasoft Jtest是一款强大的工具,专门针对Java EE、SOA、Web等Java应用程序,提供了全面的测试解决方案。...
PVS-Studio静态代码分析工具作为一种工具来检测代码中的缺陷和商业代码分析对比。越来越多的领域依赖计算机,代码的质量就成了关键。比如航天、国防、工业控制、金融等对安全性,稳定性要求很高的领域。PVS-Studio ...
通过上述分析和示例,我们可以看到,在Spring框架中,虽然不能直接使用`@Value`注解为静态变量注入值,但可以通过定义一个非静态方法并使用`@Value`注解来间接实现这一目标。这种方法不仅避免了潜在的警告和错误,还...
Java静态分析框架是一种用于检查Java源代码的工具,它能够在代码执行之前发现潜在的问题和错误。这样的框架通过解析源代码并应用预定义的规则来识别潜在的缺陷、漏洞、不符合编码规范的地方,以及可能的性能瓶颈。...
任何了解Java编程并想在实践中进行静态分析但对理论上的Soot和静态分析一无所知的人。 如果您对静态程序分析有一定的了解,建议您从学习Soot。 设置 简而言之,使用Java 8并运行./gradlew build 。 有关更多信息和...