Java常见面试题—”static”关键字有什么用?
static作用:
1、static修饰方法
static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。
并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。
但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。
2、static修饰变量
static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。
而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。static成员变量的初始化顺序按照定义的顺序进行初始化。
3、static修饰代码块
static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。
在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。为什么说static块可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次。
Java中是否可以覆盖一个private或者是static的方法?
如果一个类的变量或者方法前面有static修饰,那么表明这个方法或者变量属于这个类,也就是说可以在不创建对象的情况下直接使用
当父类的方法被private修饰时,表明该方法为父类私有,对其他任何类都是不可见的,因此如果子类定了一个与父类一样的方法,这对于子类来说相当于是一个新的私有方法,且如果要进行向上转型,然后去调用该“覆盖方法”,会产生编译错误
class Parent {private fun() {...}
}
class Child extends Parent {private fun() {...}
}
class Test {public static void main(String[] args) {Parent c = new Child();c.fun(); //编译出错}
}
static方法时编译时静态绑定的,属于类,而覆盖是运行时动态绑定的(动态绑定的多态),因此不能覆盖.
说明
最后我整理了一份Java学习资料,如有需要扫描二维码领取!
Java常见面试题—”static”关键字有什么用?相关推荐
- 2018常见的java面试题_2018新版Java常见面试题
千锋西安Java编程培训班的老师总结了2018新版Java常见面试题,一起来看! 1.1.java基础 ●面向对象的特征:继承.封装.多态 继承[构造器.protected关键字.向上转型Java实现 ...
- java常见面试题及答案 1-10(基础篇)
java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...
- JAVA常见面试题及解答
JAVA常见面试题及解答(精华) 1)transient和volatile是java关键字吗?(瞬联) 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.例如: class ...
- Java常见面试题 Java面试必看 (一)
本篇博客是本人收集网上Java相关的资料整理所得,仅供参考. 一.Java基础 1.JDK 和 JRE区别 JDK(Java Development Kit)是针对Java开发员的产品,是整个Java ...
- Java常见面试题整理(一)
Java常见面试题整理 字符串 抽象类与接口 集合 多线程 锁 IO流 网络编程 字符串 主要包括String.StringBuffer和StringBuilder基本概念 String相关知识 St ...
- 300+ Java常见面试题总结【JavaPub版】
点赞再看,养成习惯 答案解析见文末 我是JavaPub,专注于面试.副业,技术人的成长记录. 这份[Java常见面试题总结]我想准备很久了,前面做面试官,后来自己也面了很多一线二线互联网公司,希望通过 ...
- java常见面试题及答案 1-10
java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...
- Java常见面试题,2021年及答案汇总
Java常见面试题,2021年及答案汇总 其实,博主还整理了,更多大厂面试题,直接下载吧 下载链接:高清172份,累计 7701 页大厂面试题 PDF 1.什么是ThreadPoolExecutor? ...
- 总结Java常见面试题和答案
转载自 总结Java常见面试题和答案 int和Integer有什么区别? 答:int是java的原始数据类型,Integer是java为int提供的封装类,java为每个原始数据类型都提供了封装 ...
最新文章
- python三酷猫_洛克王国三代酷猫登场 冰水酷猫解析
- linux之systemctl设置自定义服务
- linux 编写完程序吗,linux下编写C++程序
- 【数据结构与算法】【算法思想】位图
- php上传大文件500错误,PHP fastcgi模式大文件上传500错误
- 【半年总结】愿有岁月可回首
- Struts2之OGNL类型转换
- 谈谈研发PLM项目管理
- 大学生 大创 软著申请指南(图文含模板)(专用于大创,这篇就够了!纯干货!)
- Nacos:快速不停打印获取配置 c.a.n.client.config.impl.ClientWorker : get changedGroupKeys[${dataId}+${grou
- 青海干部网络学院 自动学习网站
- 互联网大数据时代下亚马逊是如何解决数据存储的
- 网页视频倍速播放代码
- 粒子滤波与重要性采样
- wb在计算机知识里是什么意思,计算机二级考试内容是什么?
- ps 图层解锁后变成全格子(全透明)的解决方法
- 谁知道下面这个视频中的特效是用什么软件做的?
- ffmpeg流媒体视频合并(画中画)效果并推流
- oracle 创建索引 CREATE INDEX
- mysql 悲观锁实现
热门文章
- Spark入门(三)——SparkRDD剖析(面试点)
- 问卷数据分析方法都有哪些?
- RAW 264.7 小鼠单核巨噬细胞白血病细胞培养解决方案
- 有一个数列,其前三项分别为1、2、3,从第四项开始,每项均为其相邻的前三项之和的1/2,问:该数列从第几项开始,其数值超过1200。
- 【天光学术】诉讼法论文:论交通肇事罪的认定与处理【开题报告 法学硕士研究生毕业论文】
- String比较大小
- 数据读取与数据扩增理解
- Android 4.0.1 源码下载,编译和运行
- 谷歌浏览器打开普通用户_Chrome浏览器的用户账户和密码如何导入其他浏览器
- 分账技术赋能农贸市场,重塑交易管理服务效能