JavaSE 面向对象程序设计初级 静态static 包package 常量final 代码块 代码实操理论内存原理详解

目录

static(静态)

静态的特点

应用示例

静态变量

静态方法

注意事项

内存图

重新认识main方法

什么是包

使用导包在什么时候

final关键字

常量

命名规范

细节(重点)

权限修饰符

代码块

局部代码块

构造代码块

静态代码块

个人号推广

博客主页

Web后端开发

Web前端开发

数据库开发

项目实战

算法与数据结构

计算机基础

回忆录

static(静态)

静态的特点

1.static可以修饰变量和方法;

2.被static修饰的变量或者方法是独立于该类的任何对象,也就是说,这些变量和方法不属于任何一个实例对象,而是被类的实例对象所共享;

3.在类被加载的时候,就会去加载被static修饰的部分;

4.被static修饰的变量或者方法是优先于对象存在的,也就是说当一个类加载完毕之后,即便没有创建对象,也可以去访问。

应用示例

定义类:属性 行为

所有的student类所有的对象共享teacherName

直接调用

static是一个java的修饰符

静态变量

被static修饰的成员变量,叫做静态变量

特点:被该类所有的对象共享

调用方式:

1.类名调用(推荐)

2.对象名调用

静态变量是随着类加载而加载的,优于对象出现

方法执行完毕 出栈

通过对象s2调用方法show

堆内存里的静态区

静态区的变量是各个对象共享的,谁要 用谁去拿

静态区的变量在内存里只有一份

静态对象属于类

简单来说,静态对象就是在程序运行期间一直存在的一个对象,它不会随着函数或方法的调用而创建或销毁,而是随着程序的启动而创建,随着程序的结束而销毁。静态对象通常被用于保存全局状态或者提供共享的资源,可以通过类名直接访问,而无需创建类的实例。例如,在Java中,我们可以定义一个静态变量表示某个类的实例个数,每次创建该类的实例时,静态变量的值就会递增,因为静态变量属于类,而非对象。

类:类是一种抽象的概念,它定义了对象的属性和行为。类可以看作是对象的模板或蓝图,描述了对象应该具有的特征和行为。

对象:对象是类的一个实例,它是类的具体化。当我们根据类创建一个具体的实例时,这个实例就是一个对象,拥有了类所定义的属性和行为。

因此,其他对象不是类,而是基于类创建的实例。类是用来定义对象的模板,而对象是根据模板创建出来的具体实体。在面向对象编程中,我们通过定义类来描述对象的特征和行为,并通过创建对象来使用这些特征和行为。

在Java等静态类型语言中,类的加载通常发生在程序运行之初,但在动态语言或一些特殊场景下,类的加载可能会更加灵活和动态。

总的来说,类的加载是在程序运行期间动态发生的,根据程序运行时的需要来进行。

静态方法

被static修饰的成员方法,叫做静态方法

成员方法 getter setter

多用在测试类和工具类中

javaBean类:

用来描述一类事物的类

例 Student Dog Cat

测试类:

用来检测其他类是否正确

带有main方法 是程序的主入口

工具类:

帮我们做一些事情,但不描述任何事情(例如数组求和)

1.类名见名知意

2.私有化构造方法

3.方法定义为静态

javabean类中很少用

静态方法很少用

1.类名调用(推荐)

2.对象名调用

工具类

遍历数组

求总分和平均数

测试类

创建工具类 求集合中的学生年龄的最大值

首先定义javabean类 存储学生对象 放入属性

再用工具类进行定义方法

最后在测试类中调用工具类中的方法

注意事项

1.静态方法只能访问静态变量静态方法

2.非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和成员方法

3.静态方法中没有this关键字

静态方法的调用方式是通过类名直接调用,不需要先创建类的实例。这也说明了为什么静态方法中没有this关键字,因为在没有实例的情况下,不存在当前对象实例的引用。

