在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. (转)FIKKER和Nginx的反向代理服务功能对比评测报告

    转自:http://tieba.baidu.com/p/1268737304 针对高并发反向代理服务器 NGINX和FIKKER评测报告 测试硬件环境:服务端:CPU:E5200硬盘:SATA 133 ...

  2. Forward团队-爬虫豆瓣top250项目-设计文档

    组长地址:http://www.cnblogs.com/mazhuangmz/p/7603594.html 成员:马壮,李志宇,刘子轩,年光宇,邢云淇,张良 设计方案: 1.能分析HTML语言: 2. ...

  3. mysql_结构

    代码执行结构:顺序结构.分支机构.循环结构 分支结构:实现准备多个代码块,按照条件选择执行某段代码 在mysql中只有if分支 基本语法 if 条件判断 then -- 满足条件要执行的代码; els ...

  4. 基于MATLAB的Sobel边缘检测算法实现

    图像边缘就是图像灰度值突变的地方,也就是图像在该部分的像素值变化速度非常之快,就比如在坐标轴上一条曲线有刚开始的平滑突然来个大转弯,在变化出的导数非常大. Sobel算子主要用作边缘检测,它是一离散型 ...

  5. 转:log4j的使用简介

    spring使用log4j,可以有2种方法. 1.在web.xml里不做任何配置. log4j.properties放在classpath根目录下, 这时候生成的日志文件就没有相对路径,如果写相对路径 ...

  6. 应该知道的Linux技巧【转】

    这篇文章来源于Quroa的一个问答<What are some time-saving tips that every Linux user should know?>—— Linux用户 ...

  7. 【系统架构】亿级Web系统搭建(1):Web负载均衡

    当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要通过搭建不同的服务 ...

  8. 【NumberValidators】工商营业执照号码和统一社会信用代码验证

    从本质上讲,工商营业执照号码和统一社会信用代码是两套完全不一样的编码规则,识别结果也仅有行政区划部分为两者共有,但因为这两种编码同时存在的原因,所以如果需要在系统中唯一标志一家企业时,还是可以通过工商 ...

  9. WPF实现可视化控件打印及打印预览

    打印预览XAML代码: <controls:WindowEx x:Class="SunCreate.Vipf.Client.UI.MapPrintPreview" xmlns ...

  10. ContentControl as CC和ContentPresenter as CP的使用

    1.CC为文本控件的父类,它继承为control,所以他是控件, 2.CP继承FrameworkElement,所以他是容器,相当于占位符 3.想让控件中能包含子控件就需要用CP,反之用CC就行.(不 ...