一、Java基础之static关键字

static关键字可以用来修饰变量、方法、代码块以及内部类。

静态资源从JVM的类加载机制角度来说,它是在类首次被初始化时加载到方法区,而非静态资源需要类new出对象的时候被加载到堆栈里。如:使用Class.forName(“xxx”)方法初始化某个类来加载静态资源,同样的,在new出对象前会确保该类被初始化了。

static变量:

静态变量被所有对象共享,在内存中只有一份。故,被任意对象修改该静态变量后,会影响到所有对象。

(PS:在多线程中需要多注意共享资源的使用。)

static方法:

《Java编程思想》中说静态方法是没有this的方法。而非静态方法和变量都需要通过对象来访问(this),所以静态方法内部只能引用静态变量。非静态方法内部可以引用非静态变量、静态方法和静态变量。

静态方法和静态变量可以直接通过类名访问,即通过类名就可以在方法区查找到该类信息。

(PS:通过javap –verbose xxx.class  查看为什么静态方法没有this。默认非静态方法参数列表会自动加上this参数。this表示当前对象,故this可以访问所有静态非静态的方法和变量)

static代码块:

静态代码块与静态变量一样,当且仅当类首次初始化时执行。静态资源的加载顺序是按照定义顺序加载的。

注意:静态代码块对于定义在它之后的静态变量,可以赋值,但是不能访问

static内部类:

静态内部类请参考后续内部类文章

static导入:

静态导入:必须写成import static,不能写成static import

好处:简化一些操作,增强可读性,不需要写对应类名即可使用静态方法


参考资料:

http://www.cnblogs.com/xrq730/p/4820992.html

http://www.cnblogs.com/dolphin0520/p/3799052.html

http://lavasoft.blog.51cto.com/62575/18771/

==================================================================
这是我在阅读他人博客,自我学习并归纳总结后写下的博文,我能保证这里的每一句话都是我经过认真推敲斟酌后写下的,同时也欢迎大家指出有问题的地方。我希望能站在巨人的肩膀上将知识分享给大家。

”如果我看得比别人更远些,那是因为我站在巨人的肩膀上” ——  牛顿
==================================================================

时间: 2024-10-10 07:00:55

一、Java基础之static关键字的相关文章

Java基础之static关键字的用法

Java中的static关键字主要用于内存管理.我们可以应用static关键字在变量.方法.块和嵌套类中. static关键字属于类,而不是类的实例.        静态(static)可以是: 变量(也称为类变量) 方法(也称为类方法) 代码块 嵌套类         修饰变量 被static修饰的变量称作静态变量或类变量:没有被static修饰的变量,称为实例变量.静态变量在内存中只有一个拷贝(节省内存),JVM只为静态变量分配一次内存,在类加载的过程中完成静态变量的内存分配(存储在"方法区

【Java基础】static关键字相关

static关键字特点: 随着类的加载而加载. 优先于对象存在. 被所有对象共享 可以直接被类名调用. 使用注意: 静态方法只能访问静态成员. 但非静态成员可以访问静态成员. 静态方法中不能使用this,super关键字. 主方法(main)是静态的. 看了上面是不是想睡觉了,单纯的概念是挺烦人的,那下面让我们在实际代码中来加深对他们的认知. 方法的调用可以分为两种: 对象调用: 对象.方法(实参) 类调用: 这个方法所在类的名字.方法(实参)//前提是这个方法必须被static修饰. 没有使用

Java基础(十)--static关键字

static关键字通常应用在字段.方法.静态块,还有冷门一点的内容:静态内部类.静态导入 static字段: static字段也就是静态变量,是属于类的,被所有的对象所共享,只有当类初次加载的时候保存到内存中,在内存中只保存一份 实例变量是属于对象的,在创建对象的时候进行初始化,每个对象的实例变量是互斥的,不会相互影响 PS:static是不允许用来修饰局部变量,无论是方法.静态块.代码块 static方法: public class A{ private static int i = 1; p

Java基础之static关键字

static方法就是没有this的方法.在static方法内部不能调用非静态方法,反过来是可以的.而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法.这实际上正是static方法的主要用途.static可以用来修饰类的成员方法.类的成员变量,另外可以编写static代码块来优化程序性能.但是在Java中切记:static是不允许用来修饰局部变量. static方法 static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有th

Java基础(二)-static关键字分析

static关键字是我们在编程中经常会使用到的,但有些可能只知其然而不知其所以然.下面介绍static关键字的作用再通过例子结合说明. static关键字共有五种作用(先说明static所修饰的不会改变其(private.protected.default和public)作用域的范围): 修饰成员变量(非局部变量) 修饰成员方法 修饰代码块 修饰内部类 静态导包 怎么会有五种呢,大部分初学者对前面两种或者加上第三种还是很熟悉的,第四种情况可能一开始的人就比较少知道了,第五种就更少人知道了.下面一

【转载-Java基础】Java中的static关键字解析

[转载]Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题.以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见的笔试面试题 若有不正之处,希望谅解并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接:http://www.

java基础之final关键字

与final关键字相关的笔试题面试题也是一道必考题.而且对于final的实际应用非常广泛,在代码设计的时候,如果对此不够足够掌握,可能就会很难排查与此相关的异常. final的理论知识如下: final类型的成员变量初始化值: 1.声明时候直接赋值 2.构造方法中赋值,如果一个类中有多个构造方法,就要保证在每个构造方法中都要完成对final类型变量的初始化工作 3.静态final成员变量必须在声明时赋值,且不能在构造方法中赋值 4.final成员变量指的是引用不能改变,即该变量的引用不能在指向其

Java基础语法(一)---关键字、常量、变量、运算符

Java基础语法(一)---关键字.常量.变量.运算符一.关键字 定义:被Java赋予了特殊含义的单词. 特点:体现上都是英文小写. 1. 用于定义数据类型的关键字 基本数据类型: 整数类型: byte(1字节,最大值127) short(2字节,最大值为2^15-1) int(4字节,最大值为2^31-1) long(8字节,最大值为2^63-1) 浮点类型: float (单精度实数在内存中占32bit 有效数字为6~7位) double(双精度实数占内存单元为64bit 有效数字为15~1

(转)Java中的static关键字解析

转载: http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: "static方法就是没有this的方法.在static方法内部不能调用非静态方法,反过来是可以的.而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法.这实际上正是static方法的主要用途." 这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键