在Java的学习中,我们知道,方法的使用是不可或缺的重要部分,在我们编写第一个Java程序hello world的时候,我们就要开始使用主方法main();它就是一个静态方法(static method) 。

public class sty_01{
//主方法main()
public static void main(String[] args){
system.out.println("hello world!");
}
}

那么接下来我们具体学习下静态方法与实例方法的区别。

  • 静态方法与实例方法的定义
  • 实例方法(instance method)

    我们知道在类体中,一个方法的创建,包括 权限修饰符,返回值类型,方法名,这样定义出来的方法就是实例方法。
public int aint(){
}
  • 静态方法(static method)

    而静态方法的定义则略有不同,静态方法的定义在权限修饰符和返回值类型之间多出了一个关键字static,而这,也是二者在语法上最根本的区别。
public static int aint(){
}

关键字static,它也是一个修饰符,用来修饰类方法和类变量。其主要作用就是使类和变量能够实现跨类使用,常用来声明独立于对象的静态方法。

  • 二者的区别

    由此,我们可以大致总结一下二者之间的区别以及使用的方法。

  • 语法定义上

    静态方法是被static修饰符修饰的,而实例方法则没有。

  • 作用上

    静态方法可以实现方法的跨类使用,而实例方法只能在本类中被实例化对象调用。

  • 机制上

    静态方法是独立于对象的,而实例方法则必须依赖于实例化对象,才能被调用,静态方法的内存占用较实例方法大,因为实例方法,只有在实例化对象调用的情况下才会被执行,而静态方法是独立与对象的,所以程序执行之初就会被创建,占用内存。

  • 使用上

    静态方法是不需要new一个实例化对象就可以调用的方法,因为静态方法是独立与对象的方法,可以直接进行调用。

  • 二者的使用分析

我们了解到了静态方法与实例方法的区别后,通过分析,可以得出两者的适应的使用方式。

静态方法,是跨类的,独立于对象的,并且是较占用内存的,所以第一首选的方法使用,是不会使用静态方法的,我们一般使用静态方法,应当是针对其特有的功能性,即实现跨类调用,这说明,静态方法就是为一些公共方法准备的,可以多类,多项目,多处通用的公共方法的定义,比如一些工具类Utils的方法,。

实例化方法,实例化方法只能在本类中调用,需要依赖于实例化对象,占用内存小,这说明实例化方法主要功能是实现当前类对象的某些功能,是特例的,并且多会调用到当前类的一些成员变量。

所以在一些具体功能类中,具体功能实现方法的定义上,应当使用实力方法,而在一些公共类,会在多个类中调用到的工具类等,其方法主要具有公共调用等需求时,使用静态方法。


关于静态方法与实例方法的了解,暂时就这么多,可能比较浅显,都是个人结合二者的部分特性分析得出,可能有缺错之处,还望能够不吝指教。

之后深入了解后再做详细分析。


更新时间:

2019-4-2

11:25

