首页
TVP 最新优惠活动
学习
活动
专区
工具
返回腾讯云官网
之前学习了Java的抽象和封装,接下来继续研究Java的高级功能,即面向对象编程的进阶功能。 本文先讲解Java语言基于面向对象原理给出的第一个关键字——static,给之后写Java继承、多态打好基础。
static在英文中是“静态”的意思。
在Java中,将static列为一个关键字,用来修饰类层次的成员,被所有对象共享。
即在装入类之后,可以直接通过类名访问,不需要再new一个对象出来。
static在Java中,主要有这三种用法:
在编写Java程序时,被static修饰的成员变量也叫做静态成员变量。
当JVM虚拟机在加载类中就创建了该变量。该变量在内存中只有一份,被所有对象所共享。
创建一个类,该类中有一个静态变量code,用static关键字修饰
package cn.zwz.entity;
public class ParameterSetting {
public static String code = "ZWZ";
}
然后创建一个测试类,从中调用该参数
package cn.zwz;
import cn.zwz.entity.ParameterSetting;
public class Main {
public static void main(String[] args) {
System.out.println(ParameterSetting.code);
}
}
输出:
ZWZ
Process finished with exit code 0
即 ParameterSetting 对象中的code变量,被所有对象所共享,不用创建对象,就可以通过类名访问。
而且不能通过this来访问该变量,由此推断出没有this指针。
通常来讲,用static关键字修饰的变量称为静态成员变量,而不用static关键字修饰的变量叫做实例变量。
实例变量需要用户创建对象后再调用。
比如我们创建一个实例变量code:
package cn.zwz.entity;
public class ParameterSetting {
public String code = "ZWZ";
}
在测试类中,我们需要先创建对象,才能调用
package cn.zwz;
import cn.zwz.entity.ParameterSetting;
public class Main {
public static void main(String[] args) {
ParameterSetting parameterSetting = new ParameterSetting();
System.out.println(parameterSetting.code);
}
}
Java的实例变量,每创建一次对象,都会新建一份内容,即每个对象都拥有一份内存空间。
类变量必须唯一,而实例变量来说,类所实例化的不同对象,都可以拥有不同的值。
用static关键字修饰的方法称为静态方法。和静态成员变量一样,不能使用this指针,而且不能类的实例变量和实例方法。
比如在类中创建一个add静态方法,可以被静态的main方法所调用。
package cn.zwz;
public class Main {
public static int add(int a,int b) {
return a + b;
}
public static void main(String[] args) {
add(1,2);
}
}
如果add不为静态方法,则不允许,IDE会提示错误信息。
静态方法支持访问类的静态变量和静态方法
package cn.zwz.entity;
public class ParameterSetting {
public static String code = "ZWZ";
public static int add(int a,int b) {
return a + b;
}
}
测试类
import cn.zwz.entity.ParameterSetting;
public class Main {
public static void main(String[] args) {
System.out.println(ParameterSetting.add(1,2));
System.out.println(ParameterSetting.code);
}
}
在Java的类中,支持包含static修饰的代码块。
这段代码块属于公共的部门,不属于任何方法,即静态代码块。
在加载类中,JVM会执行这些静态代码块。
这些代码块会按照代码的顺序依次执行,但只会被执行一次,所以有很多适用的场景。
静态代码块类似静态方法,没有this指针,不能访问类的实例变量和实例方法,必须要先创建对象。
静态代码块最常用的场景,就是初始化类变量
package cn.zwz.entity;
public class ParameterSetting {
public static String code = "ZWZ";
static {
System.out.println("ParameterSetting 类加载了");
}
}
测试类
package cn.zwz;
import cn.zwz.entity.ParameterSetting;
public class Main {
public static void main(String[] args) {
System.out.println(ParameterSetting.code);
}
}
输出
ParameterSetting 类加载了
3
ZWZ
本文分享自 作者个人站点/博客 前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!
玻璃钢生产厂家浙江欧式玻璃钢雕塑市场四平人物玻璃钢雕塑公园景观玻璃钢雕塑定制厂家黄山夏季商场美陈合肥玻璃钢雕塑工厂七台河校园玻璃钢雕塑安装稷山玻璃钢花盆花器德州动物玻璃钢雕塑厂家丰县玻璃钢造型雕塑玻璃钢雕塑头像动漫玻璃钢鹿雕塑怎么选安庆创意玻璃钢雕塑玻璃钢雕塑设计哪里买邵阳玻璃钢马雕塑淮南水果玻璃钢雕塑玻璃钢胡萝卜雕塑商场美陈8周年玻璃钢雕塑凳子多少钱一平方兴宁玻璃钢花盆花器西安玻璃钢基督教雕塑河南玻璃钢卡通雕塑制作流程云南玻璃钢雕塑的设计哪家好广州玻璃钢小品雕塑供应商通道商场美陈批发东莞广场玻璃钢雕塑金门玻璃钢花盆花器大悦城玻璃钢雕塑艺术家定制商场中秋美陈方案北京大型商场美陈哪里有陕西个性化玻璃钢雕塑生产厂家香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万