this表示当时方法调用者的地址值

this由虚拟机赋值

谁调用当前方法,this就 地址值

内存图

this在形参的最前面 是隐含的

非静态和对象相关,必须要有this;

成员变量 成员方法

静态的是共享的,和每一个对象无关,所以无this

静态 随着类加载而加载

非静态 跟对象有关

重新认识main方法

public class Helloworld{public static void main(String[] args){System.out.println("HelloWorld");}
}

public:权限修饰符 被虚拟机调用 访问权限足够大

static:被虚拟机调用 不用创建对象,直接类名访问

因为main方法是静态的,所有测试类的其他方法也需要是静态的

void:被虚拟机调用,不需要给虚拟机返回值

main:虚拟机只能识别main

String[] args:以前是接收数据,现在没用

什么是包

包是文件夹,用来管理不同功能的java类,方便后期代码维护 分门归类

包名规则:

公司域名反写+包的作用,需要全部英文小写,见名知意

packet com.ithema.domain

使用同一个包中的类时,不需要导包

使用导包在什么时候

1.使用java.lang包中的类时,不需要导包

2.其他情况都需要导包

3.如果同时使用两个包中的同名类,需要用全类名

4.使用其他其他包里面的类时要用全类名

final关键字

表示 最终的 不可被改变

一个 修饰符

应用于 方法:表明该方法时最终方法,不能被重写

应用于 :表明该类是最终类,不能被继承

应用于 变量:叫做常量,只能被赋值一次

写在类中防止值改变

例:

math类中的成员变量PI(π)

public static final double PI=3.1415926 5358979 323846

常量

在实际开发中,常量一般为系统的配置信息,方便维护,提高可读性

和final关键字一起用

命名规范

单个单词:全部大写

多个单词:全部大写 单词之间用下划线隔开

细节(重点)

final修饰的变量是基本类型,那么变量存储的数据值不能发生改变

final修饰的变量是引用数据类型,那么变量存储的地址值不能发生改变,对象内部的可以该改变

实例操作

权限修饰符

控制一个成员能被访问的范围

可以修饰成员变量,方法,构造方法,内部类

private 只能自己用

默认(空着不写) 只能在本包中

protectes 受保护的 其他包里的子类也能用

public 都能用

实际开发中一般只用private 和 public

原则

成员变量私有

方法公开

如果方法是抽取其他方法中共性代码,要私有

代码块

局部代码块

写在方法里面的单独代码

回收内存 不浪费空间

不过现在硬件水平提高了,内存空间很大 实际开发中已经不再使用这种方式写代码

public class Dduo{public static void main(String[] args){{int a=10;}System.out.printf(a);}
}//输出结果为0

构造代码块

写在成员位置的代码块,可以优先于成员方法执行

成员方法中共性的可以抽出来放在方法前写入构造代码块

private String name;
private int age;
{System.out,println("开始创建对象喽")
}
public Student(){}

只要创建对象 就会先执行构造代码块(必定执行) 再执行构造方法

不过现在也不用了,因为不灵活

静态代码块

static{}

需要通过static关键字修饰,随着类的加载而加载,并且自动触发,只执行一次 第一次

在类加载的时候,随着类的加载使用

初始化数据 提高代码效率

个人号推广

博客主页

多多!-CSDN博客

Web后端开发

https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482

Web前端开发

https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482

数据库开发

https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482

项目实战

https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482

算法与数据结构

https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482

计算机基础

https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482

回忆录

https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/355509.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue中实现百度地图全国与省市地图切换

前言 本文主要是用于示例全国地图,点击省市地图直接跳转到该省市地图并展示,可以拓展在地图上显示标记点(本文未做示例),后续有完整代码,但是由于需要与本来项目业务代码进项分割,可能会有些问题…

多模态大模型面对误导性问题:看懂图片也会答错,一骗就中招

