static:(静态修饰符)面向对象中static修饰的内容是隶属于类,而不是直接隶属于对象的,所以static修饰的成员变量一般称作类成员变量,而static修饰的方法一般称作类方法。
分类:
1、static变量,也叫作静态变量或者类变量。另一种是没有被static修饰的变量,叫实例变量。
2、static方法,也叫作静态方法或者类方法,静态方法中不能定义静态变量,实例方法也不能。
3、static代码块,静态块中,可以访问静态变量,调用静态方法。
注意事项:
1、static不依附于任何对象,就没有this方法。
2、static方法不可以调用非static方法,但非static方法可以调用static方法。
3、被static修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。
4、static方法不能被重写,当子类与父类中同时存在一样的static方法时,默认调用的是父类的静态方法,子类的静态方法就被隐藏了。
5、static块一般用于初始化类中的静态变量。在先执行static修饰的内容基础上,遵循先定义先执行的原则。
6、如果变量或方法经常被调用的话,就使用static修饰。否则少用,避免造成内存泄漏。
静态变量的代码例子:
|
1
2
3
4
5
6
7
8
9
10
|
public class Test{
static int a=1; //静态变量
int b=2; //实例变量
public static void main(String[] args){
System.out.println(Test.a); //System.out.print(a);
System.out.println(b); //直接输出变量b会报错
Test t=new Test(); //创建实例对象
System.out.println(t.b); //对象调用变量
}
}
|
静态方法的代码例子:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
public class Test{
static int a=1; //静态变量
int b=2; //实例变量
static void A(){ //静态方法
B(); //报错,静态方法不可以调用非静态方法
System.out.println(Test.a); //System.out.print(a);
}
void B(){ //非静态方法
Test.A(); //A();非静态方法可以调用静态方法
System.out.println(b);
System.out.println(Test.a); //System.out.print(a);
}
public static void main(String[] args){
Test.A(); //A();
B(); //报错,非静态方法需要通过实例对象进行调用
Test t=new Test();
t.B();
}
}
/*
* 是否能被重写
*/
class StaticSon extends Test{ //子类继承父类
void A(){ //报错,父类的静态方法不能被重写
/*......*/
}
static void A(){ //这是子类的静态方法,严格来说并不是重写父类的静态方法
}
}
|
静态块的代码例子:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public class Test{
int c=3;
static int a=1;
static int b=2;
static{
a=10;
b=20;
c=30; //报错,静态块里的变量必须是静态变量
System.out.println(a+b);
}
public static void main(String[] args){
Test t=new Test();
System.out.println(t.c); //先执行静态变量,再执行实例变量
}
}
|
final:理解为不可变的。
注意事项:
1、final与static经常放在一起使用。
2、final修饰的变量,只能进行一次赋值操作。
3、final方法不能被重写,但可以被重载。
4、final类不能被继承。
5、final和abstract这两个关键字是相反的,不可能同时修饰类。因为final不能被重写,而abstract又必须重写。
6、final关键字不同于finally关键字,后者用于异常处理。
7、大多数情况下,并不用final来修饰方法和类,因为其可拓展性不好。
8、final在一定的环境下使用,可以提高程序的运行性能,优化程序的结构。
final变量与final类的代码例子:
|
1
2
3
4
5
6
7
8
9
|
public final class Test{
final static int a=1;
|
final方法的代码例子:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public class Test{
final static int a=1;
final void A(){ //final方法
System.out.println(a);
}
}
class FinalTest extends Test{
void A(){ //报错,final方法不能被重写
System.out.println("err");
}
}
final abstract class FinalErr{ //final和abstract不能同时存在
/*......*/
}
|
原文链接:https://www.idaobin.com/archives/533.html
相关文章
- ASP.NET自助建站系统中的用户注册和登录功能定制方法 2025-06-10
- ASP.NET自助建站系统的域名绑定与解析教程 2025-06-10
- 个人服务器网站搭建:如何选择合适的服务器提供商? 2025-06-10
- ASP.NET自助建站系统中如何实现多语言支持? 2025-06-10
- 64M VPS建站:如何选择最适合的网站建设平台? 2025-06-10
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
-
2025-05-25 39
-
2025-06-04 100
-
2025-05-29 105
-
2025-05-27 25

