黑马程序员——Java 基础:静态
来源:互联网 发布:编程怎么能学好 编辑:程序博客网 时间:2024/05/19 18:47
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
一、概述
在 Java 中用 static 关键字修饰的变量、方法、代码块等称为静态变量、静态方法、静态代码块等,这些内容都有其特定的应用,以及不同于非静态的内存使用方式。
二、静态的应用
(1)静态变量
在一个类中,如果将其成员变量定义为静态变量,意味着其他类中的方法中可以直接通过“类名.变量名”的格式访问该变量,而不必在创建类的对象后通过对象访问该变量。
// 在类中定义一个静态成员变量,并在其他类中直接通过类名访问该变量class StaticDemo1 { static String name = "张三"; int age = 30; void show () { System.out.println(name); }}class Demo { public static void main (String[] args) { String name = StaticDemo1.name; System.out.println(name); int age = new StaticDemo1().age; System.out.println(age); }}
在上面的示例中,Demo 类中的主方法可以通过类名直接访问 StaticDemo1 类中的静态变量,而要访问非静态变量,而要创建对象,然后通过对象访问。这是因为用 static 关键字修饰的变量在创建类的实例化对象之前,就已经随着类一起进入到内存中,而非静态变量只有在创建了类的实例化对象之后才会在内存中。而且在内存中创建的对象中不包含静态变量,因此可以将类中不会改变的、所有对象之间相同的成员变量定义为静态变量。
(2)静态方法
用 static 关键字修饰的方法是静态方法,静态方法的调用方式和内存使用方式与静态变量类似,也可以通过类名调用类中的静态方法。
// 在类中定义一个静态方法,并在其他类中直接通过类名调用该方法class StaticDemo2 { static String name = "张三"; int age = 30; static void show () { System.out.println(name); }}class Demo { public static void main (String[] args) { StaticDemo2.show(); }}
需要注意的是,如果将一个方法定义为静态,那么它就只能访问静态的变量,而不能访问非静态的变量。
(3) 静态代码块
// 在类中包含一段静态代码块,并在其他类中直接通过类名调用类中的静态变量class StaticDemo3 { static String name = "张三"; static { System.out.println("静态代码块"); }}class Demo { public static void main (String[] args) { int name = StaticDemo3.name; }}
在上面的例子中,static {…} 的部分就是静态代码块,静态代码块会随着类进入内存而执行,因此在 Demo 类的主函数中,虽然没有建立 StaticDemo3 类的对象,而只是通过类名访问了静态变量,静态代码块的中的打印语句也会执行,因为静态代码块具有这一特性,因此其可以用于类的初始化。
- 黑马程序员——Java 基础:静态
- 黑马程序员——java基础之this与静态
- 黑马程序员——JAVA基础之主函数main和静态static,静态代码块
- 黑马程序员—JAVA基础
- 黑马程序员—Java基础
- 黑马程序员—静态
- 黑马程序员——Java基础---静态变量与实例变量的区别
- 黑马程序员——Java基础---静态代码块和构造方法执行顺序
- 黑马程序员——Java基础---- 数组(静态初始化_常见问题)(04)
- 黑马程序员<java基础<静态与非静态>>
- 黑马程序员—Java基础:初识Java
- 黑马程序员——基础加强---静态导入
- 黑马程序员——java编程基础
- 黑马程序员——Java编程基础
- 黑马程序员——java编程基础
- 黑马程序员——JAVA基础编程
- 黑马程序员——java基础
- 黑马程序员——java基础概述
- cocos2d-x-3.5 android 编译
- 网站字体渲染过程
- Spring MVC静态资源处理——<mvc:resources /> ||<mvc:default-servlet-handler />
- PPT基础与进阶
- ftp 上传 文件 下载文件
- 黑马程序员——Java 基础:静态
- 迅雷是怎么下载的
- 单次遍历,等概率随机选取问题
- c++学习笔记(九):运算符重载进阶
- 功能测试
- 各种排序算法稳定性的总结!!!
- Maven学习札记
- oVirt介绍及安装记录
- golang cpuprofile分析