当前位置: 首页 > news >正文

java基础-关键字:static、单例模式

1.例如:我们创造一个人的类,我们希望他是中国人类,所以我们希望所有对象都共有中国人的属性;

import org.w3c.dom.ls.LSOutput;import java.sql.Connection;
import java.sql.SQLOutput;
import java.util.Arrays;public class Main {public static void main(String[] args) {Chinese c1 = new Chinese(25, "zhangsan");Chinese c2 = new Chinese(30, "lisi");c1.nation = "Chinese";System.out.println(c2.nation);}
}
class Chinese{public Chinese(int age, String name){this.age = age;this.name = name;}int age;String name;static String nation;
}

2.static可以修饰:

属性、方法、代码块、内部类;

(1)static修饰属性:多个对象共用一个,修改一个,会导致其他对象的该属性改变

说明:

①静态变量随着类的加载而加载,可以通过“类.静态变量”的方式调用;

②静态变量的加载早于对象的创建

③由于类只会加载一次,所以内存中只存在一份静态变量,存在于方法区的静态域中;

(2)static修饰方法:

①随着类的加载而加载,可以通过“类.静态方法”的方式进行调用;

②静态方法中,只能调用静态的属性和方法;

非静态方法中,都行;

3.注意点:静态方法中,不能使用this、super关键字;

开发中:一般工具类中的方法会声明为static方法;

4.单例设计模式:

单例模式分为两类:

饿汉式:

class Bank{private Bank(){}private static Bank b1 = new Bank();public static Bank getBank(){return b1;}}

懒汉式:

import org.w3c.dom.ls.LSOutput;import java.sql.Connection;
import java.sql.SQLOutput;
import java.util.Arrays;public class Main {public static void main(String[] args) {}
}
class Order{private Order(){}private static Order o1 = null;public static Order getOrder(){if(o1 == null){o1  = new Order();return o1;}else {return o1;}}}

两种方式的对比:

饿汉式:

坏处:加载对象时间过长

好处:线程安全

懒汉式:

坏处:线程不安全;

单例模式的优点:

由于单例模式只产生一个实例,减少了系统性能开销,当一个对象产生需要比较多资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时产生一个单例对象,然后永久驻留内存的方式来解决;

5.代码块:

作用:初始化类、对象

修饰符:static

分为静态代码块和非静态代码块:

(1)静态:随着类的加载而执行,只会执行一次;初始化类的信息;静态代码块中只能调用静态属性和方法;同时多个,则按顺序执行

(2)非静态:随着对象的创建而执行;每创建一次就执行一次,可以对对象的属性进行初始化

import org.w3c.dom.ls.LSOutput;import java.sql.Connection;
import java.sql.SQLOutput;
import java.util.Arrays;public class Main {public static void main(String[] args) {String s1 = Person.desc;}
}
class Person{String name;int age;static String desc = "我是一个人";public Person(){}public Person(String name, int age){this.name = name;this.age = age;}public void eat(){System.out.println("吃饭");}static {System.out.println("hello, static block");}{System.out.println("hello, block");}}

会触发静态代码块运行;

import org.w3c.dom.ls.LSOutput;import java.sql.Connection;
import java.sql.SQLOutput;
import java.util.Arrays;public class Main {public static void main(String[] args) {Person p1 = new Person();}
}
class Person{String name;int age;static String desc = "我是一个人";public Person(){}public Person(String name, int age){this.name = name;this.age = age;}public void eat(){System.out.println("吃饭");}static {System.out.println("hello, static block");}{System.out.println("hello, block");}}

会同时触发两个代码块;

import org.w3c.dom.ls.LSOutput;import java.sql.Connection;
import java.sql.SQLOutput;
import java.util.Arrays;public class Main {public static void main(String[] args) {Person p1 = new Person();System.out.println(Person.desc);}
}
class Person{String name;int age;static String desc = "我是一个人";public Person(){}public Person(String name, int age){this.name = name;this.age = age;}public void eat(){System.out.println("吃饭");}static {System.out.println("hello, static block");desc = "我是静态";}{System.out.println("hello, block");}}

6.对对象可以赋值的位置:

(1)默认初始化

(2)显式赋值/代码块中赋值

(3)构造器赋值

(4)调用赋值

顺序:1-2-3-4

7.关键词final:最终的:

可以修饰的结构:类、方法、变量

(1)修饰类:不能被继承

(2)修饰方法:不能被重写

(3)修饰变量:此时的变量就称为一个常量:

①修饰属性:赋值位置:显式、构造器、代码块

②修饰局部变量:尤其形参时,在方法体内不能对形参重新赋值;

相关文章:

  • QPS与TPS区分及压测指标解读
  • 渗透测试核心技术:漏洞挖掘与利用
  • ai agent(智能体)开发 python高级应用8:crawl4ai 对用 LLMExtractionStrategy 和 python的 re 如何选择
  • 存储地图上的各种形状的文件格式.SHP文件介绍
  • python学习day2(未写完,明天继续补充)
  • AI大模型:技术演进、核心原理与产业解析
  • AutoMouser - 单次AI调用铸就高效自动化脚本
  • Xshell实战:远程连接VMware CentOS7虚拟机与高效运维指南——从零配置到自动化操作,解锁Xshell的核心价值
  • 湖北理元理律师事务所观察:债务服务中的“倾听者价值”
  • 系统架构设计-案例分析总结
  • 人工智能、机器学习与深度学习:全面介绍与对比分析
  • 【Unity 2023 新版InputSystem系统】新版InputSystem 如何进行人物移动(包括配置、代码详细实现过程)
  • Financing | 巴菲特查理芒格投资理念
  • Windows环境安装LibreOffice实现word转pdf
  • 设备数据看板助力自动化工厂实现生产智能精细化管理
  • 通用简洁工作汇报项目评估营销策划工作总结年终汇报PPT模版8套一组分享
  • VAPO:视觉-语言对齐预训练(对象级语义)详解
  • Visual Studio构建三剑客:生成/重新生成/清理解决方案的正确打开方式
  • 项目记录:「五秒反应挑战」小游戏的开发全过程
  • 在嵌入式系统中, 一般链路层断开多久,断开TCP为好
  • 交通运输局男子与两名女子办婚礼?官方通报:未登记结婚,开除该男子
  • 上海浦江游览南拓新航线首航,途经前滩、世博文化公园等景点
  • 上海这个咖啡文化节首次“走出去”,率本土品牌亮相英国伦敦
  • 全国游泳冠军赛:孙杨、潘展乐同进400自决赛,今晚将正面对决
  • 国际乒联主席索林:洛杉矶奥运会增设混团是里程碑事件
  • 嫩黑线货物列车脱轨致1名路外人员死亡,3人被采取刑事强制措施