static:

static 静态
变量分类:
1.实例(成员)变量:属于对象的,有几个对象就有多少份,没有用static修饰的变 量, 都是实例变量.
2.静态变量:属于类的变量,只有一份,且被所有对象所共享的.
静态变量:
1.用static修饰的变量 就是静态变量,属于类的.
2.存储的位置是在方法区中.
3.如何用,通过类名打点调用.

内存管理:
JVM 进行管理分配:
1.栈区: 局部变量 ​
2.堆区: new 出来的对象(实例变量) ​
3.方法区: 用来加载类的.class 字节码文件 (静态的变量 / 类的方法) 只会被加载一次

package oo.day04;
/***静态的使用演示demo* */public class StaticDemo {public static void main(String[] args) {Eoo e = new Eoo();//创建Eoo对象e.show();e.show();Eoo e1 = new Eoo();//创建Eoo对象e1.show();Eoo e2 = new Eoo();//创建Eoo对象e2.show();}
}
class Eoo{int a;//实例变量 属于对象的    通过对象访问static int b;//静态变量 属于类的   通过类名打点访问Eoo(){//构造方法a++;b++;}void show(){System.out.println("实例变量a的值为:"+a+"  静态变量b的值:"+b);}
}

静态适用性:当所有对象需要共享一份数据时,例如(图片),就可以将对应图片类型做成静态的.
静态修饰的方法:
1.用static修饰的方法 则为静态方法
2.存在方法区中
3.通过类名打点去访问
4.静态方法中,是没有隐式的this传递的,所以我们在静态方法中无法访问实例成 员(实例变量/方法).
静态方法在开发的过程中,当做一些工具方法的时候,一般都会将当前方法做成静态方法,目的就是方便调用.
//静态方法的测试

class Foo{int a;//实例变量static int b;//静态变量void test(){//实例(普通)方法System.out.println(a);//隐式的this 来进行调用System.out.println(b);//隐式的写法 类名进行调用}static void fun(){ //静态方法:加了static 的方法 没有隐式this的内容了//静态方法无法访问实例的成员(变量/方法)
//        System.out.println(a);因为静态方法没有this 所以就无法访问实例的成员System.out.println(Foo.b);
//        test();静态方法无法访问实例的成员(变量/方法)}
​
}

静态代码块: { } 代码块的意思

1.由static 修饰代码块 称之为静态代码块.
2.静态代码块属于类的,类被加载的时候会自动执行,优先执行静态代码块,在执行对象的构造方法,静态代码块只会被执行一次(因为类只会被加载一次).
package oo.day04;

/**

  • 静态代码块的使用演示:
    */
public class StaticDemo2 {public static void main(String[] args) {//下面这行代码运行时所做的事情//1.先将Goo类的.class文件加载到方法区中,并自动执行静态代码块//2.创建Goo类的对象到堆区//3.调用Goo的无参构造方法Goo g = new Goo();//下面这行代码运行时所做的事情   注意:类只会在首次使用时加载一次!//创建Goo类的对象到堆区//调用Goo的无参构造方法Goo g1 = new Goo();}
}
​
class Goo {static int a;//静态变量int b;//实例变量Goo() {//构造方法b = 20;System.out.println("b的值初始化为:" + b);}static { //静态代码块  类被加载时执行 且只执行一次
//        this.b = 10; 静态代码块无法访问实例成员a = 10;System.out.println("a的值初始化为:" + a);}
​
}

思考?

**我们深海杀手这个项目,会存在很多个对象,举例 侦察潜艇,如果每个侦察潜艇都需要图片,这个如果设计为实例变量,那么假设1000个侦察潜艇对象,那么图片则存在1000份. 但是1000个图片都是一样的,所以我们可以将这个图片的变量设计为静态变量,那么这样 所有对象则可共享这一份图片,节省内存!

设计:项目中所需要的图片都需要进行初始化,那么需要单独的创建一个类来进行图片相关内容的处理, 类的单一职责.**

package cn.aries.submarine;
​
import javax.swing.*;
​
/*** 图片类:主要负责项目图片资源加载的类*/
public class Images {public static ImageIcon battleship;//静态的图片类型----战舰public static ImageIcon bomb; //深水炸弹图片public static ImageIcon gameover;//游戏结束图片public static ImageIcon mine;//水雷图片public static ImageIcon minesubm;//水雷潜艇图片public static ImageIcon obsersubm;//侦查潜艇图片public static ImageIcon sea;//海洋图片public static ImageIcon start;//开始图片public static ImageIcon torpedo;//鱼雷图片public static ImageIcon torpesubm;//鱼雷潜艇图片static { //静态代码块     初始化图片battleship = new ImageIcon("img/battleship.png");bomb = new ImageIcon("img/bomb.png");gameover = new ImageIcon("img/gameover.png");mine = new ImageIcon("img/mine.png");minesubm = new ImageIcon("img/minesubm.png");obsersubm = new ImageIcon("img/obsersubm.png");sea = new ImageIcon("img/sea.png");start = new ImageIcon("img/start.png");torpedo = new ImageIcon("img/torpedo.png");torpesubm = new ImageIcon("img/torpesubm.png");}public static void main(String[] args) {//测试信息 都是 8 说明没有问题System.out.println(battleship.getImageLoadStatus());System.out.println(bomb.getImageLoadStatus());System.out.println(gameover.getImageLoadStatus());System.out.println(mine.getImageLoadStatus());System.out.println(minesubm.getImageLoadStatus());System.out.println(obsersubm.getImageLoadStatus());System.out.println(sea.getImageLoadStatus());System.out.println(start.getImageLoadStatus());System.out.println(torpedo.getImageLoadStatus());System.out.println(torpesubm.getImageLoadStatus());
​}
​
}
​

静态的使用---static相关推荐

  1. Java 静态变量,静态方法,静态常量(java static 关键字)

    Java 静态变量,静态方法,静态常量  就是变量 ,方法,常量前面添加了static 关键字 为什么要使用静态的呢 有时候在处理问题时会需要两个类在同一个内存区域共享一个数据, 不如现在 Main ...

  2. JVM—堆栈 堆 方法区 静态区 final static 内存分配

    原文作者:一夜丶鱼龙舞 原文地址:JAVA 堆栈 堆 方法区 静态区 final static 内存分配 详解(转) 一.栈(stack)和堆(heap) (1)内存分配的策略 按照编译原理的观点,程 ...

  3. C语言中变量的静态分配(Static)和动态分配(StackHeap)

    目录 C语言中变量的静态分配(Static)和动态分配(Stack&Heap) 变量的静态分配 包含了哪些变量? 全局变量和局部变量(staic关键字) 通过一个例子进行诠释 变量的动态分配 ...

  4. 静态检测工具STATIC以及静态分析的必要性

    这一篇向大家介绍的是我司静态检测工具STATIC以及静态分析的必要性.欢迎各位技术大牛发表自己的看法呀! 正常运行的软件就是完美的软件吗? 下图是漫威电影<黑豹>中给小编留下很深印象的场面 ...

  5. 记录vue-cli2打包项目静态文件夹static到七牛云存储上,并使用七牛云融合cdn的过程

    前言:vue-cli2打包项目静态文件夹static到七牛云存储上,并使用七牛云融合cdn 1.前期准备 npm install --save jsonfile jsonfile扩展说明文档 npm ...

  6. 静态局部变量和静态全程变量static。

    1. 什么是static? static 是 C/C++ 中很常用的修饰符,它被用来控制变量的存储方式和可见性. 1.1 static 的引入 我们知道在函数内部定义的变量,当程序执行到它的定义处时, ...

  7. 静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?

    答: Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化.而通常的内部类需要在外部类实例化后才能实例化,其语法看起来挺诡异的,如下所示. / ...

  8. Java 中静态代码块 static的作用及用法

    java静态代码块的作用: Java静态代码块中的代码会在类加载JVM时运行,且只被执行一次,也就是说这些代码不需要实例化类就能够被调用.一般情况下,如果有些代码必须在项目启动的时候就执行的时候,就需 ...

  9. 内部类不能有静态变量(除静态的对Static的理解)

    关于内部类(static与final) Static 不用实例化就能加载进内存 而内部类需要外部类实例化后才能加载进内存.这就间接造成static需要实例化了.与static不需要实例化语义矛盾 1. ...

  10. [转载] JAVA 堆栈 堆 方法区 静态区 final static 内存分配 详解

    参考链接: 在Java中为静态最终static final变量分配值 转载来源:https://blog.csdn.net/peterwin1987/article/details/7571808 J ...

最新文章

  1. C++中的this指针
  2. 83. Leetcode 148. 排序链表 (排序)
  3. Oracle中通过Job实现定时同步两个数据表之间的数据
  4. java代码测试---插入排序和选择排序
  5. Split Temporary Variable(分解临时变量)
  6. 揭秘在召唤师峡谷中移动路径选择逻辑?
  7. silverlight经典案例
  8. python xpath循环_Python爬虫 爬取北京二手房数据
  9. android动态添加圆,Android开发中TextView 实现右上角跟随文本动态追加圆形红点
  10. 升级python到2.7版本pip不可用
  11. 90天吃透阿里P8推荐的625页Java编程兵书pdf,直接入职阿里定级P6
  12. python图形界面实践_python开发利器之ulipad的使用实践
  13. 串口软件与uPs测试,智能化UPS的软件设计及串口通信实现
  14. CATIA软件常见问题解答
  15. 数控电机反馈线是哪根_驱动?电机?反馈?和人身体动作一样!十图看懂数控机床进给驱动...
  16. 24V600mA限流电路的Pspice仿真实例
  17. html设置word页脚,Word页码从任意页开始如何设置?
  18. linux查ip出现fe80,ubuntu IP出现inet6 addr :fe80::20c:29ff:fe47:fd61/64 scope:l
  19. 按字寻址和按字节寻址
  20. CSDN如何删除上传的资源

热门文章

  1. mv单位是什么意思_mv是什么意思
  2. 天气转凉,一切开始起了变化
  3. 介绍篇 小贷公司 消费金融公司 P2P 助贷具体区别是什么
  4. java线程池面试题有哪些?java线程池常见面试题
  5. DHCP协议详细解析
  6. 荣耀x30i究竟值不值得买?不同角度来说说
  7. Autossh:自动重启ssh sessions和tunnels
  8. 关于微信分享接口开发
  9. python爬虫文本去重_Python微型异步爬虫框架
  10. 解决微信开发者工具报错:当前开发者未绑定此AppID,请到小程序后台操作重试