Java 之 static的使用方法(6)

Java 中的 static 使用之静态变量

大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立。

然而在某些时候,我们更希望该类所有的对象共享同一个成员。此时就是 static 大显身手的时候了!!

Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,

即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。

当然,鉴于他作用的特殊性更推荐用类名访问~~

使用 static 可以修饰变量、方法和代码块。

这里,我们先认识一下静态变量。

例如,我们在类中定义了一个 静态变量 hobby ,操作代码如下所示:

运行结果:

要注意哦:静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直到该类被卸载才会进行资源回收!~~

Java 中的 static 使用之静态方法

与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。

其实之前我们一直写的 main 方法就是静态方法。静态方法的使用如:

运行结果:

需要注意:

1、 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。如:

如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。如:

2、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量,如下所示:

3、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。如:

举个栗子:

 1 public class HelloWorld {
 2
 3     // 定义静态变量score1
 4     static int score1 = 86;
 5     // 定义静态变量score2
 6       static     int score2 = 92;
 7
 8     // 定义静态方法sum,计算成绩总分,并返回总分
 9     public static  int sum() {
10
11       return score2+score1;
12
13     }
14
15     public static void main(String[] args) {
16
17         // 调用静态方法sum并接收返回值
18         int allScore = sum();
19
20         System.out.println("总分:" + allScore);
21     }
22 }

Java 中的 static 使用之静态初始化块

Java 中可以通过初始化块进行数据赋值。如:

在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。

需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。

我们来看一段代码:

运行结果:

通过输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。

由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。

举个栗子:

 1 public class HelloWorld {
 2
 3     String name; // 声明变量name
 4     String sex; // 声明变量sex
 5     static int age;// 声明静态变量age
 6
 7     // 构造方法
 8     public  HelloWorld      () {
 9         System.out.println("通过构造方法初始化name");
10         name = "tom";
11     }
12
13     // 初始化块
14     {
15         System.out.println("通过初始化块初始化sex");
16         sex = "男";
17     }
18
19     // 静态初始化块
20         static    {
21         System.out.println("通过静态初始化块初始化age");
22         age = 20;
23     }
24
25     public void show() {
26         System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);
27     }
28
29     public static void main(String[] args) {
30
31         // 创建对象
32         HelloWorld hello = new HelloWorld();
33         // 调用对象的show方法
34         hello.show();
35
36     }
37 }
38 /*
39 通过静态初始化块初始化age
40 通过初始化块初始化sex
41 通过构造方法初始化name
42 姓名:tom,性别:男,年龄:20
43 */
时间: 2024-10-25 14:02:46

Java 之 static的使用方法(6)的相关文章

java中static变量和方法的总结

转自:http://blog.csdn.net/haobo920/article/details/5921621 java中一切皆是对象 一个类中对象的定义一般都是分一下的两步来进行的:1/    A a;                                     //定义了一个类A的引用2/    a=new A("10","2563");        //真正地建立了对象a,也就是a指向了内存中一块连续的区域 也就是说通常我们说的创建了一个类,只

Java中static方法、程序入口函数main方法的继承问题

对于继承问题,说明如下: 1.若父类中属性或方法使用private修饰,则不能在子类中访问:对于使用protected.default.public修饰的方法或属性,都是可以在子类中访问的. 2.在1中所述的可被子类访问的前提下,对于static修饰的方法或属性,表示该属性或方法是独立于具体的对象事例:它们也都是可以被子类继承的. 3.对于父类中的入口函数(main方法)也是可以被子类继承的.ps:具体的可以使用命令行运行java程序进行验证.

java执行程序的内存分析系列专栏二之static变量和方法内存分析

昨天写了简单的聊了下java执行程序时简单的内存划分,今天我们接着往下聊,聊聊static变量和方法的内存分析. 1.static变量和方法的第一个特性内存分析 statiic变量和方法的第一个特性能通过类名.static变量和类名.static方法的形式调用,而普通只能对象的形式调用.但具体为什么是这样的,这得分析static变量和方法他们在内存中怎样分配的,因此在这里我首先建立一个学生类,里面有一个普通成员变量和一个静态成员变量以及一个普通方法和一个成员方法,然后建立了一个测试学生的类. 1

Java之面向对象概述,类,构造方法,static,主方法,对象

一.面向对象概述 面向过程 "面向过程"(Procedure Oriented)是一种以过程为中心的编程思想.这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响.与面向对象明显的不同就是封装.继承.类. "面向过程"(Procedure Oriented)是一种以过程为中心的编程思想."面向过程"也可称之为"面向记录"编程思想,他们不支持丰富的"面向对象"特性(比如继承.多态),并且它们

转:Java中子类是否可以继承父类的static变量和方法而呈现多态特性

原文地址:Java中子类是否可以继承父类的static变量和方法而呈现多态特性 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,关于static方法,声明为static的方法有以下几条限制: 它们仅能调用其他的static 方法. 它们只能访问static数据. 它们不能以任何方式引用this 或super. 无论是static修饰的变量,还是static修饰的方法,我们都知道他们是属于类本身的,不是属于某一个对象的,当声明一个对象时,并不产生sta

Java知识点整理(9)——static变量和方法

1.在类中,用static变量声明的成员变量叫静态变量,或者叫做类属性.类变量.它为该类的公有变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化. 2.类变量是类的公有变量,属于类,被该类的所有实例共享,当类被载入时显式初始化. 3.可以使用“对象.类属性”来调用.不过,一般都使用“类名.类属性”. 4.static变量置于方法区中. 5.用static声明的方法称为静态方法.不需要对象就可以调用(类名/方法名). 6.static方法只能使用static变量,非static方法可以使

java static 变量,和方法从属于类

第36集 可以用类来直接调用static属性和方法 static方法不能调用非静态的属性和方法,反之可以 new产生的对象,不包括static 属性和方法

java关键字static

static修饰符可以修饰变量.常量.方法和代码块,分别称为静态变量.静态常量.静态方法和静态代码块. 1.static变量 在java中,如果希望某个变量的值能被所有的对象共享,可以将该变量声明为静态变量(也叫类变量).静态变量在类装载时,只分配一块储存空间,所有此类的对象都可以操控此块储存空间,它为所有类实例提供共享的变量.当一个对象将该变量修改后,其他对象再使用该变量将会是改变后的数据.声明静态变量的语法如下: [权限控制符] static 成员变量类型 成员变量名: 访问静态变量的语法如

JAVA中static,this,extends,super,package

static关键字: static可以用来修饰方法和成员变量,由static修饰的成员变量的值在该类所有实例化出的对象中通用 方法:方法分为成员方法(实例方法)和类方法(由static修饰,又叫做静态方法),可以在实例方法中操作静态变量和实例变量,可以在类方法中操作类变量 变量:变量分为成员变量和局部变量(定义在方法,语句中作用范围小),成员变量又分为类成员变量(有static修饰)和和实例成员变量 this关键字: 1.this是当前类的内部对象,所以和类的外部对象(一般来说在new一个新对象