语法只是表象,原理才是关键!!!

灵魂static关键字

Java规定:方法只能由对象来调用。

换句话来说,在面向对象的思维下,方法与对象存在一种强耦合。

方法在没有对象的情况下无法调用,于是上帝派来了static

static作用:即使没有初始化对象,也可以调用方法。(类比到属性上同样如此)

被static修饰的数据称为类数据,修饰的方法称为类方法。并且Java推荐使用类名.方法名(或属性名)的方式调用。

为什么static的权限低?

非static方法可以调用static方法,但static方法不能调用非static方法。

这个规则背了好久都没背住,原因其实很简单,正常的方法只能用对象来调用,所以static不能调用非static方法。

而非static可以调用static方法是因为,static关键字的设计就是为了解决方法只能由对象来调用这一问题的,所以,没有非static方法也可以在

没有实例化对象的情况下调用static方法或关键字。

static关键字设计原理的更多相关文章

  1. Java 静态static关键字,main函数,对象的初始化过程,对象调用成员,单例模式的设计,静态代码块(6)

    Java 静态static关键字,静态代码块详情参考:static的使用原理讲解http://www.cnblogs.com/itcqx/p/5519464.html main函数: java Mai ...

  2. static关键字有何魔法?竟让Spring Boot搞出那么多静态内部类

    生命太短暂,不要去做一些根本没有人想要的东西.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习 ...

  3. 你真的了解JAVA中对象和类、this、super和static关键字吗

    作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功.JAVA底层.面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 目录 Java对象究竟是什么? 创建对象的过程 ...

  4. 【C++】从设计原理来看string类

    1.一些C++基础知识 模板类string的设计属于底层,其中运用到了很多C++的编程技巧,比如模板.迭代器.友元.函数和运算符重载.内联等等,为了便于后续理解string类,这里先对涉及到的概念做个 ...

  5. Java Static关键字详解

    提起static关键字,相信大家绝对不会陌生,但是,想要完全说明白,猛的一想,发现自己好像又说不太明白... ...比方说,昨天被一个同学问起的时候... ... 当然,不是所有人都像我一样学艺不精的 ...

  6. C++中的static关键字的总结

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 1.面向过程设计中的st ...

  7. 理解Java中的final和static关键字

    回顾这两个关键字前,先考虑一个问题: Static变量存储在JVM中的位置,或者说static变量是如何被加载的? JVM会把类的静态方法和静态变量在类加载的过程中读入方法区(Method Area) ...

  8. (转)C++中的static关键字的总结

    文章转自 http://www.cnblogs.com/BeyondAnyTime/archive/2012/06/08/2542315.html C++的static有两种用法:面向过程程序设计中的 ...

  9. c++中关于static关键字的问题

    C++的static关键字C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. ...

随机推荐

  1. 隐写工具outguess安装使用介绍

      0x00 outguess下载安装 Kail终端命令输入git clone https://github.com/crorvick/outguess 安装包随即下载到文件夹.双击打开文件夹,右键点 ...

  2. Django---进阶13

    目录 数据库表创建及同步 注册功能 登陆功能 bbs是一个前后端不分离的全栈项目,前端和后端都需要我们自己一步步的完成 表创建及同步 注册功能 forms组件 用户头像前端实时展示 ajax 登陆功能 ...

  3. 【学习】从.txt文件读取生成编译代码。

    string code = null; String projectName = Assembly.GetExecutingAssembly().GetName().Name; // 1. 生成要编译 ...

  4. mysql无法启动服务,错误1067

    安装mysql,提示安装成功后,启动服务,提示错误1067 前情提示:mysql安装文件和配置文件没有放在Program File文件夹下. 解决办法:将my.ini文件剪切放在Program Fil ...

  5. 记录一次dns引发的线程池故障

    # 问题描述 公司做的是一个支付系统,会对接很多第三方公司. 突然有一天,有一家第三方(简称金花平台)反应收不到我们的通知消息. # 排查过程 我们登陆自己的服务器,检查程序日志,是有给金花平台发送通 ...

  6. Java8之Stream 集合聚合操作集锦(含日常练习Demo)

    Stream 是用函数式编程方式在集合类上进行复杂操作的工具,其集成了Java 8中的众多新特性之一的聚合操作,开发者可以更容易地使用Lambda表达式,并且更方便地实现对集合的查找.遍历.过滤以及常 ...

  7. “git pull” 强制覆盖本地文件

    放弃本地修改,使用服务器代码覆盖本地的Git命令如下: $ git fetch --all $ git reset --hard origin/master $ git pull 使用master分支 ...

  8. 技术小菜比入坑 LinkedList,i 了 i 了

    先看再点赞,给自己一点思考的时间,思考过后请毫不犹豫微信搜索[沉默王二],关注这个长发飘飘却靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有技术大佬整理 ...

  9. Jenkins链接Kubernetes集群

    Jenkins CI/CD介绍 持续构建与发布是我们工作中必不可少的一个步骤,目前大多公司都采用Jenkins集群来搭建符合需求的CI/CD流程,然而传统的Jenkins Slave一主多从方式会存在 ...

  10. Oracle常见错误以及解决方法

    前言: 本博客为博主在开发中遇到的问题,为大家提供解决方法,如需转载,请注明来源,谢谢! 问题一: 第一次用PLSQL Developer连接数据库,若用sys用户登录并操作则正常,若用普通用户比如x ...