Java static 关键字

本文介绍 Java static 关键字的用法和注意点:

1. 使用 static 声明属性——即 static 声明全局属性

2. 使用 static 声明方法——即通过类名直接调用 static 方法

注意点:

使用 static 方法的时候,只能访问 static 声明的属性和方法,而非 static 声明的方法和属性是不能访问的。

我们使用如下代码声明三个对象,并且相应的进行赋值:

package hello;

class People2{
	String name;
	int age;
	public People2(String name){
		this.name = name;
	}
	public void tell(){
		System.out.println("姓名:" + name + " 姓名: " + age);
	}
}

public class DemoStatic {

	public static void main(String[] args) {
		People2 p1 = new People2("张三");
		p1.age = 24;
		p1.tell();
		People2 p2 = new People2("李四");
		p2.age = 24;
		p2.tell();
		People2 p3 = new People2("王五");
		p3.age = 24;
		p3.tell();
	}

}

 我们发现,三个人的『年龄』都是 24 岁,重复定义了三次,那么有没有简单的方法来定义三个人的『年龄』都是 24 呢?使用 static 关键字即可,

代码如下:

package hello;

class People2{
	String name;
	static int age;
	public People2(String name){
		this.name = name;
	}
	public void tell(){
		System.out.println("姓名:" + name + " 姓名: " + age);
	}
}

public class DemoStatic {

	public static void main(String[] args) {
		People2.age = 24;
		People2 p1 = new People2("张三");
		p1.tell();
		People2 p2 = new People2("李四");
		p2.tell();
		People2 p3 = new People2("王五");
		p3.tell();
	}

}

程序输出:

姓名:张三 姓名: 24
姓名:李四 姓名: 24
姓名:王五 姓名: 24

通过 static 关键字,声明了全局属性 —— age,并且在 main 函数的一开始就对其进行了赋值操作 : People2.age = 24

这里需要注意的是,在对 static 属性进行赋值时,直接对类名(People2)进行赋值即可,否则会报警告。

接下来,我们还可以通过 private 对 age 属性进行封装,代码如下:

package hello;

class People2{
	String name;
	private static int age;
	public People2(String name){
		this.name = name;
	}
	public void tell(){
		System.out.println("姓名:" + name + " 姓名: " + age);
	}
	public static int getAge() {
		return age;
	}
	public static void setAge(int age) {
		People2.age = age;
	}

}

public class DemoStatic {

	public static void main(String[] args) {
		People2.setAge(24);
		People2 p1 = new People2("张三");
		p1.tell();
		People2 p2 = new People2("李四");
		p2.tell();
		People2 p3 = new People2("王五");
		p3.tell();
	}

}

 也可以完成相同的效果。

"

使用 static 方法的时候,只能访问 static 声明的属性和方法,而非 static 声明的方法和属性是不能访问的。

"

又如何理解?

代码如下:

package hello;

public class StaticDemo {
	static int age = 24;
	public static void main(String[] args) {
		System.out.println(age);
		tell();
	}

	public static void tell(){
		System.out.println("Hello");
	}

}

  

可以看出,

1. 在 StaticDemo 中的 main 函数,只能调用定义为 static 的方法 (static void tell)

2. 在 StaticDemo 中的 main 函数,只能调用定义为 static 的属性 (static int age)

时间: 2024-12-25 02:09:54

Java static 关键字的相关文章

Java Static关键字之小程序