【Java初探外篇02】——关于静态方法与实例方法的更多相关文章

  1. 【java初探外篇01】——关于Java修饰符

    本文记录在学习Java语言过程中,对碰到的修饰符的一些疑问,在这里具体的拿出来详细学习和记录一下,以作后续参考和学习. Java修饰符 Java语言提供了很多修饰符,但主要分两类: 访问修饰符 非访问 ...

  2. [Java初探外篇]__关于正则表达式

    正则表达式通常用于判断语句之中,用来检测一段字符串是否满足某一个格式.在日常生活中被广泛的用于各种用户输入信息的检测上. 而正则表达式实际上是一些具有特殊意义的字符序列.通过这些特殊字符构成的特殊序列 ...

  3. [java初探外篇]__关于StringBuilder类与String类的区别

    前言 我们前面学习到String类的相关知识,知道了它是一个字符串类,并且了解到其中的一些方法,但是当时并没有太过注意到String类的特点,今天就StringBuilder类的学习来比较一下两者的区 ...

  4. [Java初探外篇]__关于时间复杂度与空间复杂度

    前言 我们在前面的排序算法的学习中了解到了,排序算法的分类,效率的比较所使用到的判断标准,就包括时间复杂度和空间复杂度,当时因为这两个定义还是比较难以理解的,所以决定单独开一篇文章,记录一下学习的过程 ...

  5. [Java初探实例篇02]__流程控制语句知识相关的实例练习

    本例就流程控制语句的应用方面,通过三个练习题来深入学习和巩固下学习的流程控制语句方面的知识,设计到,if条件判断语句,switch多分支语句,for循环语句及其嵌套多层使用,while循环语句. 练习 ...

  6. [java初探总结篇]__java初探总结

    前言 终于,java初探系列的学习,要告一阶段了,java初探系列在我的计划中是从头学java中的第一个阶段,知识主要涉及java的基础知识,所以在笔记上实在花了不少的功夫.虽然是在第一阶段上面花费了 ...

  7. [java核心外篇]__Object类与对象类型的转型

    前言 我们在之前的学习中提过很多次了,java是面向对象的,java的基础可以说是建立在类和对象上面的.然后我们又学到了类的继承,发现了在java类库中,类的继承是极为普遍的,一个类继承另一个类,就像 ...

  8. 【Java初探实例篇01】——Java语言基础

    示例系列,将对每节知识辅以实际代码示例,通过代码实际编写,来深入学习和巩固学习的知识点. IDE:intellij IDEA: 语言:Java 本次示例:Java语言基础知识的应用. 创建包day_4 ...

  9. Java微信公众平台开发--番外篇,对GlobalConstants文件的补充

    转自:http://www.cuiyongzhi.com/post/63.html 之前发过一个[微信开发]系列性的文章,也引来了不少朋友观看和点评交流,可能我在写文章时有所疏忽,对部分文件给出的不是 ...

随机推荐

  1. mui学习

      改变状态栏的颜色 <meta name="apple-mobile-web-app-capable" content="yes"> <me ...

  2. C#-vs2012学习笔记-惊奇于vs的强大和便利

    网站常用功能自动完成,包括网页和数据库.

  3. zend studio 修改字体大小

    第一步:进入设置窗口    windows -> preferences第二步:进入修改字体的选项卡.    General -> Appearance -> Colors and ...

  4. 网络编程socket、udp

    PS:主机字节顺序,个位在低字节上 计算机本身不能通讯,使通过在同一主机或者不同主机内的软件进行数据传输. 套接字socket:套接字socket可以参照文件指针来理解,文件指针是表示对文件打开进行某 ...

  5. 三.int , bool , str

     03.万恶之源-基本数据类型(int, bool, str) 本节主要内容: 1. python基本数据类型回顾 2. int----数字类型3. bool---布尔类型4. str--- 字符串类 ...

  6. 为什么有时候在mac中启动一些应用时会跳的Windows中

    因为有些格式是尽在windows情况下才支持的,如果mac上安装了虚拟的Windows,则执行此类应用(例如:.bat 文件)时就会启动Windows虚机

  7. 前端开发 - HTML/CSS

    概述 HTML是英文HyperText Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记). 相当于定义统一的一套规则,大家都来遵守他,这样就可以让浏览器 ...

  8. centos救援模式实验笔记

    1.  首先在BIOS中把启动选项设置成DVD光驱启动或者USB启动也是可以的 2.  从光盘启动之后再出现的选项中选择“Rescue installed system”然后按回车确认,具体图下图: ...

  9. Delphi 的多线程使用已经很简单了

    先看一个非多线程的例子, 代码执行时不能进行其它操作(譬如拖动窗体): {自定义方法: 在窗体上绘制...} procedure MyMethod; var   i: Integer; begin   ...

  10. 2016CVPR论文集

    http://www.cv-foundation.org/openaccess/CVPR2016.py ORAL SESSION Image Captioning and Question Answe ...