Java中的static关键字详解

it2023-11-09  70

**

Java中的static关键字详解

**

在一个类中定义一个方法为static,即静态的,那就是说无需本类的对象就可以调用此方法。调用一个静态方法就是 “类名.方法名” ,静态使用方法就是这么简单,举个例子,代码如下:

package com.yf1010; import java.awt.FlowLayout; import java.awt.Graphics; import java.util.Date; import javax.swing.JButton; import javax.swing.JFrame; public class DrawUI { //显示界面的方法 public void showUI(){ //创建一个窗体 JFrame drawFrame = new JFrame(); //设置窗体的属性:大小、标题、居中显示、关闭的操作 drawFrame.setSize(1000, 600); drawFrame.setTitle("画图板v1.0"); drawFrame.setLocationRelativeTo(null); drawFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //创建流式布局 FlowLayout layout = new FlowLayout(); //设置流式布局 drawFrame.setLayout(layout); //创建监听器的对象 DrawListener drawL = new DrawListener(); //给窗体添加监听器 drawFrame.addMouseListener(drawL); //创建一个保存所有文字的按钮数组,数组创建:类型[] 数组名 = {元素,元素……}; String[] textArr = {"直线","矩形","小猪"}; //根据数组循环创建按钮 for(int i=0; i<textArr.length; i++) { //创建按钮 JButton btn = new JButton(textArr[i]); //添加到窗体上 drawFrame.add(btn); //添加监听器 btn.addActionListener(drawL); } //设置可见 drawFrame.setVisible(true); //获取窗体的画布 Graphics frameGraphics = drawFrame.getGraphics(); //让监听器的画布,等于界面的画布 drawL.g = frameGraphics; } //主方法 public static void main(String[] args) { //创建界面对象 DrawUI ui = new DrawUI(); //调用显示界面的方法 ui.showUI(); } }

首先,我们可以来看一下上述的代码,看主函数的ui.showUI(),因为主函数main是利用static关键字来进行修饰了,就是在主函数不想在调用某个方法时去创建一个对象,因为这样太麻烦了。但是,如果我们的主函数main方法设置成了static的,这样我们就能在不创建对象就能调用某个方法了,例如 ui.showUI() 直接通过“类名.方法名”进行调用(这样可能有人需要问了,类名不应该是DrawUI.方法名吗,怎么是用ui.方法名,其实在Java中类都是通过对象来实现某种功能的,所以我们就需要先去创建对象去调用其他方法了,即DrawUI ui = new DrawUI();),这样就能简便许多了。

static关键字,告知编译器main函数是一个静态函数。也就是说main函数中的代码是存储在静态存储区的,静态方法在内存中的位置是固定的,即当定义了类以后这段代码就已经存在了。如果main()方法没有使用static修饰符,那么编译不会出错,但是如果你试图执行该程序将会报错,提示main()方法不存在。因为包含main()的类并没有实例化(即没有这个类的对象),所以其main()方法也不会存在。而使用static修饰符则表示该方法是静态的,不需要实例化即可使用。

main方法是一个程序的入口,如果写成非静态的,那么就必须实例化一个对象再来调用它,既然是入口这样肯定是不可以的;静态方法是属于类的,直接用类名就可以调用。 static方法不需要创建对象,可以直接访问,这样main方法就不需要做特殊处理;

static方法在静态数据区中,这样就可以直接调用不需要每次调用都要重新生成。

接下来,先明白一下声明为static的方法有哪些限制:

1)它们仅能调用其他的static方法;

2)它们只能访问static数据;

3)它们不能以任何方式引用this或super。

静态方法常常为应用程序中的其他类提供一些实用工具所用,在Java的类库中大量的静态方法正是出于此类目的而定义。故此类方法,不需要创建对象。

1. static关键字基本概念

我们可以一句话来概括:方便在没有创建对象的情况下来进行调用 。也就是说:被static关键字修饰的不需要创建对象去调用,直接根据类名就可以去访问。 对于这个概念,下面根据static关键字的三个基本使用来描述。

2. static关键字修饰类

java里面static一般用来修饰成员变量或函数。但有一种特殊用法是用static修饰内部类,普通类是不允许声明为静态的,只有内部类才可以。下面看看如何使用。 如果没有用static修饰InterClass,则只能new 一个外部类实例。再通过外部实例创建内部类。

3. static关键字修饰方法

修饰方法的时候,其实跟类一样,可以直接通过类名来进行调用: 4. static关键字修饰变量

被static修饰的成员变量叫做静态变量,也叫做类变量,说明这个变量是属于这个类的,而不是属于是对象,没有被static修饰的成员变量叫做实例变量,说明这个变量是属于某个具体的对象的。 我们同样可以使用上面的方式进行调用变量:

最新回复(0)