对于学习static我们先来看两个例子: 1 public class Cat { 2 private static int sid = 0; 3 private String name; 4 int id; 5 Cat(String name) { 6 this.name = name; 7 id = sid++; 8 } 9 public void info(){ 10 System.out.println 11 ("My name is "+name+" No.&quo

[java]static关键字的四种用法

在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们先来了解一下static关键字及其用法. static关键字 1.修饰成员变量 在我们平时的使用当中,static最常用的功能就是修饰类的属性和方法,让他们成为类的成员属性和方法,我们通常将用static修饰的成员称为类成员或者静态成员,这句话挺起来都点奇怪,其实这是相对于对象的属性和方法来说的.请看下面的例子:(未避

详解Java Static关键字

提起static关键字,相信大家绝对不会陌生,但是,想要完全说明白,猛的一想,发现自己好像又说不太明白... ...比方说,昨天被一个同学问起的时候... ... 当然,不是所有人都像我一样学艺不精的,但是像这样的基础不牢的人应该不少,因为常用,所以用大家都会,但是谈到精细之处都够呛.这篇博客是我翻出我原来的学习笔记再加上自己看的一些博客整理出来的,供基础知识不怎么牢靠的同学参考参考. 1. static 关键字要解决的问题 这里摘录一下<Java编程思想(第四版)>里关于static关键字的

Java static关键字的重新思考

上完Java课,虽然也写了不少的Java代码,但是一直有不少的疑惑,而static关键字一直困惑着我很久,今天无意探究竟,上知乎再仔细查了一下,发现了这个话题的优秀答案https://www.zhihu.com/question/36615154 这篇文章彻底把我之前对static的理解概念土崩瓦解,看来我还是低估了设计语言大师的智慧,老以为非静态声明函数会造成实例化多个实例时会造成内存空间的浪费,实际上每个实例里面的函数方法在实例的内存区域中仅仅只有个引用而已,并且此引用指向了该函数方法的内存

java — Static关键字

static 来修饰方法 : 有点类似OC中的类方法 : 1.只能用类名来调用 2.类中是不允许访问属性. 1. 访问方式: 1.可以通过对象来访问 对象.方法名(); 2.可以通过类名来访问 类.方法名();   推荐使用类名调用. 2. 作用: 1.用来修饰成员变量 2.用来修饰方法 3. Static修饰方法的使用注意点: 1.静态方法可以用对象和类名调用.非静态方法只能用对象来调用. 2.静态方法是可以访问静态的成员变量,不能够访问非静态的成员变 量.非静态方法中可以访问任何成员变量.

四. Java继承和多态7. Java static关键字

static 修饰符能够与变量.方法一起使用,表示是"静态"的. 静态变量和静态方法能够通过类名来访问,不需要创建一个类的对象来访问该类的静态成员,所以static修饰的成员又称作类变量和类方法.静态变量与实例变量不同,实例变量总是通过对象来访问,因为它们的值在对象和对象之间有所不同. 请看下面的例子: public class Demo { static int i = 10; int j; Demo() { this.j = 20; } public static void mai

9.Java static关键字以及Java静态变量和静态方法

static 修饰符能够与变量.方法一起使用,表示是“静态”的. 静态变量和静态方法能够通过类名来访问,不需要创建一个类的对象来访问该类的静态成员,所以static修饰的成员又称作类变量和类方法.静态变量与实例变量不同,实例变量总是通过对象来访问,因为它们的值在对象和对象之间有所不同. 请看下面的例子: public class Demo { static int i = 10; int j; Demo() { this.j = 20; } public static void main(Str

《java基础知识》Java static关键字以及Java静态变量和静态方法

static 修饰符能够与变量.方法一起使用,表示是“静态”的. 静态变量和静态方法能够通过类名来访问,不需要创建一个类的对象来访问该类的静态成员,所以static修饰的成员又称作类变量和类方法.静态变量与实例变量不同,实例变量总是通过对象来访问,因为它们的值在对象和对象之间有所不同. 请看下面的例子: public final class Demo { static int i = 10; int j; Demo() { this.j = 20; } public static void ma

JAVA static关键字

static 修饰变量: 作用:用static修饰符修饰的域变量不属于任何一个类的具体对象,而专属于类. 特点:它被保存在类的内存区中(堆中)的公共存储单元中,而不是保存在某个对象的内存区中,因此,一个类的任何对象访问它时,存取到的都是相同的数值. 访问:类名.属性   或者   对象.属性 示例: 1 public class CountObjects { 2 private static int i = 0; 3 4 CountObjects() { 5 i++; 6 } 7 8 publi