java对static简单认识

static简单认识:

static作用:只要使用static的地方,jvm就会在编译器对这些信息进行加载,完成对内存的一次申请,那么这个内存是什么时候进行释放呢,要在程序运行完成之后释放,还有一个问题就是这个内存在什么地方进行申请,是属于永久代吗(请看jvm内存管理),是不是static用的越多越好呢,那我们应该什么时候用呢,那我们可以不可以在想一下,java的设计者是如何用static这个关键字就能实现有关信息在编译器执行呢?,如果让我们设计将怎样做?

1. static用在方法上

static在方法上,可以不用产生类的对象实例,直接可以通过类名直接调用方法,节省对内存的消耗,可以理解为它是共有的,比如像在连接数据库时,可以把getConnection做成静态方法,但是这样会不会存在线程问题呢,肯定是存在线程问题的,因为存在共享内存的问题,比如像在一个方法内部,有一个变量,这个变量如果是方法的局部变量,那么它就不会存在线程问题,因为·每一个方法都会产生一个栈,那么每一个栈里面的内容都是私有的,如果这个变量是一个成员变量或者被static进行修饰,那么它将产生线程问题,因为这个成员变量被共享。在这个问题上,我们可以加上synchronize关键字,但是这个锁的力度是不是比较大呢,可以看(java并发编程里面的synchronize)。

2. staic用在变量上

static也可以在变量上使用,它的主要作用是什么呢,就是方便我们访问这个变量,在对象之间共享,static不能修饰局部变量,因为是局部变量会在方法执行完成之后,jvm虚拟机会释放内存,但是static修饰的成员变量需要在程序结束之后,才能释放内存。

所以这两个发生矛盾,所以我们不能修饰局部变量。

3.static用在静态块上

在类加载执行这些静态块,初始化里面的变量和方法,静态块首先不能存在任何方法体内,为什么不能存在方法体内,大家仔细想一想,如果存在方法体内,是不是就会失去静态块的作用,因为它的作用是在类加载时执行里面的方法和变量,这就是为什么静态块不能存在方法体内。假设这个类里面有多个静态块,那么问题将产生,它是如何执行的呢,通过程序验证发现它是按照先后顺序执行的,那么问题将产生,我们为啥要在类里面写多个静态块呀,其实它的作用就是在类加载执行这些静态块,我感觉java的设计者是不是多此一举,大家有不同想法,我们可以进行探讨

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JFrame是Java语言中的一个类,用于创建图形用户界面(GUI)的窗口。它继承自Java AWT(抽象窗口工具集)中的Frame类,但是提供了更多的功能和灵活性。JFrame可以包含其他组件,例如按钮、文本框、标签和其他面板等,可以通过编写Java代码来控制和管理这些组件。 在使用JFrame时,我们需要先创建一个JFrame对象,然后设置其标题、大小、位置和关闭操作等属性。接着,我们可以向JFrame中添加其他组件,例如按钮和文本框,并设置它们的位置和大小等属性。最后,我们需要将JFrame设置为可见状态,以便用户可以看到和操作其中的组件。 以下是一个简单的示例代码,用于创建一个带有“Hello World”标签和“点击我”按钮的JFrame窗口: ```java import javax.swing.*; public class MyFrame extends JFrame { public MyFrame() { // 设置窗口标题 setTitle("My Frame"); // 设置窗口大小 setSize(400, 300); // 设置窗口位置 setLocationRelativeTo(null); // 设置关闭操作 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建一个标签 JLabel label = new JLabel("Hello World"); // 创建一个按钮 JButton button = new JButton("点击我"); // 将标签和按钮添加到窗口中 add(label); add(button); // 设置布局管理器 setLayout(new FlowLayout()); // 设置窗口可见 setVisible(true); } public static void main(String[] args) { new MyFrame(); } } ``` 上述代码创建了一个MyFrame类,它继承自JFrame类,并在构造方法中设置了窗口的属性、添加了标签和按钮,并设置了布局管理器和窗口的可见状态。在main方法中,我们创建了一个MyFrame对象,启动了程序并显示了窗口。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值