静态的使用---static
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相关推荐
- Java 静态变量,静态方法,静态常量(java static 关键字)
Java 静态变量,静态方法,静态常量 就是变量 ,方法,常量前面添加了static 关键字 为什么要使用静态的呢 有时候在处理问题时会需要两个类在同一个内存区域共享一个数据, 不如现在 Main ...
- JVM—堆栈 堆 方法区 静态区 final static 内存分配
原文作者:一夜丶鱼龙舞 原文地址:JAVA 堆栈 堆 方法区 静态区 final static 内存分配 详解(转) 一.栈(stack)和堆(heap) (1)内存分配的策略 按照编译原理的观点,程 ...
- C语言中变量的静态分配(Static)和动态分配(StackHeap)
目录 C语言中变量的静态分配(Static)和动态分配(Stack&Heap) 变量的静态分配 包含了哪些变量? 全局变量和局部变量(staic关键字) 通过一个例子进行诠释 变量的动态分配 ...
- 静态检测工具STATIC以及静态分析的必要性
这一篇向大家介绍的是我司静态检测工具STATIC以及静态分析的必要性.欢迎各位技术大牛发表自己的看法呀! 正常运行的软件就是完美的软件吗? 下图是漫威电影<黑豹>中给小编留下很深印象的场面 ...
- 记录vue-cli2打包项目静态文件夹static到七牛云存储上,并使用七牛云融合cdn的过程
前言:vue-cli2打包项目静态文件夹static到七牛云存储上,并使用七牛云融合cdn 1.前期准备 npm install --save jsonfile jsonfile扩展说明文档 npm ...
- 静态局部变量和静态全程变量static。
1. 什么是static? static 是 C/C++ 中很常用的修饰符,它被用来控制变量的存储方式和可见性. 1.1 static 的引入 我们知道在函数内部定义的变量,当程序执行到它的定义处时, ...
- 静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?
答: Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化.而通常的内部类需要在外部类实例化后才能实例化,其语法看起来挺诡异的,如下所示. / ...
- Java 中静态代码块 static的作用及用法
java静态代码块的作用: Java静态代码块中的代码会在类加载JVM时运行,且只被执行一次,也就是说这些代码不需要实例化类就能够被调用.一般情况下,如果有些代码必须在项目启动的时候就执行的时候,就需 ...
- 内部类不能有静态变量(除静态的对Static的理解)
关于内部类(static与final) Static 不用实例化就能加载进内存 而内部类需要外部类实例化后才能加载进内存.这就间接造成static需要实例化了.与static不需要实例化语义矛盾 1. ...
- [转载] JAVA 堆栈 堆 方法区 静态区 final static 内存分配 详解
参考链接: 在Java中为静态最终static final变量分配值 转载来源:https://blog.csdn.net/peterwin1987/article/details/7571808 J ...
最新文章
- C++中的this指针
- 83. Leetcode 148. 排序链表 (排序)
- Oracle中通过Job实现定时同步两个数据表之间的数据
- java代码测试---插入排序和选择排序
- Split Temporary Variable(分解临时变量)
- 揭秘在召唤师峡谷中移动路径选择逻辑?
- silverlight经典案例
- python xpath循环_Python爬虫 爬取北京二手房数据
- android动态添加圆,Android开发中TextView 实现右上角跟随文本动态追加圆形红点
- 升级python到2.7版本pip不可用
- 90天吃透阿里P8推荐的625页Java编程兵书pdf,直接入职阿里定级P6
- python图形界面实践_python开发利器之ulipad的使用实践
- 串口软件与uPs测试,智能化UPS的软件设计及串口通信实现
- CATIA软件常见问题解答
- 数控电机反馈线是哪根_驱动?电机?反馈?和人身体动作一样!十图看懂数控机床进给驱动...
- 24V600mA限流电路的Pspice仿真实例
- html设置word页脚,Word页码从任意页开始如何设置?
- linux查ip出现fe80,ubuntu IP出现inet6 addr :fe80::20c:29ff:fe47:fd61/64 scope:l
- 按字寻址和按字节寻址
- CSDN如何删除上传的资源