- 浏览: 313645 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
opalescent_:
学习了。。
java笔试题的整理和解答扩展(String专题) -
yixiao258964:
谢谢,找了好久Reverse Enginee,都说在datab ...
PowerDesigner Reverse Engineer from database-mysql -
javaAlpha:
介绍的真全啊
Java编程那些事儿86——文件操作之File类使用
Java编程那些事儿65——static修饰符
郑州游戏学院 陈跃峰
出自:http://blog.csdn.net/mailbomb
8.7 修饰符
修饰符的作用是让被修饰的内容具备特定的功能,在程序中合理使用修饰符可以在语法和功能上实现很多需要的效果。Java语言中的修饰符主要有5个:static、final、native、abstract和synchronized。这里首先讲解static、final和native的作用。
8.7.1 static修饰符
static关键字的中文意思是静态的,该修饰符可以修饰成员变量,成员常量和成员方法。使用该关键字修饰的内容,在面向对象中static修饰的内容是隶属于类,而不是直接隶属于对象的,所以static修饰的成员变量一般称作类变量,而static修饰的方法一般称作类方法。另外,static还可以修饰代码块,下面进行详细的介绍。
8.7.1.1 静态变量
static修饰的变量称作静态变量。静态变量和一般的成员变量不同,一个类在加载到内存时,静态变量只初始化一次,也就是说所有对象的静态变量在内存中都只有一个存储位置,每个对象中的静态变量都指向内存中同一个地址,它是在所有的对象之间共享的数据。另外静态变量在引用时比较方便。所以一般在需要实现以下两个功能时使用静态变量:
l 在对象之间共享值时
l 方便访问变量时
下面首先说一下非静态变量(没有static修饰符修饰的成员变量)在内存中如何存储的。示例代码如下:
//文件名Box.java
public class Box{
int length;
int width;
int height;
public Box(int l,int w,int h){
length = l;
width = w;
height = h;
}
}
//文件名TestBox.java
public class TestBox{
public static void main(String[] args){
Box a = new Box(10,20,30);
Box b = new Box(40,20,10);
}
}
则对象a和对象b在内存中的存储格式如下图所示:
对象a 对象b
10 |
20 |
30 |
length |
width |
height |
40 |
20 |
10 |
length |
width |
height |
从上面的图可以看出,非静态变量的值在每个对象中都有独立的存储空间,不同对象间这些值之间没有管理,也就是说每个对象都为内部的每个非静态的变量分配独立的存储空间,所以每个对象中非静态变量是隶属于对象,也就是说在每个对象中可能是不同的。
简单介绍了非静态变量在对象中的存储以后,下面再来看一下静态变量是如何进行存储的。示例代码如下:
//文件名StaticVar.java
public class StaticDemo{
static int m;
int n;
char c;
}
//文件名TestStaticVar.java
public class TestStaticVar{
public static void main(String[] args){
StaticVar sv1 = new StaticVar();
StaticVar sv2 = new StaticVar();
}
}
则对象sv1和对象sv2在内存中存储的格式如下图所示:
对象sv1 对象sv2
0 |
m |
0 |
n |
0 |
c |
0 |
n |
0 |
c |
对于StaticDemo类型的对象sv1和sv2来说,由于使用默认的构造方法进行构造,所以每个成员变量都被初始化为对应数据类型的默认值,int的默认值为0,char的默认值为编号为0的字符,所以sv1和sv2对象中存储的值如上图所示。
而静态变量的存储和非静态变量的存储不同,在Java虚拟机内部,第一次使用类时初始化该类中的所有静态变量,以后就不再进行初始化,而且无论创建多少个该类的对象,静态变量的存储在内存中都是独立于对象的,也就是Java虚拟机单独为静态变量分配存储空间,所以导致所有的对象内部的静态变量在内存中存储时只有一个空间。这样就导致使用任何一个对象对该值的修改都是使该存储空间中的值发生改变,而其它对象在后续引用时就跟着发生了变化。静态变量就是使用这样的方式在所有的对象之间进行数值共享的。
静态变量在实际使用时,可以通过只存储一次来节约存储空间,这个特性导致在类内部定义的成员常量一般都做成静态的,因为常量的值在每个对象中都是相同的,而且使用static修饰也便于对成员常量的引用。
在类外部访问某类中静态变量(常量)的语法格式为:
类名.成员变量(常量)
例如:
StaticDemo.m
这样方便对于成员变量的访问。当然,语法上也不禁止使用:对象.成员变量,这样的语法格式进行访问,但是一般不推荐这样使用,而且有些类是无法创建对象的。
注意:static关键字不能修饰成员方法或构造方法内部的变量。
8.7.1.2 静态方法
static修饰的方法称作静态方法。静态方法和一般的成员方法相比,不同的地方有两个:一是调用起来比较方便,二是静态方法内部只能使用静态的成员变量。所以一般静态方法都是类内部的独立的功能方法。例如为了方便方法的调用,Java API中的Math类中所有的方法都是静态的,而一般类内部的static方法也是方便其它类对该方法的调用。
示例代码如下:
//文件名MyMath.java
public class MyMath{
public static int max(int a,int b){
return (a > b ? a : b);
}
}
//文件名TestMyMath.java
public class TestMyMath{
public static void main(String[] args){
int m = 10;
int n = 20;
int k = MyMath.max(m,n);
}
}
静态方法在类的外部进行调用时不需要创建对象,使用类名.方法名(参数)这样的语法格式进行调研,简化了代码的编写。
使用静态方法时,需要特别注意的是静态方法内部使用该类的非静态成员变量,否则将出现语法错误。
静态方法是类内部的一类特殊方法,只有在需要时才将对应的方法声明成静态的,一个类内部的方法一般都是非静态的。
8.7.1.3 静态代码块
静态代码块指位于类声明的内部,方法和构造方法的外部,使用static修饰的代码块。静态代码块在该类第一次被使用时执行一次,以后再也不执行。在实际的代码中,如果需要对类进行初始化的代码,可以写在静态代码块的内部。
示例代码如下:
//文件名StaticBlock.java
public class StaticBlock{
static{
System.out.println(“静态代码块!”);
}
}
静态代码块是一种特殊的语法,熟悉该语法的特点,在实际程序中根据需要使用。
发表评论
-
Java编程那些事儿37—for语句语法
2008-06-17 11:53 732Java编程那些事儿37—for语句语法 郑州游戏学院 陈跃 ... -
Java编程那些事儿38—break和continue语句
2008-06-18 15:01 782Java编程那些事儿38—break和continue语句 ... -
Java编程那些事儿39—流程控制综合示例1
2008-06-19 12:30 797Java编程那些事儿39—流程控制综合示例1 郑州游戏学院陈 ... -
Java编程那些事儿40—流程控制综合示例2
2008-06-19 20:23 893Java编程那些事儿40—流程控制综合示例2 郑州游戏学院陈 ... -
Java编程那些事儿41—流程控制综合示例3
2008-06-20 18:06 703<meta http-equiv="Conte ... -
Java编程那些事儿42—流程控制综合练习
2008-06-20 22:13 810Java编程那些事儿42—流程控制综合练习 郑州游戏学院 陈 ... -
Java编程那些事儿57—面向对象基础
2008-07-28 14:15 777Java编程那些事儿57—面向对象基础 郑州游戏学院 陈跃峰 ... -
Java编程那些事儿58—类(一)
2008-07-29 11:05 712Java编程那些事儿58—类(一) 郑州游戏学院 陈跃峰 ... -
Java编程那些事儿59——类(二)
2008-08-04 23:36 697Java编程那些事儿59——类(二) 郑州游戏学院 陈跃峰 ... -
Java编程那些事儿60——对象
2008-08-18 23:49 633Java编程那些事儿60—— ... -
Java编程那些事儿61—面向对象设计方法和面向对象特性(一)
2008-08-29 21:42 756Java编程那些事儿61—面向对象设计方法 郑州游戏学院 陈 ... -
Java编程那些事儿62——继承(二)
2008-09-08 12:11 820Java编程那些事儿62——继承(二) 郑州游戏学院 ... -
Java编程那些事儿63—多态性
2008-09-27 10:31 753Java编程那些事儿63—多态性 郑州游戏学院 陈跃峰 出 ... -
Java编程那些事儿64——访问控制符、修饰符和其它关键字
2008-10-14 14:12 798<meta http-equiv="Conte ... -
Java编程那些事儿66——final修饰符
2008-11-11 17:19 730Java编程那些事儿66——f ... -
Java编程那些事儿67——this和super
2008-11-12 12:25 969Java编程那些事儿67——this和super 陈跃峰 ... -
Java编程那些事儿68——抽象类和接口(一)
2008-12-22 11:31 758Java编程那些事儿68—— ... -
Java编程那些事儿69——抽象类和接口(二)
2008-12-27 16:25 980Java编程那些事儿69——抽象类和接口(二) 陈跃峰 ... -
Java编程那些事儿70——抽象类和接口(三)
2009-01-05 14:20 1192Java编程那些事儿70—— ... -
Java编程那些事儿71——内部类简介
2009-01-06 09:32 773Java编程那些事儿71—— ...
相关推荐
在Java编程语言中,权限修饰符用于控制类、方法、变量等成员的访问级别。这有助于提高代码的安全性和封装性。本文将详细探讨Java中的五种权限修饰符:`public`、`protected`、`default`(也称为包访问权限)、`...
Java 修饰符使用整理 Java 修饰符是 Java 语言中的一种基本语法元素,用于控制访问权限、继承关系、抽象类和静态成员变量等方面。Java 修饰符可以分为两大类:访问修饰符和非访问修饰符。访问修饰符包括 public、...
Java 访问修饰符是 Java 编程语言中的一种重要机制,它控制着类、方法和变量的访问权限。访问修饰符可以分为四种:public、protected、private 和缺省(无访问修饰符)。 public 访问修饰符 public 访问修饰符是最...
Java 编程语言的核心结构和控制修饰符是学习和理解Java程序设计的关键部分。下面将详细阐述这些概念。 首先,让我们关注控制修饰符。在Java中,这些修饰符用于定义类、变量、方法和构造器的访问级别和特性。表5.1列...
Java作为一门广泛使用的编程语言,拥有丰富的语法结构和关键字,其中修饰词(modifiers)是Java语言中的重要组成部分,用于限定类、方法、字段等的访问级别、生命周期以及特性。以下是对Java中11个修饰词的详细介绍...
在Java编程语言中,修饰符是用来限制或指定代码元素(如类、方法、变量)的访问权限、特性或行为的关键词。以下是对标题和描述中提及的Java修饰符及其相关知识点的详细介绍: 1. 类的访问控制修饰符: - **public*...
《Java编程那些事儿》是陈跃峰先生的一本关于Java编程技术的著作,虽然在网络上可能难以找到完整的电子版,但通过你提供的文件名列表,我们可以梳理出一系列关键知识点,这些都是学习Java编程过程中不可或缺的部分。...
Java修饰符是编程中至关重要的概念,它们用于定义类、接口、变量和方法的访问权限、行为和特性。本文将详细介绍Java中常见的修饰符及其用途。 1. **类的修饰符** - **public**: 公共访问控制符,允许任何地方的...
java 访问权限修饰符详解 在 Java 语言中,访问权限修饰符是指用来限定类、成员变量和方法的可访问范围的关键字。访问权限修饰符分为四种:public、protected、friendly 和 private。每种修饰符都有其特定的访问...
Java编程思想中的“Operators”部分主要讲解了Java中的运算符以及如何使用内置文档(javadoc)来维护代码的注释。以下是对这些知识点的详细解释: 1. **内置文档(javadoc)**: - 为何需要:javadoc是为了方便...
在Java编程语言中,`static`关键字是一个非常重要的修饰符,它有多种用途,但最常见的是用来修饰类的方法和变量。在这个主题中,我们将深入探讨`static`修饰方法的概念、作用以及它如何影响Java程序的执行。 首先,...
### Java编程那些事儿 #### 序言 《Java编程那些事儿》是一本旨在帮助Java初学者快速入门并掌握Java编程技巧的书籍。本书由陈跃峰老师撰写,并由云低夕落人归进行整理,最终形成PDF版本上传至CSDN。 #### 程序设计...
Java语言中的修饰符是编程语法中的重要组成部分,它们用于定义类、接口、变量和方法的特性,从而控制访问权限、实现抽象概念、确保不可变性以及优化代码结构。本章将详细阐述Java中的主要修饰符。 首先,我们讨论...
在Java编程中,修饰符(Modifiers)扮演着至关重要的角色,它们用于控制类、方法、变量等元素的可见性和行为。Java提供了两种主要类型的修饰符:访问控制修饰符和非访问控制修饰符。本文将深入探讨Java的访问控制...
Java作为一种广泛使用的面向对象编程语言,其丰富的修饰符机制为程序设计提供了灵活性和控制力。本文旨在全面剖析Java中的修饰符,包括它们的特点、用法以及如何在不同场景下正确应用,帮助开发者更深入地理解Java的...
根据 JAVA 访问修饰符的特性和使用范围,我们可以将其分为三类:修饰符类的访问修饰符、属性的访问修饰符和方法的修饰符。 一、修饰符类的访问修饰符 修饰符类的访问修飾符共有四种:默认、public、abstract 和...
在Java编程语言中,访问修饰符是用来控制类、接口、字段和方法的可访问性的关键字。Java提供了四种访问修饰符:public、protected、default(无修饰符)和private。了解这些修饰符及其关系对于编写清晰、安全的代码...
### Java软件开发实战:Java基础与案例开发详解之Static修饰符 #### 6.5 Static修饰符 在Java中,`static`关键字用于声明与类而不是与实例相关的变量、方法或代码块。这一特性使得静态成员能够被类本身直接访问,...
Java是一种面向对象的编程语言,其中修饰符和访问修饰符是控制代码访问权限和行为的重要元素。本篇文章将详细介绍Java中的各种修饰符和访问修饰符。 1. **类的访问修饰符** - `public`:任何类都可以访问声明为`...
在Java编程中,`protected`和`static`是两个非常重要的修饰符,它们分别控制着类成员的访问权限和静态属性的行为。本文将详细阐述这两个关键字的作用,帮助初学者更好地理解和运用。 首先,我们来讨论`protected`...