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

java基础以及内存图

java基础

命名:

大驼峰:类名

小驼峰:变量名方法名等其他的

全部大写:常量名字..

// 单行注释

/**/ 多行注释

变量类型 变量名

一、基本类型(8个)

整数:byte-8bit short-16bit int 32-bit long-64bit

浮点数: float 32-bit double 64-bit

布尔型 :boolean -32bit true / false

字符型:char ------>符号----几何图形

运算

++i,先加再赋值

i++,先赋值再加

短路逻辑: && 与 || 或

按位与 (补码) & --------同1为1

按位或 |----同0为0

~ 取反

 ^ 异或 相异为1,相同为0

二、引用类型

字符串---引用类型

split----分割

indexOf----判断是不是子串,int类型,有返回第一次出现的下标,没有-1

substring----截取,左闭右开

变量

局部变量使用前先赋值

局部变量全局变量重名,局部变量会覆盖全局变量

final

修饰常量,常量名习惯全部大写

定义的时候必须要给初始值,被final修饰的只能赋值一次,不可以二次赋值

final修饰的引用类型不可以二次改变指向

final修饰的类不可以被继承

final修饰的方法不能被重写

final防止指令重排序,遏制流水线优化,保障多线程并发场景下的可见性

final通常和static一起用

java内存图

java程序在运行时,内存主要分为以下几个区域:(绿色为静态变量)

1.方法区:用于存储类的信息、静态变量、常量池等。字符串常量池就位于方法区中。

2.栈区:用于存储局部变量和方法调用的相关信息。

3.堆区:用于存储对象实例。new创建的对象都是在堆当中开辟空间

演示示例:

