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

news2024/11/26 0:42:58

目录

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.coloradmin.cn/o/1845766.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【机器学习】必会降维算法之:随机投影(Random Projection)

随机投影(Random Projection) 1、引言2、随机投影(Random Projection)2.1 定义2.2 核心原理2.3 应用场景2.4 实现方式2.5 算法公式2.6 代码示例 3、总结 1、引言 小屌丝:鱼哥,降维算法还没讲完呢。 小鱼&a…

EE trade:炒伦敦金的注意事项及交易指南

在贵金属市场中,伦敦金因其高流动性和全球认可度,成为广大投资者的首选。然而,在炒伦敦金的过程中,投资者需要注意一些关键点。南华金业小编带您一起来看看。 国际黄金报价 一般国际黄金报价会提供三个价格: 买价(B…

c++里 父类私有的虚函数,也是可以被子类重写和继承的。但父类私有的普通函数,子类无法直接使用

谢谢 。今天看课本上有这么个用法,特测试一下。这样就也可以放心的把父类的私有函数列为虚函数了,或者说把父类的虚函数作为私有函数了。 再补充一例:

ls命令的参数选项

ls命令的参数的作用 可以指定要查看的文件夹(目录)的内容,如果不指定参数,就查看当前工作目录的内容。ls 命令的选项 常用语法:ls [-a -l -h] [linux路径] -a 选项表示 all ,即列出全部内容,包括…

Linux文件编程详解

Linux文件编程详解 在Ubuntu(Linux)系统下进行文件操作涉及一系列的系统调用,这些调用是基于Unix风格的文件操作API。这些操作包括打开或创建文件、从文件中读取数据、向文件中写入数据、移动文件指针以及关闭文件。以下是这些函数的详细介绍…

WPF/C#:在DataGrid中显示选择框

前言 在使用WPF的过程中可能会经常遇到在DataGrid的最前或者最后添加一列选择框的需求,今天跟大家分享一下,在自己的项目中是如何实现的。 整体实现效果如下: 如果对此感兴趣,可以接下来看具体实现部分。 实践 假设数据库中的…

LeetCode LCP 61. 气温变化趋势

别怕麻烦&#xff0c;模拟题有时候就是要多写一些条件&#xff08;或者你思维很活跃找出规律&#xff09;&#xff0c;代码如下&#xff1a; class Solution { public:int temperatureTrend(vector<int>& temperatureA, vector<int>& temperatureB) {int …

GraphQL vs REST:API设计的现代选择

随着技术的飞速发展&#xff0c;API&#xff08;应用程序接口&#xff09;设计成为了软件开发中不可或缺的一部分。REST&#xff08;Representational State Transfer&#xff09;和GraphQL作为两种主流的API设计风格&#xff0c;各自具有独特的优势和适用场景。本文将深入探讨…

audacity音频处理

1.安装 Audacity | Free Audio editor, recorder, music making and more! 添加OpenVINO插件: https://zhuanlan.zhihu.com/p/676542556 2.使用 2.1注意事项 1.编辑音频,点击左上方打开或导入都可以;打开视频文件则需要安装ffmpeg模块,打开后只显示视频中的音频信息; 2.编辑…

手机k歌用什么麦克风最好?轻揭无线麦克风哪个品牌音质最好!

​无线领夹麦克风作为现代音频技术的重要代表&#xff0c;已广泛应用于各种场合。它不仅能提升演讲者声音质量&#xff0c;还能增加演讲互动性和生动性。然而面对众多产品如何选择适合自己的设备成难题。本文将提供选购使用无线领夹麦克风的建议与推荐款式&#xff0c;帮助你轻…

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

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

tomcat常用配置详解和优化方法

常用配置详解 1 目录结构 /bin&#xff1a;脚本文件目录。 /common/lib&#xff1a;存放所有web项目都可以访问的公共jar包&#xff08;使用Common类加载器加载&#xff09;。 /conf&#xff1a;存放配置文件&#xff0c;最重要的是server.xml。 /logs&#xff1a;存放日志文件…

vue 基于antV 实现流程图编辑器代码

最近在做流程图功能开发&#xff0c;发现阿里antV 有对应的可视化引擎&#xff0c;于是自己做了一个简单vue 基于antV 实现流程图编辑器代码 部分代码如下&#xff1a; <template><div id"flowEditorContent"><header><h3>antv X6 流程编辑…

iptables(4)规则匹配条件

简介 前面我们已经介绍了iptables的基本原理,表、链,数据包处理流程。如何查询各种表的信息。还有基本的增、删、改、保存的基础操作。 经过前文介绍,我们已经能够熟练的管理规则了,但是我们只使用过一种匹配条件,就是将”源地址”作为匹配条件。那么这篇文章中,我们就来…

搞IT需不需要考个软考中级?

如果你是在事业单位、银行、国企等体制内工作&#xff0c;建议考虑参加软考。通过软考评职称后&#xff0c;可以获得加薪和晋升的机会&#xff0c;而且晋升时也会更看重你的职称等级。我就是通过软考评定了中级职称&#xff0c;薪水涨了500元。 评职称并不仅仅是拿到证书就行&…

Talk|北京大学张嘉曌:NaVid - 视觉语言导航大模型

本期为TechBeat人工智能社区第602期线上Talk。 北京时间6月20日(周四)20:00&#xff0c;北京大学博士生—张嘉曌的Talk已经准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “NaVid - 视觉语言导航大模型”&#xff0c;NaVid是首个专为视觉语言导航&#xf…

在华为服务器上编译C++工程的若干错误以及排查方法和解决方法记录

目录 1 报错 2 查找错误原因 2.1 方法一&#xff1a;ldd命令 2.2 方法二&#xff1a;警告信息里面 3 解决错误 3.1 libpng16.so.16 和 libbrotlidec.so.1 问题 3.2 libdevmmap.so 和 libslog.so库问题 3.3 剩余错误 3.3.1 libacllite.so错误解决 3.3.2 libtaclstream…

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

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

【Hadoop大数据技术】——期末复习(冲刺篇)

&#x1f4d6; 前言&#xff1a;快考试了&#xff0c;做篇期末总结&#xff0c;都是重点与必考点。 题型&#xff1a;简答题、编程题&#xff08;Java与Shell操作&#xff09;、看图分析题。题目大概率会从课后习题、实验里出。 课本&#xff1a; 目录 &#x1f552; 1. HDF…

基于YOLOv5的火焰烟雾检测系统

基于YOLOv5的火焰烟雾检测系统 通过PYQT构建UI界面&#xff0c;包含图片检测&#xff0c;视频检测&#xff0c;摄像头实时检测。 &#xff08;该系统可以根据数据训练出的yolov5的权重文件&#xff0c;运用在其他检测系统上&#xff0c;如吸烟检测&#xff0c;口罩检测等等&…