网站建设实验报告总结/长沙市网站制作
Static
static 的中文意思是"静态",它可以修饰成员变量、成员方法
1. Static 修饰成员变量
- static 修饰的成员变量,也称之为"类变量"
- 类变量它是属于类的,与类一起加载,在内存中只有一份,会被类的所有对象共享
- 无 static 修饰的成员变量,称之为 " 实例变量 (对象变量) "
- 实例变量 (对象变量) 是属于对象的,每个对象中都有一份
public class HelloWorld {public static void main(String[] args) {Human.name = "人类"; // 直接通过 "类名.类变量名" 的方式来访问(推荐此方法)Human obj = new Human();obj.name = "人才"; // 也可以通过 "对象.类变量名" 的方式访问,但是不推荐此方法!}
}class Human {// 类变量static String name;// 实例变量(对象的变量)int age;
}
2. 类变量的使用场景
在开发中,如果某个数据只需要一份,且希望能够被共享 (访问、修改),则该数据可以定义成类变量来记住。
import java.util.ArrayList;public class HelloWorld {public static void main(String[] args) {// 创建一个集合,用来存放对象ArrayList list = new ArrayList();System.out.println(Human.number); // 0for (int i = 0; i < 5; i++) {Human obj = new Human();list.add(obj);}System.out.println(Human.number); // 5}
}class Human {// 类变量static int number; // 没必要自己手动初始化,因为默认自动初始化为 0public Human() {Human.number++;// 在同一个类中,访问自己类的类变量,可以省略不写前面的 Human// 即:可以将 Human.number++ 写成 number++}
}
3. static 修饰成员方法
- 类方法:有 static 修饰的成员方法,属于类
- 实例方法:无 static 修饰的方法,属于对象
public class HelloWorld {public static void main(String[] args) {Human.printHelloWorld(); // 直接通过"类名.类方法名"进行调用(推荐使用此方法)Human obj = new Human();obj.printHelloWorld(); // 不推荐使用此方法obj.printGood();}
}class Human {// 类方法public static void printHelloWorld() {System.out.println("Hello World");}// 实例方法(对象的方法)public void printGood() {System.out.println("Good");}
}
4. 类方法的使用场景
-
类方法最常见的应用常见是做工具类
-
什么是工具类?
简单的说,就是创建一个类,在里面写一些功能,方便别人去调用你写的工具;
而在工具类中,使用的方法都是一些类方法,而不是实例方法
因此,工具类没有创建对象的需求,建议将工具类的构造器进行私有,从而禁止他人创建对象
另外要注意的是,一般情况下,每个方法都是用来完成一个功能的。
-
为什么工具类中的方法要使用类方法,而不用实例方法?
首先,实例方法确实也能够实现做工具类,但是!实例方法需要创建对象来调用,而如果大费周章创建了一个对象,却只是为了用它来调用实例方法,在操作上看,这是多此一举,在内存上看,它还浪费了内存。
-
使用类方法设计工具类的好处
提高了代码的复用;调用方便,提高了开发效率。
5. 代码块
**概述:**代码块是类的5大成分之一(成员变量、方法、构造器、代码块、内部类)
代码块分两种
-
**静态代码块:**static { }
特点:类加载时自动执行,由于类只会加载一次,所以静态代码块也只会执行一次
作用:完成类的初始化,例如:对类变量的初始化赋值
-
实例代码块:{ }
特定:每次创建对象时,都会先执行实例代码块,再执行构造器
作用:和构造器一样,都是用来完成对象的初始化操作的,例如:对实例变量进行初始化赋值
public class HelloWorld {public static void main(String[] args) {// 先加载一次类,执行一次 static{},再同步执行 Human.numberSystem.out.println(Human.number);System.out.println(Human.number);System.out.println(Human.number);// 实例代码块——功能演示Human obj = new Human();Human obj2 = new Human(25);// 程序运行结果:/*静态代码块执行了~~111警告!有人创建了对象!对象内存地址: login.Human@682a0b20此人使用了[无参]构造器创建对象警告!有人创建了对象!对象内存地址: login.Human@3d075dc0此人使用了[含参]构造器创建对象*/}
}class Human {static int number;// 静态代码块static {System.out.println("静态代码块执行了~~");number++;}// 实例代码块{System.out.println("警告!有人创建了对象!对象内存地址: " + this);}public Human() {System.out.println("此人使用了[无参]构造器创建对象");}public Human(int age) {System.out.println("此人使用了[含参]构造器创建对象");}
}
6. 单例设计模式
什么是设计模式?
- 一个问题通常有n种解法,其中肯定是有一种最优解法,这种解法被人总结出来了,称之为设计模式
- 设计模式有20多种,对应20多种软件开发中会遇到的问题
单例设计模式
- 要求:确保一个类只有一个对象
- 饿汉式单例:拿对象时,对象早就创建好了
- 懒汉式单例:拿对象时,才开始创建对象
- …
// 饿汉式单例public class HelloWorld {public static void main(String[] args) {Human obj1 = Human.getObj();Human obj2 = Human.getObj();System.out.println(obj1 == obj2); // true}
}class Human {private static Human obj = new Human(); // 此行代码只会在类加载时,执行一次private Human() {}public static Human getObj() {return obj;}
}
// 懒汉式单例public class HelloWorld {public static void main(String[] args) {Human obj1 = Human.getObj();Human obj2 = Human.getObj();System.out.println(obj1 == obj2); // true}
}class Human {private static Human obj;private Human() {}public static Human getObj() {if (Human.obj == null) {obj = new Human();}return obj;}
}
相关文章:

01_面向对象高级_static
Static static 的中文意思是"静态",它可以修饰成员变量、成员方法 1. Static 修饰成员变量 static 修饰的成员变量,也称之为"类变量"类变量它是属于类的,与类一起加载,在内存中只有一份,会被类…...

双写绕过 [极客大挑战 2019]BabySQL 1
打开题目 随便输入账号密码 根据报错信息可知这是单引号的字符型注入 那我们试试万能密码 1 or 11 页面报错 1 or 11 页面报错 而且根据报错内容显示是没有我们注入上去的or的 那我们就试试 1 order by 3 # 页面报错,根据报错显示页面过滤掉了or和by 那我们…...

uni.app 使用 mixins 技术统一注入小程序页面分享到好友,分享朋友圈功能
uni.app 使用 mixins 技术统一注入小程序页面分享到好友,分享朋友圈功能 1. 在utils文件夹下创建share.js2. 为所有页面挂载3.单独页面使用 1. 在utils文件夹下创建share.js export default{data(){return {// 默认全局分享内容mixinsShare:{title:首页, //分享标题path:/pag…...

贝叶斯AB测试
AB测试是用来评估变更效果的有效方法,但很多时候会运行大量AB测试,如果能够在测试中复用之前测试的结果,将有效提升AB测试的效率和有效性。原文: Bayesian AB Testing[1] 随机实验,又称AB测试,是行业中评估因果效应的既…...

信息检索与数据挖掘 | 【实验】检索评价指标MAP、MRR、NDCG
文章目录 📚实验内容📚知识梳理📚实验步骤🐇前情提要🐇MAP评价指标函数🐇MRR 评价指标函数🐇NDCG评价指标函数🐇调试结果 📚实验内容 实现以下指标评价,并对…...

读书笔记:彼得·德鲁克《认识管理》第24章 管理岗位的设计与内容
一、章节内容概述 管理岗位应该始终基于必要的任务,应该是一份实实在在的工作,为企业的整体目标做出可见的(如果不是可衡量的话)贡献,还应该具有尽可能广泛的权威和范围。管理者应该接受绩效目标而不是上级领导 的指导和控制。在设计管理岗位…...

某60区块链安全之51%攻击实战学习记录
区块链安全 文章目录 区块链安全51%攻击实战实验目的实验环境实验工具实验原理攻击过程 51%攻击实战 实验目的 1.理解并掌握区块链基本概念及区块链原理 2.理解区块链分又问题 3.理解掌握区块链51%算力攻击原理与利用 4.找到题目漏洞进行分析并形成利用 实验环境 1.Ubuntu1…...

为什么原生IP可以降低Google play账号关联风险?企业号解决8.3/10.3账号关联问题?
在Google paly应用上架的过程中,相信大多数开发者都遇到过开发者账号因为关联问题,导致应用包被拒审和封号的情况。 而众所周知,开发者账号注册或登录的IP地址及设备是造成账号关联的重要因素之一。酷鸟云最新上线的原生IP能有效降低账号因I…...

排列组合C(n,m)和A(n,m)理解及代码实现
排列组合C(n,m)和A(n,m)理解及代码实现-CSDN博客...

EasyExcel导入从第几行开始
//获得工作簿 read EasyExcel.read(inputStream, Student.class, listener); //获得工作表 又两种形形式可以通过下标也可以通过名字2003Excel不支持名字 ExcelReaderSheetBuilder sheet read.sheet(); sheet.headRowNumber(2);...

均匀光源积分球的应用领域有哪些
均匀光源积分球的主要作用是收集光线,并将其用作一个散射光源或用于测量。它可以将光线经过积分球内部的均匀分布后射出,因此积分球也可以当作一个光强衰减器。同时,积分球可以实现均匀的朗伯体漫散射光源输出,整个输出口表面的亮…...

【LeetCode】每日一题 2023_11_18 数位和相等数对的最大和(模拟/哈希)
文章目录 刷题前唠嗑题目:数位和相等数对的最大和题目描述代码与解题思路思考解法偷看大佬题解结语 刷题前唠嗑 LeetCode? 启动!!! 本月已经过半了,每日一题的全勤近在咫尺~ 题目:数位和相等数对的最大和…...

【喵叔闲扯】--迪米特法则
迪米特法则,也称为最少知识原则(Law of Demeter),是面向对象设计中的一个原则,旨在降低对象之间的耦合性,提高系统的可维护性和可扩展性。该原则强调一个类不应该直接与其它不相关的类相互交互,…...

企业视频数字人有哪些应用场景
来做个数字人吧,帮我干点活吧。 国内的一些数字人: 腾讯智影 腾讯智影数字人是一种基于人工智能技术的数字人物形象,具有逼真的外观、语音和行为表现,可以应用于各种场景,如新闻播报、文娱推介、营销、教育等。 幻…...

LoRa模块空中唤醒功能原理和物联网应用
LoRa模块是一种广泛应用于物联网领域的无线通信模块,支持低功耗、远距离和低成本的无线通信。 其空中唤醒功能是一项重要的应用,可以实现设备的自动唤醒,从而在没有人工干预的情况下实现设备的远程监控和控制。 LoRa模块空中唤醒功能的原理…...

spring中的DI
【知识要点】 控制反转(IOC)将对象的创建权限交给第三方模块完成,第三方模块需要将创建好的对象,以某种合适的方式交给引用对象去使用,这个过程称为依赖注入(DI)。如:A对象如果需要…...

gpt-4-vision-preview 识图
这些图片都是流行动画角色的插图。 第一张图片中的角色是一块穿着棕色方形裤子、红领带和白色衬衫的海绵,它站立着并露出开心的笑容。该角色在一个蓝色的背景前,显得非常兴奋和活泼。 第二张图片展示的是一只灰色的小老鼠,表情开心…...

Spring Framework 6.1 正式发布
Spring Framework 6.1.0 现已从 Maven Central 正式发布!6.1 一代有几个关键主题: 拥抱 JDK 21 LTS虚拟线程(Project Loom)JVM 检查点恢复(项目 CRaC)重新审视资源生命周期管理重新审视数据绑定和验证新的…...

SystemVerilog学习 (11)——覆盖率
目录 一、概述 二、覆盖率的种类 1、概述 2、分类 三、代码覆盖率 四、功能覆盖率 五、从功能描述到覆盖率 一、概述 “验证如果没有量化,那么就意味着没有尽头。” 伴随着复杂SoC系统的验证难度系数成倍增加,无论是定向测试还是随机测试ÿ…...

jQuery,解决命名冲突的问题
使用noConflict(true),把$和jQuery名字都给别人 <body><script>var $ zanvar jQuery lan</script><script src"./jquery.js"></script><script>console.log(jQuery, 11111); // 打印jquery函数console.log($, 222…...

为什么C++标准库中atomic shared_ptr不是lockfree实现?
为什么C标准库中atomic shared_ptr不是lockfree实现? 把 shared_ptr 做成 lock_free,应该是没有技术上的可行性。shared_ptr 比一个指针要大不少:最近很多小伙伴找我,说想要一些C的资料,然后我根据自己从业十年经验&am…...

Python基础入门例程58-NP58 找到HR(循环语句)
最近的博文: Python基础入门例程57-NP57 格式化清单(循环语句)-CSDN博客 Python基础入门例程56-NP56 列表解析(循环语句)-CSDN博客 Python基础入门例程55-NP55 2的次方数(循环语句)-CSDN博客 目录 最近的博文: 描述...

航天联志Aisino-AISINO26081R服务器通过调BIOS用U盘重新做系统(windows系统通用)
产品名称:航天联志Aisino系列服务器 产品型号:AISINO26081R CPU架构:Intel 的CPU,所以支持Windows Server all 和Linux系统(重装完系统可以用某60驱动管家更新所有硬件驱动) 操作系统:本次我安装的服务器系统为Serv…...

windows 10 更新永久关闭
1 winR 输入:services.msc 编辑: 关闭:...

循环优先级仲裁~位屏蔽仲裁算法
参考了FPGA奇哥(下列视频中UP主)的讲解。 应该可以对多路读写DDR3进行操作,仅仲裁,不涉及DMA和Uibuf等。 2023年11月所写,暂未进行测试,日后补上。 第二天已完成测试,功能可行。 深入FPGA底层…...

千年版本修改小技巧
千年门派创建后消失的原因 门派在游戏里创建后重启服务器消失其实就差一个单词name,只要将这个单词加在 guild文件夹里的 createguild.sdb文件里的第一行第一个就可以。可以先将createguild.sdb的内容清空 然后复制以下内容到 createguild.sdb 最后保存下就可以了n…...

教学过程中可以实施哪些考核评价方式?
教学过程中可以实施哪些考核评价方式? 实践技能与理论知识考试结合:旨在综合考察学生对理论知识的掌握程度及其在实践中的运用能力。 模拟仿真与现场考试结合:通过模拟真实场景或者实际操作环境,考察学生在实际情境中解决问题的能…...

MyBatis查询数据库(全是精髓)
1. 什么是MyBatis? 简单说,MyBatis就是一个完成程序与数据库交互的工具,也就是更简单的操作和读取数据库的工具。 2. 怎么学习Mybatis Mybatis学习只分为两部分: 配置MyBatis开发环境使用MyBatis模式和语法操作数据库 3. 第一…...

elementPlus+vue3引入icon图标
安装包管理,推荐使用 yarn npm包有时候会有包冲突,在项目的根目录下执行,在终端下 # Yarn $ yarn add element-plus/icons-vue在main.js或main.ts中进行全局注册,导入所有图标 import * as ElementPlusIconsVue from element-plu…...

Spring框架中的bean管理(XML和注解及属性的注入)
Spring框架中IOC就是将创建对象的权力反转给Spring框架,我们无需自己创建对象,直接在Spring框架的容器中获取即可。 bean中配置的就是需要让Spring管理的类。 XML的bean管理 先写个“HelloWorld”: <bean id"User" class"com.ffyc.…...