Java中的static
来源:互联网 发布:java线程 编辑:程序博客网 时间:2024/05/16 07:48
static关键字
static是一种特殊的关键字,可以修饰方法,成员变量等成员。static修饰的成员表面这个成员是属于类的本身,不属于对象,因此static修饰的成员只能通过类来调用,而不能通过对象来调用。一般称static修饰的方法和变量为类变量、类方法,也可以称为静态变量、静态方法。
static修饰的成员是随着类的加载而加载,意味着jvm一开始就会存在static修饰的成员。
class StaticClass{ public static void main(String[] args) { static int i = 5; int j =1; }}
static真正作用是区分成员变量、方法、内部类、初始化块这四种成员到底属于类本身还是实例。
static与this的关系
static修饰的方法中不能使用this引用。因为在static修饰的方法中使用this,就导致this无法指向合适的对象。由于static修饰的方法中不能使用this,所以static修饰的方法不能访问非静态成员。
如果想在静态方法中访问非静态方法,则需要重新创建对象
class StaticMethod{ void tool() { System.out.println("静态成员不能访问非静态成员"); } public static void main(String[] args) { //创建新对象调用非静态方法 new StaticMethod().tool(); }}
同理,static修饰的方法中也无法出现super()关键字。
static和abstract的关系
abstract修饰的方法是没有方法体的方法,所以通过类来调用抽象方法会出现错误。因此无法同时使用static和abstract修饰方法。
静态内部类
因为static修饰的成员属于类本身,外部类的上一级是包(package),所以不能使用static修饰外部类。而static修饰内部类,则内部类属于外部类,所以可以使用static修饰内部类。
外部类不能直接访问静态内部类的成员,需要使用静态内部类的类名调用来访问,或者用静态内部类对象来访问。
public class StaticOuterClass{ static class StaticInnerClass { private static int prop1 = 5; private int prop2 = 9; } public void accessInnerProp() { // System.out.println(prop1); // 上面代码出现错误,应改为如下形式: // 通过类名访问静态内部类的类成员 System.out.println(StaticInnerClass.prop1); // System.out.println(prop2); // 上面代码出现错误,应改为如下形式: // 通过实例访问静态内部类的实例成员 System.out.println(new StaticInnerClass().prop2); }}
1 0
- Java中的静态static
- Java中的static关键字
- JAVA中的static关键字
- JAVA中的static用法
- Java中的static(1)
- 说说Java中的static
- 了解Java中的Static
- JAVA中的static
- java中的static
- java中的static
- Java中的static介绍
- java中的static
- java中的static详解
- Java中的static
- java中的static详解
- java中的static详解
- java中的static详解
- java中的Static
- 读书笔记--C语言接口与实现--atom(原子)
- ORACLE新建用户及建表
- Codeforce 630B Moore's Law
- 复杂指针的声明和解读
- FreeBSD与Linux的比较
- Java中的static
- POJ 2385 Apple Catching(DP)
- 子类的继承性
- PHP中常用的设计模式
- uva816
- Linux 线程锁
- 关于Android Studio升级到2.0后和Gradle插件不兼容的问题
- 第二章 IPC机制
- Codeforces 630 B. Moore's Law