当前位置: 移动技术网 > IT编程>开发语言>Java > Java高阶语法---static

Java高阶语法---static

2019年01月13日  | 移动技术网IT编程  | 我要评论

nvidia控制面板在哪,开眼角失败怎么办,顾左右而言其他

 

背景:听说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:
import java.util.hashmap;
import java.util.map;
import lombok.extern.slf4j.slf4j;

@slf4j
public class teststatic {
    private static string staticname = "share";
    @suppresswarnings("unused")
    private string unstaticname = "unshare";
    @suppresswarnings("rawtypes")
    public static map map = new hashmap();
    @suppresswarnings("unused")
    public static void main(string[] args) {
        string myname = teststatic.staticname;
       //string youname = teststatic.unstaticname;  unable
        teststatic.staticmethod();
        //teststatic.unstaticmethod();   unable
        teststatic.testoutofmemmory(args, args);  //存储对象的容器是static 容易造成内存泄漏
        //system.gc(); unwork
    }
    public static void staticmethod() {
        log.info("i'm static method, share.");
    }
    public void unstaticmethod() {
        log.info("i'm unstatic method, can't share.");
    }
    @suppresswarnings("unchecked")
    public static void testoutofmemmory(string[] name,string[] age) {
        map.put(name, age);
    }
    
}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网