Java基础语法 - 面向对象 - static 关键字
使用static关键字修饰的变量、常量和方法分别被称作静态变量、静态常量和静态方法,也被称作类的静态成员
静态变量
使用static修饰过的类变量称为静态变量
该变量需要使用类名.变量名进行调用,不能使用对象名/this进行调用
在类方法中不能定义与静态变量同名的局部变量
 package mingri.chapter_6;
 public class Pool {
     public static int water = 0;    // 定义一个静态变量
     public void outlet() {
         // String water = "";   // 在类方法中,不能定义与静态变量同名的变量名
         if (water >= 2) {       // 在类方法中不能使用 this.water 进行调用,只能使用变量名进行调用
             water -= 2;
         } else {
             water = 0;
         }
     }
     public void inlet() {
         water += 3;
     }
     public static void main(String[] args) {
         Pool pool = new Pool();
         System.out.println("水池的水量:" + Pool.water);  // 只能通过类名.静态变量名进行访问
         pool.inlet();
         pool.inlet();
         System.out.println("水池的水量:" + Pool.water);
         System.out.println("水池放水一次");
         pool.outlet();
         System.out.println("水池的水量:" + Pool.water);
     }
 }
静态方法
静态方法与静态变量类似,使用类名.静态方法名即可调用
 package mingri.chapter_6;
 public class Pool2 {
     // 定义静态变量
     public static int water = 0;
     // 定义静态方法
     public static void outlet() {
         if (water > 2) {
             water -= 2;
         } else {
             water = 0;
         }
     }
     // 定义静态方法
     public static void inlet() {
         water += 3;
     }
     public static void main(String[] args) {
         System.out.println("水池的水量:" + Pool2.water);     // 调用静态变量
         System.out.println("水池注水两次。");
         Pool2.inlet();      // 调用静态方法
         Pool2.inlet();
         System.out.println("水池的水量:" + Pool2.water);    // 调用静态变量
         System.out.println("水池放水一次。");
         Pool2.outlet();     // 调用静态方法
         System.out.println("水池的水量:" + Pool2.water);     // 调用静态变量
     }
 }
静态代码块
在类的成员方法之外,用static修饰代码区域可以称之为静态代码块。定义一块静态代码块,可以完成类的初始化操作,在类声明时就会运行
语法如下:
 package mingri.chapter_6;
 public class StaticTest {
     // 静态代码块
     static {
         System.out.println("静态代码块");
     }
     public static void main(String[] args) {
         StaticTest st;
         System.out.println("main主方法");
     }
 }
代码块的执行顺序
 package mingri.chapter_6;
 public class StaticTest {
     static String name;
     // 静态代码块
     static {
         System.out.println(name + "静态代码块");
     }
     public StaticTest(String str){
         name = str;
         System.out.println(name + "构造方法");
     }
     public void method() {
         System.out.println(name + "成员方法");
     }
     public static void main(String[] args) {
         StaticTest s1;      // 声明变量的时候就已经运行静态代码块了
         StaticTest s2 = new StaticTest("s2");
         StaticTest s3 = new StaticTest("s3");
         s3.method();
         System.out.println("main主方法");
     }
 }
 /*
 * 输出结果
     null静态代码块
     s2构造方法
     s3构造方法
     s3成员方法
     main主方法
 * */
Java基础语法 - 面向对象 - static 关键字的更多相关文章
- Java基础语法 - 面向对象 - this 关键字
		
在Java语言中规定使用this关键字来代表本类对象的引用,this关键字被隐式地用于引用对象的成员变量和方法. this关键字引用的就是本类的一个对象,在局部变量或方法参数覆盖了成员变量时,就要添加 ...
 - java基础学习总结——static关键字
		
一.static关键字
 - Java基础——final、static关键字
		
final关键字是最终的意思,可以修饰成员方法.成员变量.类 特点: 1.修饰方法:表示该方法是最终方法,不能被重写 2.修饰变量:表示变量是常量,不能再次被赋值 3.修饰类:表示类是最终类,不能被继 ...
 - Java基础语法 - 面向对象 - 类的主方法main方法
		
