当前位置: 首页 > news >正文

static的用法静态方法的注意事项

#Static的用法
如果用static关键字,那么这样的内容不再属于对象自己,而是属于类,所以凡是本类的对象,都共享同一份 。

如果一个成员变量使用了static这个关键字,那么这个对象不再属于对象自己,而是属于所在的类,多个对象共享同一份数据

一旦使用了static修饰成员方法,那么就成为了静态方法,静态方法不属于对象,而是属于类。

注意事项:

1、静态只能直接访问静态,不能直接访问非静态。原因(因为在内存当中是先有静态内容,后有非静态内容“先人不知道后人”“后人知道先人”)
2。静态方法中不可以使用this.(原因:this代表当前对象,通过谁调用的方法,谁就是当前对象)

package Day01;/*
 *@author wanghongyuan
 *@Create 2020/12/7 22:35
 */

public class StaticTest {
    public static void methodStatic(){
        // 静态方法中不可以使用this关键字。
        //System.out.println(this);//错误写法
    }    
}
public class MyClass(){
	
	// 成员变量
	int num ;
	// 静态变量
	static int numStatic;

	// 成员方法
	public void method(){
	// 一个成员方法,必须先创建对象,然后通过对象才能使用它。
		System.out.print("这是个成员方法")
		// 成员方法可以访问成员变量
		System.out.println(num);
		// 成员方法可以访问静态变量;
		System.out.print(numStaic);

}
	public static void methodStatic(){
		System.out.print("这是个静态方法。")
		// 静态方法可以访问静态变量
		System.out.print(numStatic)
		// 静态方法不可以访问成员变量
	// System.out.print(num);//会报错
}
}

public class Demo02StaticMethod{
	public static void main(String[] args){
	MyClass obj = new MyClass(); // 首先创建对象
	// 然后才能使用没有static关键字的内容
	obj.method();

// 对于静态方法来说,可以通过对象名来调用,也可以通过类名称来调用。
	obj.methodStatic(); //正确,不推荐(容易误以为是一个普通的成员方法,,,这个写法在编译之后也会被javac翻译成“类名称.静态方法名”的格式)
	MyClass.methodStatic(); //正确,推荐使用(静态方法的使用尽量使用类名称.方法来调用)
	
// 无论是成员变量,还是成员方法,如果有了Static,都推荐使用类名称进行调用。

// 成员变量(静态变量):类名称.成员变量(静态变量)
// 静态方法:类名称.静态方法()
// 对于本来在类当中的静态方法,可以省略类名称.的方式进行调用
myMethod();// 这个在编译的时候也会等于Demo02StaticMethod.myMethod();完全等效的


}
public static void myMethod(){
	System.out.print("自己的方法!")
}


}


相关文章:

  • Static的补充
  • Arrays的补充
  • Arrays的使用
  • Math的使用。
  • 抽象类的说明及使用
  • 继承的综合案例
  • 接口概述及用法
  • 接口允许默认的方法。
  • Java9+,接口内容小结
  • 多态的理解
  • 子类和父类的成员变量和成员方法的用法
  • 接口的使用,对象的上下转型
  • Final的用法及注意事项
  • 类的注意事项
  • 超级重要的匿名对象
  • 2017 年终总结 —— 在路上
  • ESLint简单操作
  • golang中接口赋值与方法集
  • Java程序员幽默爆笑锦集
  • Java教程_软件开发基础
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • PHP 的 SAPI 是个什么东西
  • PV统计优化设计
  • Python连接Oracle
  • Python实现BT种子转化为磁力链接【实战】
  • Redux 中间件分析
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 代理模式
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 力扣(LeetCode)965
  • 删除表内多余的重复数据
  • 一、python与pycharm的安装
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 回归生活:清理微信公众号
  • 如何正确理解,内页权重高于首页?
  • ​虚拟化系列介绍(十)
  • ​业务双活的数据切换思路设计(下)
  • #android不同版本废弃api,新api。
  • #微信小程序(布局、渲染层基础知识)
  • (3)nginx 配置(nginx.conf)
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (python)数据结构---字典
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (已解决)什么是vue导航守卫
  • (转) Face-Resources
  • (转)jdk与jre的区别
  • (转)Linux下编译安装log4cxx
  • (转载)利用webkit抓取动态网页和链接
  • ***监测系统的构建(chkrootkit )
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...