package come.java.basicClass;public class Person {public int age;public int[] arr;public String name="张三";public static int height = 168;public static int[] brr = {7,8,9};public static String play ="足球";public void run() {System.out.println("run");}public static void eat() {System.out.println("ear");}}
package come.java.basicClass;public class PersonTest {public int a =10;public static int b =10;public static void main(String[] args) {Person.eat();System.out.println(Person.play);Person aa = new Person();aa.run();aa.name="张三";System.out.println(aa.name);fly();System.out.println(b);PersonTest bb = new PersonTest();System.out.println(bb.a);bb.jump();}private void jump() {// TODO Auto-generated method stub}private static void fly() {// TODO Auto-generated method stub}
}

代码描述

Person 类:包含普通属性(age、arr、name)和静态属性(height、brr、play),还有普通方法(run)和静态方法(eat)。
test 类:包含普通属性(a)和静态属性(b),静态方法(fly)和普通方法(jump)

1.类加载阶段:

方法区:

加载Person类和test类的信息;

为Person类的静态属性分配内存并初始化:height=168,brr记录包含7,8,9的数组的地址,play记录足球的地址;

为test类分配内存并初始化:b=10;

2.main方法执行阶段:

①栈:

main入栈;

调用Person.eat(),方法入栈,执行完出栈;

new创建Person对象aa,栈中存储aa这个引用变量,在堆中开辟空间;

调用aa.run(),方法入栈,执行完出栈;

aa的name记录字符串常量池中的张三的地址;

fly()入栈,执行完出栈;

创建test对象bb,栈中存储bb这个引用变量,指向堆中new出来的对象;

调用test.jump(),入栈,执行完出栈

②堆:

创建Person对象aa,包含普通属性age,arr,name,run()

创建test对象bb,包含普通属性a,jump()

相关文章:

java基础以及内存图

java基础 命名: 大驼峰:类名 小驼峰:变量名方法名等其他的 全部大写:常量名字.. // 单行注释 /**/ 多行注释 变量类型 变量名 一、基本类型(8个) 整数:byte-8bit short-16bit int 32-b…...

【嵌入式学习3】TCP服务器客户端 - UDP发送端接收端

目录 1、TCP TCP特点 TCP三次握手(建立TCP连接): TCP四次握手【TCP断开链接的时候需要经过4次确认】: TCP网络程序开发流程 客户端开发:用户设备上的程序 服务器开发:服务器设备上的程序 2、UDP 为…...

Linux之基础知识

目录 一、环境准备 1.1、常规登录 1.2、免密登录 二、Linux基本指令 2.1、ls命令 2.2、pwd命令 2.3、cd命令 2.4、touch命令 2.5、mkdir命令 2.6、rmdir和rm命令 2.7man命令 2.8、cp命令 2.9、mv命令 2.10、cat命令 2.11、echo命令 2.11.1、Ctrl r 快捷键 2…...

llamafactory微调效果与vllm部署效果不一致如何解决

在llamafactory框架训练好模型之后,自测chat时模型效果不错,但是部署到vllm模型上效果却很差 这实际上是因为llamafactory微调时与vllm部署时的对话模板不一致导致的。 对应的llamafactory的代码为 而vllm启动时会采用大模型自己本身设置的对话模板信息…...

Python控制结构详解

前言 一、控制结构概述 二、顺序结构 三、选择结构(分支结构) 1. 单分支 if 2. 双分支 if-else 3. 多分支 if-elif-else 4.实际应用: 四、循环结构 1. for循环 2. while循环 3. 循环控制语句 五、异常处理(try-except&#xff09…...

Mysql-经典实战案例(11):深度解析Sysbench压测(从入门到MySQL服务器性能验证)

引言 如何用Sysbench压测满足mysql生产运行的服务器? Sysbench返回的压测结果如何解读? 别急,本文会教大家如何使用并且如何解读压测的结果信息,如何对mysql服务器进行压测! 一、Sysbench核心功能全景解析 1.1 工…...

WebSocket通信的握手阶段

1. 客户端建立连接时,通过 http 发起请求报文,报文表示请求服务器端升级协议为 WebSocket,与普通的 http 请求协议略有区别的部分在于如下的这些协议头: 上述两个字段表示请求服务器端升级协议为 websocket 协议。 2. 服务器端响…...

分布式ID服务实现全面解析

分布式ID生成器是分布式系统中的关键基础设施,用于在分布式环境下生成全局唯一的标识符。以下是各种实现方案的深度解析和最佳实践。 一、核心需求与设计考量 1. 核心需求矩阵 需求 重要性 实现难点 全局唯一 必须保证 时钟回拨/节点冲突 高性能 高并发场景…...

dom0运行android_kernel: do_serror of panic----failed to stop secondary CPUs 0

问题描述: 从日志看出,dom0运行android_kernel,刚开始运行就会crash,引发panic 解决及其原因分析: 最终问题得到解决,发现是前期在调试汇编阶段代码时,增加了汇编打印的指令,注释掉这些指令,问题得到解决。…...

HarmonyOS NEXT——【鸿蒙原生应用加载Web页面】

鸿蒙客户端加载Web页面: 在鸿蒙原生应用中,我们需要使用前端页面做混合开发,方法之一是使用Web组件直接加载前端页面,其中WebView提供了一系列相关的方法适配鸿蒙原生与web之间的使用。 效果 web页面展示: Column()…...

HTML输出流

HTML 输出流 JavaScript 中**「直接写入 HTML 输出流」**的核心是通过 document.write() 方法向浏览器渲染过程中的数据流动态插入内容。以下是详细解释&#xff1a; 一、HTML 输出流的概念 1. 动态渲染过程 HTML 文档的加载是自上而下逐行解析的。当浏览器遇到 <script&…...

std::countr_zero

一 基本功能 1 作用 std::countr_zero 是 C++20 标准引入的位操作函数,用于计算无符号整数的二进制表示中末尾零(Trailing Zeros)的数量。 定义:位于 <bit> 头文件中,是标准库的一部分。 2 示例 #include <bit> unsigned int x = 12; // 二进…...

优选算法的慧根之翼:位运算专题

专栏&#xff1a;算法的魔法世界 个人主页&#xff1a;手握风云 一、位运算 基础位运算 共包含6种&(按位与&#xff0c;有0就是0)、|(按位或有1就是1)、^(按位异或&#xff0c;相同为0&#xff0c;相异为1)、~(按位取反&#xff0c;0变成1&#xff0c;1变成0)、<<(左…...

图论问题集合

图论问题集合 寻找特殊有向图&#xff08;一个节点最多有一个出边&#xff09;中最大环路问题特殊有向图解析算法解析步骤 1 &#xff1a;举例分析如何在一个连通块中找到环并使用时间戳计算大小步骤 2 &#xff1a;抽象成算法注意 实现 寻找特殊有向图&#xff08;一个节点最多…...

【数据结构】栈 与【LeetCode】20.有效的括号详解

目录 一、栈1、栈的概念及结构2、栈的实现3、初始化栈和销毁栈4、打印栈的数据5、入栈操作---栈顶6、出栈---栈顶6.1栈是否为空6.2出栈---栈顶 7、取栈顶元素8、获取栈中有效的元素个数 二、栈的相关练习1、练习2、AC代码 个人主页&#xff0c;点这里~ 数据结构专栏&#xff0c…...

实时目标检测新突破:AnytimeYOLO——随时中断的YOLO优化框架解析

目录 一、论文背景与核心价值 二、创新技术解析 2.1 网络结构革新:Transposed架构 2.2 动态路径优化算法 三、实验结果与性能对比 3.1 主要性能指标 3.2 关键发现 四、应用场景与部署实践 4.1 典型应用场景 4.2 部署注意事项 五、未来展望与挑战 一、论文背景与核心…...

Redis设计与实现-哨兵

哨兵模式 1、启动并初始化sentinel1.1 初始化服务器1.2 使用Sentinel代码1.3 初始化sentinel状态1.4 初始化sentinel状态的master属性1.5 创建连向主服务器的网络连接 2、获取主服务器信息3、获取从服务器的信息4、向主从服务器发送信息5、接受主从服务器的频道信息6、检测主观…...

C++进阶——封装哈希表实现unordered_map/set

与红黑树封装map/set基本相似&#xff0c;只是unordered_map/set是单向迭代器&#xff0c;模板多传一个HashFunc。 目录 1、源码及框架分析 2、模拟实现unordered_map/set 2.1 复用的哈希表框架及Insert 2.2 iterator的实现 2.2.1 iteartor的核心源码 2.2.2 iterator的实…...

第4.1节:使用正则表达式

1 第4.1节&#xff1a;使用正则表达式 将正则表达式用斜杠括起来&#xff0c;就能用作模式。随后&#xff0c;该正则表达式会与每条输入记录的完整文本进行比对。&#xff08;通常情况下&#xff0c;它只需匹配文本的部分内容就能视作匹配成功。&#xff09;例如&#xff0c;以…...

【算法day25】 最长有效括号——给你一个只包含 ‘(‘ 和 ‘)‘ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。

32. 最长有效括号 给你一个只包含 ‘(’ 和 ‘)’ 的字符串&#xff0c;找出最长有效&#xff08;格式正确且连续&#xff09;括号子串的长度。 https://leetcode.cn/problems/longest-valid-parentheses/ 2.方法二&#xff1a;栈 class Solution { public:int longestValid…...

Jenkins + CICD流程一键自动部署Vue前端项目(保姆级)

git仓库地址&#xff1a;参考以下代码完成,或者采用自己的代码。 南泽/cicd-test 拉取项目代码到本地 使用云服务器或虚拟机采用docker部署jenkins 安装docker过程省略 采用docker部署jenkins&#xff0c;注意这里的命令&#xff0c;一定要映射docker路径&#xff0c;否则无…...

C 语言的未来:在变革中坚守核心价值

一、从 “古老” 到 “长青”&#xff1a;C 语言的不可替代性 诞生于 20 世纪 70 年代的 C 语言&#xff0c;历经半个世纪的技术浪潮&#xff0c;至今仍是编程世界的 “基石语言”。尽管 Python、Java 等高级语言在应用层开发中占据主流&#xff0c;但 C 语言在系统级编程和资…...

一款超级好用且开源免费的数据可视化工具——Superset

认识Superset 数字经济、数字化转型、大数据等等依旧是如今火热的领域&#xff0c;数据工作有一个重要的环节就是数据可视化。 看得见的数据才更有价值&#xff01; 现如今依旧有多数企业号称有多少多少数据&#xff0c;然而如果这些数据只是呆在冷冰冰的数据库或文件内则毫无…...

Vue3组合式API与选项式API的核心区别与适用场景

Vue.js作为现代前端开发的主流框架之一&#xff0c;在Vue3中引入了全新的组合式API(Composition API)&#xff0c;与传统的选项式API(Options API)形成了两种不同的开发范式。在当前开发中的两个项目中分别用到了组合式和选项式&#xff0c;故记录一下。本文将全面剖析这两种AP…...

RedHatLinux(2025.3.22)

1、创建/www目录&#xff0c;在/www目录下新建name和https目录&#xff0c;在name和https目录下分别创建一个index.htm1文件&#xff0c;name下面的index.html 文件中包含当前主机的主机名&#xff0c;https目录下的index.htm1文件中包含当前主机的ip地址。 &#xff08;1&…...

【C++篇】类与对象(上篇):从面向过程到面向对象的跨越

&#x1f4ac; 欢迎讨论&#xff1a;在阅读过程中有任何疑问&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;如果你觉得这篇文章对你有帮助&#xff0c;记得点赞、收藏&#xff0c;并分享给更多对C感兴趣的…...

深搜专题13:分割回文串

描述 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是回文串。返回 s 所有可能的分割方案数。 例如&#xff1a; 输入&#xff1a;“aab” 输出&#xff1a;2 2种方案数是[“a”,“a”,“b”]和[“aa”,“b”] 输入描述 一个字符串 s&#…...

OGG故障指南:OGG-01163 Bad column length (xxx) specified for column

报错 OGG-01163 Bad column length (xxx) specified for column AAA in table OWNER.TABLE, maximum allowable length is yyy原因 源端修改了字段长度。 虽然源端和目标端的长度已经通过DDL语句修改到一致&#xff0c;在extract进程未重启的情况下&#xff0c;生成的trail文…...

智慧运维平台:赋能未来,开启高效运维新时代

在当今数字化浪潮下&#xff0c;企业IT基础设施、工业设备及智慧城市系统的复杂度与日俱增&#xff0c;传统人工运维方式已难以满足高效、精准、智能的管理需求。停机故障、低效响应、数据孤岛等问题直接影响企业运营效率和成本控制。大型智慧运维平台&#xff08;AIOps, Smart…...

基于大语言模型的智能音乐创作系统——从推荐到生成

一、引言&#xff1a;当AI成为音乐创作伙伴 2023年&#xff0c;一款由大语言模型&#xff08;LLM&#xff09;生成的钢琴曲《量子交响曲》在Spotify冲上热搜&#xff0c;引发音乐界震动。传统音乐创作需要数年专业训练&#xff0c;而现代AI技术正在打破这一壁垒。本文提出一种…...