主方法是类的入口点,它指定了程序从何处开始,提供对程序流向的控制.Java编译器通过主方法来执行程序. 主方法的语法如下: /* a.主方法是静态的,如果要直接在主方法中调用其它方法,则该方法必须也是 ...
 - Java基础语法 - 面向对象 - 局部变量
		
如果在一个成员方法内定义一个变量,那么这个变量就被称为局部变量. 局部变量在方法执行时被创建,在方法执行结束时被销毁.局部变量在使用时必须进行赋值操作或被初始化,否则会出现编译错误 package m ...
 - Java基础语法:static修饰符
		
一.静态变量 描述: 在类中,使用'static'修饰的成员变量,就是静态变量,反之为非静态变量. 区别: 静态变量属于类的,可以使用类名来访问:非静态变量是属于对象的,必须使用对象来访问. 静态变量 ...
 - Java基础语法(11)-面向对象之关键字
		
title: Java基础语法(11)-面向对象之关键字 blog: CSDN data: Java学习路线及视频 1.this this是什么 它在方法内部使用,即这个方法所属对象的引用: clas ...
 - Java基础语法(9)-面向对象之类的成员
		
title: Java基础语法(9)-面向对象之类的成员 blog: CSDN data: Java学习路线及视频 1.面向对象特征--封装 为什么需要封装?封装的作用和含义? 我要用洗衣机,只需要按 ...
 - Java基础语法(10)-面向对象之三大特征
		
title: Java基础语法(9)-面向对象之类的成员 blog: CSDN data: Java学习路线及视频 1.面向对象特征--封装 为什么需要封装?封装的作用和含义? 我要用洗衣机,只需要按 ...
 
随机推荐
- javascript跨域訪问探索之旅
			
需求: 近期工作负责一个互联网应用A(我公司应用)与还有一个互联网应用B进行通讯.通讯的方式是这种:还有一个互联网应用某些表单信息须要从我公司的互联网应用获取.首先用户訪问互联网应用B ...
 - 深度CTR预估模型中的特征自动组合机制演化简史 zz
			
众所周知,深度学习在计算机视觉.语音识别.自然语言处理等领域最先取得突破并成为主流方法.但是,深度学习为什么是在这些领域而不是其他领域最先成功呢?我想一个原因就是图像.语音.文本数据在空间和时间上具有 ...
 - PHP 时间与日期
			
PHP提供了大量的内置函数,使开发者在时间的处理上游刃有余,大大提高了工作效率. 介绍一些常见的PHP日期和时间函数以及日期和时间的处理. 经常使用的日期和时间处理函数 函 数 说 明 checkd ...
 - [Java Web]Hibernate基础总结(四)
			
性能优化 在大数据量遍历时(比如查找消息敏感词),须要手动使用clear方法释放缓存中的数据,防止缓存中数据过多浪费内存. 1+N问题:将Fetch设为LAZY能够在须要时才发出sql语句,或者设置B ...
 - MVC & Entity Framework(2)- controller、Models单独DLL
			
继上一篇MVC & Entity Framework(1)- 开发环境之后,已经很久没更新了.接下来记录一下怎么把MVC中的controller单独拆为一个类库,然后在web项目中引用.另外, ...
 - Android Studio怎样查看branch列表及切换branch
			
针对Android Studio的系列文章,都是一个小问题为一篇,并没有整理到一起,主要是方便大家依据自己的须要来查找,同一时候为了便于大家理解,都会直接上图. 我这里使用的版本号控制工具是git,由 ...
 - 在Windows下使用nmake+Makefile+编译ZThread库(附例子)
			
----------2015/01/09/23:21更新----------------------------------- 关于保留DEBUG信息的一个简单例子,见这篇随笔 ----------2 ...
 - Linux平台使用Freetds连接SQL Server服务器,兼容PHP和Laravel
			
本文在CentOS 7 64bit和Laravel 4.2环境测试通过. 1.下载源码并解压缩 wget ftp://ftp.freetds.org/pub/freetds/stable/free ...
 - 快使用阿里云的maven仓库
			
自从开源中国的maven仓库挂了之后就一直在用国外的仓库,慢得想要砸电脑的心都有了.如果你和我一样受够了国外maven仓库的龟速下载?快试试阿里云提供的maven仓库,从此不在浪费生命…… 仓库地址: ...
 - input取值
			
----------------------------1------------------------------ <span class="lv-a-right" id ...