Java编程那些事儿65——static修饰符

修饰符的作用是让被修饰的内容具备特定的功能,在程序中合理使用修饰符可以在语法和功能上实现很多需要的效果。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

  

从上面的图可以看出,非静态变量的值在每个对象中都有独立的存储空间,不同对象间这些值之间没有管理,也就是说每个对象都为内部的每个非静态的变量分配独立的存储空间,所以每个对象中非静态变量是隶属于对象,也就是说在每个对象中可能是不同的。

时间: 2024-12-31 21:28:47

Java编程那些事儿65——static修饰符的相关文章

Java编程那些事儿66——final修饰符

8.7.2 final final关键字是最终的.最后的意思,在程序中可以用来修饰类.成员变量和方法的声明,由该关键字修饰的内容都是不可变的. 8.7.2.1 final数据 final修饰的数据是常量,常量既可以出现在类的内部,也可以出现在方法或构造方法的内部.在程序中常量只能赋值一次. 其它说明可以参看前面的常量介绍. 在程序中,一般类内部的成员常量为了方便调用,一般都使用static修饰符进行修饰.示例代码如下: /** * 常量使用 */ public class Student { /

java的单例、static修饰符及static的继承

单例设计模型: static修饰符: ①:static静态只有一份(同一个虚拟机中) (节省资源),类代码被装载内存时,静态代码分配内存,并执行,并且常驻内存. 可参考:类加载顺序 ②:Static修饰成员变量,成为"类变量",属于整个类,类的共享变量.注:不能修饰局部变量.          static是一块为整个类共有一块存储区域,静态变量只有一份,值变化后,所有访问值变化生效.          java中用类名调用static变量和方法(对象调用也可以):类名.变量(方法名)

Java语言入门教程(六):Java语言中的static修饰符

在Java类中,我们常常会看到static关键字,往往被称为静态的.Static修 饰符可以用来修饰数据成员,方法成员,但是不能修饰类(此处指外部类),不 能修饰构造方法.如: package com.csst.vo; public class User { private String name; private static int count; public String getName() { return name; } public void setName(String name)

方法-求问:java里面static修饰符作用

问题描述 求问:java里面static修饰符作用 static作用具体是什么,非static作用又是什么,static修饰方法和属性分别是什么效果,具体点谢谢 解决方案 static 是全局变量, 如 static int c=0; c=c+1; 那么这变量,就是一个全局变量, 每一次改变它都会执行,但是再给它赋值 就会报错 再这样写 c=5; 系统就会报错. 解决方案二: static修饰的成员变量或者成员函数,是直接通过类名来访问的,不需要实例化的. 而非静态的成员方法的访问需要通过实例化

Java编程那些事儿52—方法声明

第七章 方法 方法(method),在面向过程的语言中称作函数(function),在汇编语言中称作子程序,是一个代码功能块,实现某个特定的功能.在实际的程序开发中,方法是一种基础的组织代码的方式.本部分就介绍方法相关的概念.相关语法以及实际使用时需要注意的问题. 7.1 方法概述 方法的概念来源于数学上的函数,在数学中,当数据具有一定的规律时,就是用一个函数来代码该数字的规律,例如f(n)=n则代表1.2.3.--这样的一个数列.在数学上n是参数,对于确定的n值只有一个f(n)的值和它对应.

JAVA 入坑教程 | 章节四 修饰符

Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 例子 public class className { // ... } private boolean myFlag; static final double weeks = 9.5; protected static final int BOXWIDTH = 42; public static void main(String[] arguments) { // 方法体 } 修饰符 当前类 同一包内 子孙类 其他包

Java编程那些事儿71——内部类简介

8.10 内部类(Inner Class) 内部类是Java语言中的一种特殊的语法,简单的来说,就是在一个类的内部再声明一个类,这些声明在类内部的类就被称作内部类.在实际声明时,内部类可以声明在类的内部.类的方法内部,也可以声明在类的构造方法内部,内部类声明的语法格式和一般类的声明一样,只是内部类声明时可以使用static修饰符进行修饰. 对于内部类的相关使用,本部分不做深入的介绍,只是进行简单的说明,辅助建立内部类的概念,能够进行一些基本的使用. 下面是一个简单的内部类的示例代码: /** *

Java编程那些事儿54—方法调用

7.4 方法调用 方法声明是创建一个新的功能,声明出来的方法在需要的时候可以通过调用执行该方法的功能,方法只有被调用才能被执行. 在Java程序中有一个基本的main方法,其方法声明如下: public static void main(String[] args) 该方法包含在开始的代码框架中,这是一个特殊的方法.Java语法规定,J2SE的代码都从该方法开始执行,如果一个代码中没有main方法,则该代码不能被直接运行.所以main方法也称作J2SE程序的入口方法,在运行程序时,自动调用对应代

Java编程那些事儿25—位运算符

4.5 二进制运算符 由于计算机内部的数据都以二进制的形式存在,所以在Java语言中提供了直接操作二进制的运算符,这就是下面要讲解的位运算符和移位运算符. 使用二进制的运算符,可以直接在二进制的基础上对数字进行操作,执行的效率比一般的数学运算符高的多,该类运算符大量适用于网络编程.硬件编程等领域. 二进制运算符在数学上的意义比较有限. 在Java代码中,直接书写和输出的数值默认是十进制,Java代码中无法直接书写二进制数值,但是可以书写八进制和十六进制数字,八进制以数字0开头,例如016,十六进