静态方法和非静态方法区别?
静态方法static(类方法)和 非静态方法(实例方法)的区别:
方法我们主要分为三种:
1.构造方法
2.静态方法(类方法)
3.非静态方法(普通方法/实例方法/成员方法)
对于1(补充一下):构造方法分为无参构造方法 和 有参构造方法。另外
这两个方法,涉及到了方法重载(小伙伴可以自己去了解方法重载、方法重写、方法重构区别,当然我其他文章也会写相关的介绍)。
一、静态方法和非静态方法的区别(调用对象、引用变量不同)
对于2:静态方法,是使用static关键字修饰的方法,又叫类方法。属于类的,不属于对象,在实例化对象之前就可以通过类名.方法名调用静态方法。(静态属性,静态方法都是属于类的,可以直接通过类名调用)。
A.在静态方法中,可以调用静态方法。
B.在静态方法中,不能调用非静态方法。
C.在静态方法中,可以引用类变量(即,static修饰的变量)。
D.在静态方法中,不能引用成员变量(即,没有static修饰的变量)。
E.在静态方法中,不能使用super和this关键字
对于3:非静态方法,是不含有static关键字修饰的普通方法,又称为实例方法,成员方法。属于对象的,不属于类的。(成员属性,成员方法是属于对象的,必须通过new关键字创建对象后,再通过对象调用)。
A.在普通方法中,可以调用普通方法。
B.在普通方法中,可以调用静态方法
C.在普通方法中,可以引用类变量和成员变量
D.在普通方法中,可以使用super和this关键字
二、静态方法和非静态方法的区别(调用方法不同)
静态方法可以直接调用,类名调用和对象调用。(类名.方法名 / 对象名.方法名)
但是非静态方法只能通过对象调用。(对象名.方法名)
三、静态方法和非静态方法的区别(生命周期不同)
静态方法的生命周期跟相应的类一样长,静态方法和静态变量会随着类的定义而被分配和装载入内存中。一直到线程结束,静态方法和静态属性才会被销毁。(也就是静态方法属于类)
非静态方法的生命周期和类的实例化对象一样长,只有当类实例化了一个对象,非静态方法才会被创建,而当这个对象被销毁时,非静态方法也马上被销毁。(也就是非静态方法属于对象)
总结:类方法可以直接通过类名调用;实例方法必需先实例化类,再初始化对象,然后通过类的实例对象才能调用
举例:
class ABC{
public static void testStatic(){System.out.println("This is static method");}public void testMethod(){System.out.println("This is instance method");}public static void main(String[] str){ABC.testStatic(); //直接通过类调用ABC a = new ABC(); //实例化,然后构造方法会初始化a.testMethod(); //对象调用方法
}
}
静态方法和非静态方法区别?相关推荐
- C#中静态方法和非静态方法的区别
静态方法和非静态方法的区别: 1.静态方法不需要类实例化就可以调用,反之非静态方法需要实例化后才能调用: 2.静态方法只能访问静态成员和方法,非静态方法都可以访问: 3.静态方法不能标记为overri ...
- php 静态方法特点,浅析php静态方法与非静态方法的用法区别
在php编程中,static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为"类属性"或"类方法" 如果访问控制 ...
- java静态方法和非静态方法的区别_史上最全阿里 Java 面试题总结
关注[ToBeTopJavaer],回复[答案],获取全套面试题答案,为明年的金三银四,做好充分的准备. JAVA基础 JAVA中的几种基本数据类型是什么,各自占用多少字节. String类能被继承吗 ...
- java中静态方法与非静态方法的区别及非静态方法的注意事项
一旦使用static修饰成员方法,那么这就成为了静态方法.静态方法不属于对象,而是属于类的. 如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用它. 如果有了static关键字,那 ...
- 静态方法与非静态方法区别
一.静态方法 静态方法又称类方法,是加staic关键字修饰的方法,在类定义的时候就被分配和装载入内存中. 静态方法属于类所有,类实例化前即可使用,同时不能使用super和this关键字. 静态方法只能 ...
- 静态方法和非静态方法的区别JAVA
最近在写JAVA程序的时候报了一个错. No enclosing instance of type FileRead is accessible. Must qualify the allocatio ...
- java中synchronized修饰静态方法和非静态方法有什么区别?
Synchronized修饰非静态方法 Synchronized修饰非静态方法,实际上是对调用该方法的对象加锁,俗称"对象锁". Java中每个对象都有一个锁,并且是唯一的.假设分 ...
- 使用synchronized修饰静态方法和非静态方法有什么区别
前言 最近被问到了这个问题,第一次回答的也是很不好,在此参考网上答案进行整理记录.供大家学习参考. Synchronized修饰非静态方法 Synchronized修饰非静态方法,实际上是对调用该方法 ...
- 静态方法与非静态方法的区别
使用static修饰的静态方法是属于整个类的类方法,它在内存中的代码段会随类的定义而被分配和装载:而非静态方法是属于具体对象的方法,当这个对 象创建时,在对象的内存中会拥有此方法的专用代码段.在引用静 ...
最新文章
- base64 长度补全
- THANATOS数据库(自噬调节相关蛋白及其翻译后修饰信息数据库)使用指南
- Nginx 内置绑定变量的介绍
- java生产者消费者代码_Java实现Kafka生产者消费者代码实例
- 程序员界年度人口普查:6成以上开发者日工作超9小时,且从不运动
- ECMAScript6 ES6语法
- cassandra学习笔记三
- 1005 继续(3n+1)猜想 (25 分)—PAT (Basic Level) Practice (中文)
- 【开源系列】三国演义LBS (二)游戏策划案
- 根据IP地址查询物理位置(IP地址定位库)并且查询当前地址的天气信息(中国气象网)
- 交通标志识别系统(TSR)
- python爬虫requests设置代理ip_Python爬虫技巧-设置代理IP
- 希捷硬盘固件修复工具_希捷3.5寸500G台式机硬盘磁头损坏后的数据恢复
- 带管理职位面试中遇到的常见经典问题的回答
- 计算机网络和智能家居,智能家居与传统智能家居到底有什么区别
- POI使用详解 java 复杂excel导出(笔记)
- 给大家分享一篇 用Python抓取漫画并制作mobi格式电子书
- beeline : Error: Could not open client transport with JDBC 连接失败
- 设计并测试一个椭圆类
- 二手电脑与Ubuntu的经历-2-显卡知识
热门文章
- 主数据管理(MDM)如何打通企业奇经八脉?
- Oracle 12C ORA-01017/ORA-28040问题总结
- c语言insert作用,C++string中的insert()插入函数详解
- 计算机组成原理VHDL语言实现16位ALU实验
- 详细介绍Deeper Text Understanding for IR with Contextual Neural Language Modeling
- 2D激光SLAM-基于PL-ICP的激光雷达里程计
- 吴忠军 - 项羽30万大军挖不动秦始皇陵!秦陵难解之谜
- 龟兔赛跑问题(并发)
- 无法连接局域网中的sqlserver数据库
- 0-7对应星期一到星期日