Java高阶语法---static
2019-01-15 07:02:55来源:博客园 阅读 ()
背景:听说static Java高阶语法是挺进BAT必经之路。
static:
静态static,很多时候会令我望文生义,但是get到了static最重要的一点,其他的理解都还ok。
static最重要的一点就是:类属性中被static所引用的变量会被当作Gabage Collection的root根节点,而root就意味着着这一类变量基本上是不会被GC回收的,
即使System.gc() 都不会被回收,So,static很容易引起内存泄漏。
官方的解释就是:static可以修饰属性、方法和内部类,static修饰属性或方法后,属性和方法不在属于某个特定的对象,而是所有的共享,也就是说static成员不依赖
某个对象,在类加载是就被初始化了;static修饰的属性或方法,可以直接使用类名调用,而不用先实例化对象再调用。
在面试的时候还可以补充:当一个属性或者方法和对象没有关系,或者说是没有任何对象共享的时候,那么就可以用staic修饰,使其实现共享;例如:
1. 某个银行的账户计算器,用来计算银行账户个数,那么此计算器属性就是所有对象共有的属性,就应该用static修饰;
2. System 类中的currentTimeMillis() 方法,用来获取系统当前时间的毫秒值,这个方法和System 类的对象没有关系,System类对象想要共享这个方法,那么这个方法
就可以用static 修饰;(源码currentTimeMillis()方法:public static native long currentTimeMillis(); )
还可以和面试官说,自己曾经遇到过一个内存泄漏的问题,就是因为static修饰的一个Map类型的变量导致的,集合容器用static修饰,不需要的对象没有被及时处理导致集合越来越大,最后通过排查类堆栈信息找到问题所在,这波static面试美滋滋。
FYI:
1 import java.util.HashMap; 2 import java.util.Map; 3 import lombok.extern.slf4j.Slf4j; 4 5 @Slf4j 6 public class TestStatic { 7 private static String staticName = "share"; 8 @SuppressWarnings("unused") 9 private String unstaticName = "unshare"; 10 @SuppressWarnings("rawtypes") 11 public static Map map = new HashMap(); 12 @SuppressWarnings("unused") 13 public static void main(String[] args) { 14 String myName = TestStatic.staticName; 15 //String youName = TestStatic.unstaticName; unable 16 TestStatic.staticMethod(); 17 //TestStatic.unstaticMethod(); unable 18 TestStatic.testOutOfMemmory(args, args); //存储对象的容器是static容器造成内存泄漏 19 //System.gc(); unWork 20 } 21 public static void staticMethod() { 22 log.info("I'm static method, share."); 23 } 24 public void unstaticMethod() { 25 log.info("I'm unstatic method, can't share."); 26 } 27 @SuppressWarnings("unchecked") 28 public static void testOutOfMemmory(String[] name,String[] age) { 29 map.put(name, age); 30 } 31 32 }
原文链接:https://www.cnblogs.com/taojietaoge/p/10259277.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:招商基金笔试题
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash