Java关键字介绍之static

1.关键字static(先记住这些,再往下看)

1)静态方法和静态变量是属于某一个类,而不属于类的对象。

2)静态方法和静态变量的引用直接通过类名引用。

3)在静态方法中不能调用非静态的方法和引用非静态的成员变量。反之,则可以。

4)静态变量在某种程序上与其他语言的全局变量相类似,如果不是私有的就可以在类的外部进行访问。

2.何时使用static

在我们创建一个类的实例时(对象),通常使用new方法,这样这个类的数据空间才会被创建,其方法才能被调用。

但是,有时候我们希望一个类虽然可以被创建n个对象(显然这n个对象的数据空间是不相同的),但这n个对象的某些数据是相同的,即不管这个类有多少的实例,这些数据对这些实例而言之有一份内存拷贝(见示例1)。这是静态变量的情形。

另一种情形是,你希望某个方法不与包含它的类的任何对象关联在一起。也就是说,即使没有创建对象,也能够调用这个方法。static 方法的一个重要用法就是在不创建任何对象的前提下,就可以调用它(见示例2)。这是静态方法的情形。

还有一种特殊的用法出现在内部类中,通常一个普通类不允许声明为静态的,只有一个内部类才可以。这时这个声明为静态的内部类可以直接作为一个普通类来使用,而不需实例一个外部类(见示例3)。这是静态类的情形。

示例1

public class TStatic {
static int i;
public TStatic() {
i = 4;
}
public TStatic(int j) {
i = j;
}
public static void main(String args[]) {
System.out.println(TStatic.i);
TStatic t = new TStatic(5); // 声明对象引用,并实例化。此时i=5
System.out.println(t.i);
TStatic tt = new TStatic(); // 声明对象引用,并实例化。此时i=4
System.out.println(t.i);
System.out.println(tt.i);
System.out.println(t.i);
}
}

结果:

0

5

4

4

4

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索对象
, 实例
, 变量
, 静态
, 方法
一个
java static关键字、java中的static关键字、java的static关键字、java中static关键字、static关键字的作用,以便于您获取更多的相关知识。

时间: 2024-08-18 04:31:08

Java关键字介绍之static的相关文章

Java关键字介绍之final

在Java中声明属性.方法和类时,可使用关键字final来修饰.final变量即为常量,只能 赋值一次:final方法不能被子类重写:final类不能被继承. 1.final成员 声明 final 字段有助于优化器作出更好的优化决定,因为如果编译器知道字段的值不会 更改,那么它能安全地在寄存器中高速缓存该值.final 字段还通过让编译器强制该字段为 只读来提供额外的安全级别. 1.1关于final成员赋值 1)在java中,普通变量可默认初始化.但是final类型的变量必须显式地初始化. 2)

Java 语法介绍(一):Java语言的基本组成

Java语言主要由以下五种元素组成:标识符.关键字.文字.运算符和分隔符.这五种元素有着不同的语法含义和组成规则,它们互相配合,共同完成Java语言的语意表达.下面我们分别予以讲解. 1:标识符 变量,类和方法都需要一定的名称,我们将这种名称叫做标识符.Java中对标识符有一定的限制.首先:所有的标识符的首字符必须是字母(大小写).下划线_或美元符¥:其次标示符是由数字(0--9),所有从A--Z的大写字母.a--z的小写字母和下划线_.美元符¥和所有在十六进制0xc0前的ASCII码等构成:第

java关键字(详解)

基本类型 1 boolean 布尔型 2 byte 字节型 3 char 字符型 4 double 双精度 5 float 浮点 6 int 整型 7 long 长整型 8 short 短整型 9 null 空 10 true 真 11 false 假 程序控制语句 1 break 跳出中断 2 continue 继续 3 return 返回 4 do 运行 5 while 循环 6 if 如果 7 else 否则 8 for 循环 9 instanceof 实例 10 switch 观察 11

我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题

1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: [ { id: "NEW2016062800875700", from: "腾讯新闻客户端", qqnews_download_url: "http://inews.qq.com/m?refer=openapi_for_xiaotiancai",

Java 关键字super和this的使用及区别

"this",作为一个特殊的关键字,它的规则如下: 1.可以表示构造函数传递.this(a,b)表示调用另外一个构造函数.这里面的this就是一个特殊语法,不是变量,没有什么类型.  2.可以在一个类的非static成员内部使用,表示当前这个对象.此时,this就是一个final的普通变量,它有静态类型,就是这个类本身:它有动态类型,就是当前这个对象的类型.你可以对它调用成员函数,把它传递给别的函数等. "super"和"this"类似,但是也有

IOS 关键字const 、static、extern详解_IOS

IOS 关键字const .static.extern详细介绍: 一.前言 阅读别人的代码(一些优秀的源码)总能发现一些常见的关键字,随着编程经验的积累大部分还是知道是什么意思的,但在概念上和具体的用法上却依然有些模糊,故特意整理汇总了下三个比较常见的关键字--const/static/extern. 二.关键字const/static/extern的释义和用法 1.const 这个单词翻译成中文是"常量"的意思.在程序中我们知道"常量"的值是不能变的,固定的.所以

java序列化不能序列化static变量吗?为什么?能不能举个例子

问题描述 java序列化不能序列化static变量吗?为什么?能不能举个例子 java序列化不能序列化static变量吗?为什么?能不能举个例子 解决方案 你是怎么"序列化"的?如果你自己反射,并且将静态属性的变量存下来,再恢复,这个当然会改变的.但是直接对对象实例序列化是不包括静态成员的. 解决方案二: static成员不属于对象实例,没办法序列化.因为没办法,就不举例了. 解决方案三: 支持2楼解释..............

C语言中关键字auto、static、register、const、volatile、extern的作用

原文:C语言中关键字auto.static.register.const.volatile.extern的作用 关键字auto.static.register.const.volatile.extern 这些关键词都是c++基础知识,我整理了一下,希望对新学的朋友们有用: (1)auto 这个这个关键字用于声明变量的生存期为自动,即将不在任何类.结构.枚举.联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量.这个关键字不怎么多写,因为所有的变量默认就是auto的. (2)reg

《Java 7程序设计入门经典》一1.15 Java关键字

1.15 Java关键字 目前,Java语言定义了50个关键字,见表1-1.这些关键字,包括运算符和分隔符的语法,形成了Java语言的基础.这些关键字不能用作变量.类.方法的名字. Java保留关键字const和goto,但是不使用它们.在Java发展的早期,还保留其他关键字以便未来使用.但是,现在的Java规范只定义了表1-1中展示的关键字. 除了关键字外,Java还保留了以下名称:true.false和null.这是Java预定义的值.不可以把这些名字用于变量.类等的命名.