当前位置:首页 > 开发 > 编程语言 > Java > 正文

JAVA基础----static关键字全面理解

发表于: 2014-03-09   作者:无量   来源:转载   浏览:
摘要: static修饰的,在类加载的过程中就被初始化,并且在内存中只维护一份,可以当成全局变量全局方法 1、static修饰变量: ####static修饰成员变量(也就是类的属性),代表类级拥有的,在内存中只有一份,相当于C中的全局变量,由这个类产生的所有实例都公用这份变量,这个变量由类和所有实例共同维护,由于要共同维护,一般static修饰的成员变量都是public的访问控制符来修饰:
static修饰的,在类加载的过程中就被初始化,并且在内存中只维护一份,可以当成全局变量全局方法
1、static修饰变量:
####static修饰成员变量(也就是类的属性),代表类级拥有的,在内存中只有一份,相当于C中的全局变量,由这个类产生的所有实例都公用这份变量,这个变量由类和所有实例共同维护,由于要共同维护,一般static修饰的成员变量都是public的访问控制符来修饰:
使用:类名.静态成员变量名或者实例名.静态成员变量名

package com.out.test;
class Student {
	public static int a;
	public int b;
}

public class Test {
	
	public static void main(String[] args) {
		//静态成员变量使用
		Student.a = 3;
		System.out.println(Student.a);  //输出3
		Student s = new Student();
		System.out.println(s.a);        //输出3
		s.a = 4;
		System.out.println(Student.a);  //输出4
		System.out.println(s.a);        //输出4
		
		//普通成员变量使用
		Student s1 = new Student();
		Student s2 = new Student();
		//Student.b = 5;               //错误不可以,这么使用
		s1.b = 5;
		s2.b = 6;
		//s1和s2各自维护自己的成员变量,在内存中各有自己的一份,而静态成员变量在内存中只有一份,
		//类和它的实例们共同来使用和维护
		System.out.println(s1.b);      //输出5
		System.out.println(s2.b);      //输出6
	}
}

优点:
*可以不用创建实例就可以调用,方便
*内存中只有一份,在某些情况下,需要这种情况
*在类加载的时候就被初始化,常驻内存中,调用快捷方便。类名.静态变量名
用处:
*静态变量适合全局变量的定义

####static修饰局部变量,也就是函数中定义的静态变量,答曰:不可以
package com.out.test;
public class Test {
	public void print() {
		static String str = "abc";//编译报错,static不可以修饰局部变量,final可以
	}
}

2、static修饰方法
####静态方法跟静态变量一样是类级共有的,在类第一次加载的时候被加载到内存中,直接用类名.静态方法名来调用,实例也可以调用
静态方法调用问题:
静态方法只能调用本类中的静态方法和静态变量,静态方法也可以调用其他类中的静态方法和new出来的方法
非静态方法,既可以调用本来中的任何方法,也可以调用其他类中的任何方法

package com.out.test;

class Student {
	public void st1() {
	}
	public static void st2() {
	}
}

public class Test {
	public static void print() {
	}
	
	public void copy() {
	}

	public void test() {
		//非静态方法调用
		//同一个类中,非静态方法可以调用同一个类中的静态方法也可以调用非静态方法
		print();
		copy();
		//非同一个类中,非静态方法既可以调用,静态的也可以new出来调用非静态的
		Student.st2();
		Student s = new Student();
		s.st1();
	}
	
	public static void fun() {
		//静态方法调用
		//同一个类中,静态方法只能调用静态方法
		print(); //可以调用
		copy();  //不可以调用
		//非同一类中,可以直接调用其他类中的静态方法,也可以new出来调用其他类中的非静态方法
		Student.st2();
		Student s = new Student();
		s.st1();
	}
}

*用处
静态方 法常用做工具方法的定义
静态方法构造单例模式

*缺点
静态方法不能以任何方式引用this和super关键字,因为静态方法在使用前不用创建任何实例对象,当静态方法调用时,this所引用的对象根本没有产生。

3、静态代码块
静态代码段,在类第一次被加载的时候自动执行,且只执行一次,常用来初始化类的某些属性,或者做某些初始化的事情,静态方法也是在类第一次加载的时候被加载,不过它只有在北调用时,才被执行
static {
//要初始化的操作
}

4、静态内部类

JAVA基础----static关键字全面理解

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
static关键字特点: 随着类的加载而加载。 优先于对象存在。 被所有对象共享 可以直接被类名调用。
一、static关键字      原来一个类里面的成员变量,每new一个对象,这个对象就有一份自己的成员
1、使用static声明属性 如果希望一个属性被所有对象共同拥有,可以将其声明为static类型。 声明为st
最近在想,自己算是中级程序员还是高级程序员,已经工作四年了,还没有对自己有一个明确的定位。毕
一、final关键字 final在java中表示的意思是最终,也可以称为完结器。可以使用final关键字声明类属性
一、关键字final static 介绍 1. final 根据程序上下文环境,Java关键字final有“这是无法改变的”
一、概述 static 关键字是声明静态变量,静态方法用的。static的含义是属于类且不属于类对象的变量
1.类是java里面的重要内容,可以把类当成一种自定义数据类型,使用类来定义变量,这种类型的变量统
如果要想将一个属性设置成公共属性,则就需要使用static 关键字进行声明。 package org.staticdemo;
一、概述   本文将讨论Java static关键字的使用。它可以被用于类名、变量、方法和块。 二、静态类
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号