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) {

              this.name = name;

       }

       public static int getCount() {

              return count;

       }

       public static void main(String[] args){

              User user1=new User();

              User user2=new User();

              user1.setName("Rose");

              user2.setName("Kate");

              user1.count=10;

              user2.count=20;

              System.out.println ("user1.name:"+user1.getName()+"  user2.name:"+user2.getName());

              System.out.println ("user1.count:"+User.getCount() +"user2.count:"+user2.count);

       }
}

该程序运行结果为:

user1.name:Rose user2.name:Kate

user1.count:20 user2.count:20 

我们可以发现,user1和user2的name属性是不同的,分别为该对象调用 setName所指定的,而虽然user1和user2分别对count属性指定了不同的值,但是 最终输出的count值却均为20。原因就是count被static修饰,而name没有使用 count修饰。

被static修饰符修饰的数据成员或方法成员被称为静态成员,或者类成员, 没有被static修饰的,被称为实例成员。static成员只被初始化一次,所有的对 象共享,因此count会输出两个20。实例成员只有当初始化对象的时候才初始化 ,每次创建对象,都会被初始化一次。name在user1和user2被创建时,初始化了 2次,因此最终输出的是Rose和Kate。

另外,static成员,由于是类共享的,所以不仅可以使用对象调用,也可以 使用类名调用。在static方法中,不能够直接使用非静态的成员,如果使用,必 须初始化对象,调用。如过在上面示例的User.java中有如下代码,会发生编译 错误。

public static void test(){

       setName("test");

}

可以修改如下:

public static void test(){

              User user=new User();

              user.setName("test");

}

千万不要盲目的把成员声明为static,一定要理解static成员的特点,否则 会造成虽然语法正确,但是逻辑错误的后果。

时间: 2025-01-21 09:02:55

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

Java语言入门教程(七):Java类中的各种数据

本文是Java教程之Java类中的各种数据部分. 按照数据声明的位置,Java类可以分为两类,声明位置的不同,作用域就有所不同. 1.数据成员:在类体中声明的数据,称为数据成员. 2.局部变量:在方法中声明的数据,称为局部变量,也称为本地变量,方法变量,自 动变量.局部变量只能在该方法中使用. 如下例所示: package com.csst.test; public class TestData { /** * @param args */ //1.数据成员 private int x; pri

Java语言入门教程(十六):Java语言中的接口

通过前面几篇文章的学习,初学者可以初步掌握Java语言中继承的概念和使 用方法,对抽象类的使用也有一定的理解.值得注意的是,Java中类与类的继承 是单继承,也就是一个子类最多同时可以继承一个父类.那么让我们看下面的例 子. 假设我们要开发一个游戏系统,而游戏系统中有三种飞行器:飞机.小鸟. 蜘蛛侠.这三种飞行器都需要实现起飞,飞行,降落的逻辑,但是实现方法各不 相同.那么这三个类应该有一个抽象类作为父类,规范共同行为. package com.csst.inter; public abstra

Java语言入门教程(十二):Java语言中继承之基本概念

从教程(十)开始,已经从学习单个类的基本语法,转到了学习多个类之间 的关系.教程(十)中,学习了类与类长间的两种关系,关联和依赖.为了维护 1对多的关系,在教程(十一)中,学习了数组.除了关联和依赖,类与类还有 一种非常重要且常见的关系,就是继承.本文将介绍继承的概念.作用.使用场 景等. 假设有这样一个简单需求(其实谈不上是需求,仅仅为了初学者容易理解而 编造):某培训中心要开发一个内部员工管理系统.该培训中心目前有两个部门 ,技术资源部和业务部.技术资源部的员工负责讲课,称为讲师.业务部员工

Java语言入门教程(九):Java语言中的值传递

在第八篇博文中,介绍了编写方法体必须了解的基本知识点,初学者已经可 以自己写简单的例子进行练习.在练习过程中,我们不可能把所有的代码都放在 main方法中,Java类一定会有或多或少的方法成员,调用这些方法将是必要的步 骤.而调用方法成员时,如果该方法有参数,就必须要传递实际参数给方法的形 式参数.所以了解Java语言中的值传递是非常必要的. Java中的数据类型分两种,基本数据类型和引用类型.所以本文中也将分别 对这两种数据类型的值传递特征进行介绍. 1.基本数据类型的值传递:基本数据类型传递

Java语言入门教程(十三):Java语言中继承中的构造方法问题

教程(十一)中,了解了Java语言中继承的基本概念.Java中类与类的继承 ,是单继承,主要目的是复用.子类对象可以复用父类中权限允许的属性和方法 ,所以子类的构造方法和父类的构造方法之间,有一定的调用关系,本文中将进 行详细介绍. 首先,需要记住一个事实:子类的任何一个构造方法,都将先调用父类某个 构造方法.如子类Trainer中的构造方法: public Trainer() { } 虽然这个构造方法的方法体中什么代码也没有写,但是也调用了父类 Employee的构造方法,默认调用的是Empl

Java语言入门教程(十一):Java语言中的数组

在教程(十)中,我们学习了Java类之间常见的两种关系,即关联和依赖. 如果A关联或依赖B,如果仅从A到B这个方向看,从数量上,可能有1对1和1对多 两种可能.面向对象的应用,都是映射现实世界的对象以及对象之间的关系的, 仔细考察一下我们身边的情况,对象与对象之间如果存在关联或依赖,其实1对 多的关系更为常见.如,一个部门有多个员工,一个学员有多个院系,一个人有 多张毕业证书- 上篇文章中的例子,学生只能选择一门免费课程学习,如果培训中心加大优 惠力度,每个学生最多可以选择3门课程学习,应该如何

Java语言入门教程(十):Java语言中的关联与依赖关系

在开始本文的学习前,先总结一下已经学习过的内容.在前面9篇文章中,主 要是介绍Java类中的基本语法,是按照先概括,再具体的循序渐进的方式进行的 .先介绍了Java类的主要组成部分:数据成员,方法成员,构造方法.然后对一 些通用的知识点进行了较详细介绍,如权限访问修饰符,包,静态修饰符,数据 类型等.了解了这些通用的知识点后,对于类的三个组成部分分别详细介绍,如 介绍了类中各种数据的相关问题,介绍了构造方法的相关问题,介绍了方法会使 用到的操作符,流程控制,以及调用方法会使用到的值传递等知识点.

Java语言入门教程(三):Java语言的访问权限修饰符

上篇文章中,提到了Java类需要打包,打包后可以进行访问权限控制.本文 中,将对Java语言中的访问权限修饰符,进行简单介绍. 一个Java应用有很多类,但是有些类,并不希望被其他类使用.每个类中都 有数据成员和方法成员,但是并不是每个数据和方法,都允许在其他类中调用. 如何能做到访问控制呢?就需要使用访问权限修饰符. Java语言中的访问权限修饰符有4种,但是仅有3个关键字,因为不写访问权 限,在Java中被称为默认权限,或同包权限,本文中以(default)代替.下面 按照权限从小到大的顺序

Java语言入门教程(五):Java语言中的构造方法

通过以上4篇文章的介绍,已经了解了Java类的组成,Java语言中的包,权限 访问修饰符,数据类型这些基本概念.Java是面向对象的语言,运行期,就是若 干个对象彼此交互,彼此发送消息的过程.对于初学者来说,首先就要了解有了 Java类,如何创建对象. 如果有一个名字为Customer的类,那么要创建该类的对象,必须使用new关键 字调用构造方法.比如,Customer类会有以下3个构造方法: public Customer() { } public Customer(String custna