多模态大语言模型(MLLMs)因其在视觉理解和推理方面的突出表现,例如生成详细的图像描述和回答复杂的问题等,逐渐成为近期AI研究的热点。 然而,Bunny 团队的最新研究发现,尽管许多MLLMs对视觉内容能够正确理…

RocketMQ快速入门:集成spring, springboot实现各类消息消费(七)附带源码

0. 引言 rocketmq支持两种消费模式&#xff1a;pull和push&#xff0c;在实际开发中这两种模式分别是如何实现的呢&#xff0c;在spring框架和springboot框架中集成有什么差异&#xff1f;今天我们一起来探究这两个问题。 1. java client实现消息消费 1、添加依赖 <depen…

方舟云康亏损收窄:三年近10亿销售成本,平均付费及月活仍大幅承压

《港湾商业观察》施子夫 三度递表后&#xff0c;终于通过聆讯&#xff0c;方舟云康控股有限公司(以下简称&#xff0c;方舟云康)有望近期内挂牌港交所。方舟云康的国内运营主体为广州方舟云康信息科技集团有限公司、广州方舟医药有限公司。 值得关注的是&#xff0c;亏损的难…

Python日志管理利器:如何高效管理平台日志

一、为什么需要日志管理&#xff1f; 日志是应用程序的重要组成部分&#xff0c;它记录了应用程序的运行状态、错误信息以及用户交互等关键信息。良好的日志管理可以帮助开发人员及时发现和解决问题&#xff0c;提高应用程序的稳定性和可靠性。 项目在本地开发调试时&#xf…

vscode字符多行自动增长插件。

多行字符自动增长插件CharAutoIncre 当你使用shiftalt选中了多行,并输入了’1’,这时这几行都变成了’1’. 这时你可以选中&#xff08;shift左键&#xff09;为’1’的这几行, 接下来按下shiftaltq此时’1’变为了’12345’自增长的样式。 同时本插件支持字符’a-z,A-Z’。 目…

【知识图谱】基于neo4j开发的信息化文档分析系统(源码)

一、项目介绍 一款全源码&#xff0c;可二开&#xff0c;可基于云部署、私有部署的企业级知识库云平台&#xff0c;一款让企业知识变为实打实的数字财富的系统&#xff0c;应用在需要进行文档整理、分类、归集、检索、分析的场景。 为什么建立知识库平台&#xff1f; 助力企业…

IDEA中 pom.xml 设置自动提示

IDEA中 pom.xml 自动提示 IDEA中 pom.xml 自动提示设置如下&#xff1a; file–>Settings–>Build,Execution…–>Build Tools–>Maven–>Repositories 会看到类似表格的画面&#xff0c;内容是你的maven地址&#xff0c;选中后&#xff0c;右边有个Update的按…

Python酷库之旅-第三方库openpyxl(01)

目录 一、 openpyxl库的由来 1、背景 2、起源 3、发展 4、特点 4-1、支持.xlsx格式 4-2、读写Excel文件 4-3、操作单元格 4-4、创建和修改工作表 4-5、样式设置 4-6、图表和公式 4-7、支持数字和日期格式 二、openpyxl库的优缺点 1、优点 1-1、支持现代Excel格式…

鄂州职业大学2024年成人高等继续教育招生简章

鄂州职业大学&#xff0c;作为一所享有盛誉的高等学府&#xff0c;一直以来都致力于为社会培养具备专业技能和良好素养的优秀人才。在成人高等继续教育领域&#xff0c;该校同样表现出色&#xff0c;为广大渴望继续深造、提升自身能力的成年人提供了宝贵的学习机会。 随着社会…

椭圆的矩阵表示法

椭圆的矩阵表示法 flyfish 1. 标准几何表示法 标准几何表示法是通过椭圆的几何定义来表示的&#xff1a; x 2 a 2 y 2 b 2 1 \frac{x^2}{a^2} \frac{y^2}{b^2} 1 a2x2​b2y2​1其中&#xff0c; a a a 是椭圆的长半轴长度&#xff0c; b b b 是椭圆的短半轴长度。 2.…

