网站首页 > 技术文章 正文
static关键字
- 静态的意思,可以修饰成员变量和成员方法
- 修饰成员变量表示该变量只在内存中存储一份,可以被共享访问、修改
- 静态访问只能访问静态成员,不能直接访问实例成员
- 实例方法可以访问静态成员,也可以访问实例成员
- 静态方法中不能出this关键字
// 静态成员变量
public class StaticDemo1 {
public static void main(String[] args) {
// 访问静态成员变量1
System.out.println(User.onlineNumber);
// 访问静态成员变量2, 不推荐
User u = new User();
System.out.println(u.onlineNumber);
// 访问实例成员变量
System.out.println(u.age);
}
}
class User {
public static int onlineNumber = 100;
public int age = 18; // 一般用private修饰
}
-----------------------------------------------------------------------
// 静态成员方法
public class StaticDemo2 {
private String name;
// 静态成员方法
public static void getAge(int a) {
System.out.println(a);
}
// 实例成员方法
public void getName() {
System.out.println(name);
}
public static void main(String[] args) {
// 类名. 访问静态成员方法
StaticDemo2.getAge(10);
// 同一类中直接静态成员方法名访问
getAge(11);
// 实例成员方法访问
StaticDemo2 s = new StaticDemo2();
s.name = "实例成员方法访问";
s.getName();
}
}
代码块
- 在类下,使用{}括起来的代码被称为代码块
- 静态代码块
① static{}
② 属于类,与类一起优先加载一次,自动触发执行
③ 作用:初始化静态资源
public class StaticDemo3 {
public static String name;
// 静态代码块
static {
System.out.println("触发静态资源");
// 可以用于初始化静态资源
name = "初始化静态资源";
}
public static void main(String[] args) {
System.out.println("main执行");
System.out.println(name);
}
}
- 构造器(实例)代码块
① {},一般不用
② 每次创建对象,调用构造器执行时,都会优先执行该代码块,并在构造器执行前执行
③ 初始化实例资源
public class StaticDemo4 {
public static String name;
// 实例代码块
{
System.out.println("实例代码块执行1");
}
// 无参构造器
public StaticDemo4() {
System.out.println("无参构造器执行2");
}
public static void main(String[] args) {
// 先执行实例代码块 再执行无参构造器
StaticDemo4 s = new StaticDemo4();
}
}
设计模式-单例
- 什么是设计模式:多种解决方案中,最优的方案被认总结出来,称为设计模式
- 单例:只有一个实例
- 饿汉单例
① 在用类获取对象时,对象已经提前创建好了
② 提供可访问对象
/**
* 饿汉单例
*
*/
public class SingleInstance {
// 构造器私有
private SingleInstance() {
}
// 提供访问对象
public static SingleInstance instance = new SingleInstance();
}
- 懒汉单例
① 在真正需要用的时候,才去创建对象
② 提供一个方法,返回一个单例对象
/**
* 懒汉单例
*
*/
public class SingleInstance1 {
// 构造器私有
private SingleInstance1() {
}
// 静态成员变量
private static SingleInstance1 instance;
// 提供方法,返回对象
public static SingleInstance1 getInstance() {
if(instance == null) {
instance = new SingleInstance1();
}
return instance;
}
}
猜你喜欢
- 2024-09-26 代码区、常量区、静态区(全局区)、堆区、栈区不得不了解
- 2024-09-26 “静态”之静——深入解析C++中的static关键字
- 2024-09-26 java基础3种变量类型(详解、区别)
- 2024-09-26 Java static关键字你了解多少?(java中static关键字有什么作用)
- 2024-09-26 再也不要说不知道static了(ip route-static命令详解)
- 2024-09-26 夯实基础:详解static关键字和5类场景应用
- 2024-09-26 Java学习:static 关键字概述(static关键字的作用 java)
- 2024-09-26 Java基础:static关键字作用总结(javastatic关键字详解)
- 2024-09-26 JAVA 泛型中的通配符 T,E,K,V,?你都弄懂了吗?我都总结在这
- 2024-09-26 static 关键字有什么作用(static关键字有几种用法)
- 1514℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 573℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 513℃MySQL service启动脚本浅析(r12笔记第59天)
- 486℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 486℃启用MySQL查询缓存(mysql8.0查询缓存)
- 469℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 449℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 446℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (83)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)