一文带你全面详细了解安全运维

一、安全运维-网络 1、IP地址相关 IP地址属于网络层地址&#xff0c;用于标识网络中的节点设备。 IP地址由32bit构成&#xff0c;每8bit一组&#xff0c;共占用4个字节。 IP地址由两部分组成&#xff0c;网络位和主机位。 IP地址分类&#xff1a; 类别网络位子网掩码私有地…

云原生Kubernetes系列项目实战-k8s集群+高可用负载均衡层+防火墙

一、Kubernetes 区域可采用 Kubeadm 方式进行安装&#xff1a; 名称主机部署服务master192.168.91.10docker、kubeadm、kubelet、kubectl、flannelnode01192.168.91.11docker、kubeadm、kubelet、kubectl、flannelnode02192.168.91.20docker、kubeadm、kubelet、kubectl、flan…

Linux 一键部署 Nginx1.26.1 + ModSecurity3

前言 ModSecurity 是 Apache 基金会的一个开源、高性能的 Web 应用程序防火墙(WAF),它提供了强大的安全规则引擎,用于检测和阻止各种攻击行为,如 SQL 注入、XSS 跨站点脚本攻击等。而 nginx 是一个高性能的 Web 服务器,常用于处理大量的并发请求,具有很高的负载均衡能力…

从0开始C++(三):构造函数与析构函数详解

目录 构造函数 构造函数的基本使用 构造函数也支持函数重载 构造函数也支持函数参数默认值 构造初始化列表 拷贝构造函数 浅拷贝和深拷贝 析构函数 总结 练习一下ヽ(&#xffe3;▽&#xffe3;)&#xff89; 构造函数 构造函数的基本使用 构造函数是一种特殊的成…

HTML(17)——圆角和盒子阴影

盒子模型——圆角 作用&#xff1a;设置元素的外边框为圆角 属性名&#xff1a;border-radius 属性值&#xff1a;数字px/百分比 也可以每个角设置不同的效果&#xff0c;从左上角顺时针开始赋值&#xff0c;没有取值的角与对角取值相同。 正圆 给正方形盒子设置圆角属性…

WordPress实时搜索插件Ajax Search Lite,轻松替代默认搜索功能

WordPress自带的默认搜索功能是跳转到搜索结果页&#xff0c;如果你想要实时搜索功能&#xff0c;特别是在问答中心显示搜索功能&#xff0c;那么建议使用这个WordPress实时搜索插件Ajax Search Lite&#xff0c;它可以在文章、页面、自定义类型文章中搜索标题、内容、摘要、自…

DP:完全背包+多重背包问题

完全背包和01背包的区别就是&#xff1a;可以多次选 一、完全背包&#xff08;模版&#xff09; 【模板】完全背包_牛客题霸_牛客网 #include <iostream> #include<string.h> using namespace std; const int N1001; int n,V,w[N],v[N],dp[N][N]; //dp[i][j]表示…

队列 + 宽搜(BFS)

例题一 解法&#xff1a; 算法思路&#xff1a; 层序遍历即可~ 仅需多加⼀个变量&#xff0c;⽤来记录每⼀层结点的个数就好了。 例题二 解法&#xff08;层序遍历&#xff09;&#xff1a; 算法思路&#xff1a; 在正常的层序遍历过程中&#xff0c;我们是可以把⼀层的结点…

SpringBoot整合justauth实现多种方式的第三方登陆

目录 0.准备工作 1.引入依赖 2.yml文件 3. Controller代码 4.效果 参考 0.准备工作 你需要获取三方登陆的client-id和client-secret 以github为例 申请地址&#xff1a;Sign in to GitHub GitHub 1.引入依赖 <?xml version"1.0" encoding"UTF-8&quo…