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

【浅尝Java】变量与数据类型(含隐式类型转换、强制类型转换、整型与字符串互相转换等)

在这里插入图片描述

🍞自我激励:每天努力一点点,技术变化看得见

文章目录

  • 字面常量
  • 数据类型
  • 变量
    • 变量概念
    • 语法格式
    • 整型变量
      • 字节型变量(byte)
      • 短整型变量(short)
      • 整型变量(int)
      • 长整型(long)
    • 浮点型变量
      • 双精度浮点型(double)
      • 单精度浮点型(float)
    • 字符型变量
    • 布尔型变量
    • 类型转换
      • 自动类型转换
      • 强制类型转换
    • 类型提升
  • 字符串类型

字面常量

我们认识每一门语言时,第一个程序就是“Hello World”,如下面程序所示:

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

而上述程序中的System.out.println("Hello World");语句,不均程序何时运行,输出的都是"Hello World",而"Hello World"就是字面常量。

常量的定义是:程序运行期间,固定不变的量。下方程序中,“Jammingpro”、18、3.141592、‘A’、true、false均为常量,并将其称为字面常量。

public class Date {public static void main(String[] args) {System.out.println("Jammingpro");System.out.println(18);System.out.println(3.141592);System.out.println('A');System.out.println(true);System.out.println(false);}
}

字面常量的分类:

  1. 字符串常量:由"“括起来的,比如"123”、“hello”、“小明”;
  2. 整型常量:程序中直接写出的数字(注意没有小数点),比如:100、1000;
  3. 浮点型常量:程序中直接写的小数,比如:3.141592、0.66;
  4. 字符型常量,由’‘单引号括起来的单个字符,比如’A’、‘1’、‘明’;
  5. 布尔型常量:只有true和false两种;
  6. 空常量:null

数据类型

在Java中数据类型主要分为两类:基本数据类型引用数据类型

基本数据类型有四类八种,四类分别是:整型、浮点型、字符型和布尔型。而八种如下表所示:

数据类型关键字内存占用范围
字节型byte1字节-128~127
短整型short2字节-32768~32767
整型int4字节 2 31 2 31 − 1 2^{31}~2^{31}-1 231 2311
长整型long8字节 − 2 63 2 63 − 1 -2^{63}~2^{63}-1 263 2631
单精度浮点型float4字节有范围,一般不关注
双精度浮点型double8字节有范围,一般不关注
字符型char2字节0~65535
布尔型boolean没有明确规定true和false

注意:
● 不论是在16位系统还是32位系统,int都占用4个字节,long都占8个字节
● 整型和浮点型都是带有符号的
● 整型默认为int型,浮点型默认为double型
● 字符串属于引用类型,该类型将于下文介绍

ps:这里也体现了Java代码具备可移植性,因为C语言的long类型在有的系统是4字节存储,有的是8字节存储,导致了long类型的范围不同。

相关拓展:什么是字节
字节是计算机中表示内存空间大小的基本单位。计算机使用二进制表示数据,规定8个二进制位为1个字节。而内存空间各个单位的关系如下所示:
1字节(byte)=8比特(bit)
1KB = 1024byte
1MB = 1024KB
1GB = 1024MB
若小明的电脑内存为8GB,则该内存包含8×1024×1024×1024字节。

变量

变量概念

在程序中,除了上述的始终不变的常量外,还包含了一些经常改变的内容,比如:时间、数学计算结果、分数等。在Java程序中,将这些经常改变的内容成为变量,而数据类型用来定义不同种类的变量。

语法格式

定义变量的语法格式为:

数据类型 变量名 = 初始值;

下面程序,展示如何定义变量,打印变量和修改变量:

public class Main {public static void main(String[] args) {// 定义整型变量countint count = 1;// 打印变量countSystem.out.println(count);// 修改变量数值并打印count = 100;System.out.println(count);}
}

在这里插入图片描述

整型变量

首先介绍整型变量,为什么整型变量分为byte、short、int和long呢?

举一个生活中的例子:小明和小东一个人买了10本书,一个人买了1本书,售货员给了小明大袋子,给了小东小袋子。若给小东一个大袋子,虽然能装下1本书,但有空间上的浪费。

计算机中的存储空间极其宝贵,若1字节能存储下来,我们就没必要给这个变量分配4字节。这就是为什么整型分为4个种类了。

在这里插入图片描述

字节型变量(byte)

首先介绍byte类型,它可以占据1字节的空间,它可以存储[-128, 127]区间的数据。下面程序展示了,如何定义byte类型,并打印byte类型所能存储的最大值和最小值。

public class Main {public static void main(String[] args) {// 定义byte类型的变量byte b = 2;System.out.println(b);// 打印byte类型的最大值和最小值System.out.println(Byte.MIN_VALUE);System.out.println(Byte.MAX_VALUE);}
}

ps:这里的Byte成为包装类,将于后续文章介绍,这里只要了解它.MAX_VALUE.MIN_VALUE的用法即可。

短整型变量(short)

short类型占据2个字节,它可以存储[-32768,32767]区间的数据,它的包装类为Short。下方代码演示了定义short类型变量,并打印其可以存储的最大值和最小值。

public class Main {public static void main(String[] args) {// 定义short类型的变量short sh = 2;System.out.println(sh);// 打印short类型的最大值和最小值System.out.println(Short.MIN_VALUE);System.out.println(Short.MAX_VALUE);}
}

在这里插入图片描述

若你此前学过类似于C、C++语言,它们支持定义变量的时候,不给它们初始值。但Java要求,在定义变量时必须给出初始值,否则会报错:

public class Main {public static void main(String[] args) {// 定义变量,没有初始化short sh;System.out.println(sh);}
}

在这里插入图片描述

在这里插入图片描述

注意:上述介绍的byte和short的范围都比较小,使用的情况也比较少,使用时注意不要超出范围。不知道初始化为什么数值时,可以将变量初始化为0。

整型变量(int)

int类型是使用最广泛的类型,它占据4个字节存储范围为[ − 2 31 -2^{31} 231, 2 31 − 1 2^{31}-1 2311]包装类为Integer。下面代码演示了如何定义int类型变量,并打印了它的存储范围。

public class Main {public static void main(String[] args) {// 定义int类型的变量int a = 2;System.out.println(a);// 打印int类型的最大值和最小值System.out.println(Integer.MIN_VALUE);System.out.println(Integer.MAX_VALUE);}
}

在这里插入图片描述

长整型(long)

long的存储范围大于int,它占据8个字节可以存储[ − 2 63 -2^{63} 263, 2 63 − 1 2^{63}-1 2631]区间的数据,它的包装类为Long。下面代码演示了如何定义long类型,并打印其存储范围。

public class Main {public static void main(String[] args) {// 定义long类型的变量long a = 2L;System.out.println(a);// 打印long类型的最大值和最小值System.out.println(Long.MIN_VALUE);System.out.println(Long.MAX_VALUE);}
}

注意:在初始化long类型的数值时,要在数值后面加上l(小写L)或者L。由于小写L和数值1、大写I很相似,推荐使用大写L。

上面代码如果去掉数值后面的L,将其改为long a = 2;并不会出错。但如果初始化的数值大于int表示的最大数值2147483647,即若将long a = 2147483648;则程序会出错,因而在long类型初始化时,要在数值后面加L。

public class Main {public static void main(String[] args) {// 定义long类型的变量long a = 2147483678;System.out.println(a);// 打印long类型的最大值和最小值System.out.println(Long.MIN_VALUE);System.out.println(Long.MAX_VALUE);}
}

在这里插入图片描述

浮点型变量

双精度浮点型(double)

Java中存储小数时,使用最广泛的是double类型。double占据8个字节,它的包装类为Double。但Double的存储形式与整型不同,表示范围不用使用2的几次方来计算,关于它的范围可以可以了解IEEE 754标准。

public class Main {public static void main(String[] args) {// 定义double类型变量double num = 3.1415926;System.out.println(num);// double的存储范围System.out.println(Double.MIN_VALUE);System.out.println(Double.MAX_VALUE);}
}

注意:这里的Double.MIN_VALUE打印的是double能存储的最小正数,Double.MAX_VALUE打印的是double能存储的最大整数。

下面看一段程序,并猜测其执行结果:

public class Main {public static void main(String[] args) {int num1 = 5;int num2 = 2;System.out.println(num1 / num2);}
}

在这里插入图片描述
注意:整型和整型的计算结果还是整型,会舍去小数点后面的数值,因而上述程序的结果为2。

再看另一个程序,并猜测其结果:

public class Main {public static void main(String[] args) {double num1 = 1.1;double num2 = 2.2;System.out.println(num1 * num2);}
}

在这里插入图片描述
注意:浮点数的存储空间有限,因而它精度也有限,它的计算结果趋近于真实值,但存在一定误差。

单精度浮点型(float)

float的包装类为Float占据的空间仅4字节,因而它的表示范围和精度小于double,其他特性与double相同。由于float的精度更低,因而使用率也比较低。

ps:java规定,float初始值后面需要加字母f或者F。

public class Main {public static void main(String[] args) {float num1 = 1.1f;float num2 = 2.2f;System.out.println(num1);System.out.println(num2);System.out.println(num1 * num2);}
}

在这里插入图片描述

字符型变量

Java使用char类型来存储字符,并使用单引号+单个字符的形式表示字符的字面常量,char的包装类为Character

public class Main {public static void main(String[] args) {char c1 = 'A';char c2 = '好';System.out.println(c1);System.out.println(c2);}
}

在这里插入图片描述

注意:若你此前学习过C、C++等语言,它们并支持使用单个char字符存储中文。这是由于C/C++使用的ACSII编码表示字符,占据1个字节。而Java使用Unicode编码表示字符,因此一个字符占据两个字节。因而Java能够表示出了中英外的多种字符。

若你直接使用cmd命令行执行javac命令时出现如下错误,则需要在执行javac时加上-encoding UTF-8选项。
在这里插入图片描述

布尔型变量

生活中我们有很多需要真和假两种数值的情况,例如:A说“小明中了1个亿的票”,B说“真的假的?”,A说“假的”。
在这里插入图片描述
表示真和假的值成为布尔值,使用boolean表示,它只有true和false两种值,true表示真,false表示假。boolean的包装类为Boolean

public class Main {public static void main(String[] args) {boolean flag1 = true;boolean flag2 = false;System.out.println(flag1);System.out.println(flag2);}
}

在这里插入图片描述
ps:java虚拟机规范中,并没有明确规定boolean占几个字节,也没有专门用来处理boolean的字节码指令。在Oracle公司的虚拟机实现中,boolean占1个字节。

注意:Java的boolean类型不能和int互相转换,不存在1表示true,0表示false的用法。

类型转换

Java是一种强类型的编程语言,当不同类型的变量相互赋值的时候,会有严格的校验。当参与运算的数据类型不一致时,就需要类型转换。Java中的类型转换分为:自动类型转换(隐式类型转换)和强制类型类型转换(显示类型转换)

自动类型转换

自动类型转换表现为:代码不需要经过任何处理,在代码编译时,编译器会自动进行处理

特点是:数据范围小的转换为数据范围大的,会自动进行转换。

下面代码演示了自动类型转换,int类型的表示范围小于long类型,因而可以直接赋值。

public class Main {public static void main(String[] args) {int num1 = 123456789;long num2 = num1;System.out.println(num1);System.out.println(num2);}
}

在这里插入图片描述
若将上面代码反过来,将long类型赋值给int,则会出错。


public class Main {public static void main(String[] args) {long num1 = 123456789;int num2 = num1;// 出错!!System.out.println(num1);System.out.println(num2);}
}

在这里插入图片描述
在浮点型中,双精度浮点型的范围大于单精度浮点型,因而double赋值给float会出错,而float赋值给double会进行隐式类型转换。


public class Main {public static void main(String[] args) {float num1 = 2.2f;double num2 = num1; // 隐式类型转换(OK)System.out.println(num1);System.out.println(num2);float num3 = num2; // 错误,ERROR!!System.out.println(num3);}
}

在这里插入图片描述

在编译器识别时,整数默认识别为int类型,只要整数不超过byte类型可以直接赋值为byte变量,但若超过byte类型则会报java: 不兼容的类型: 从int转换到byte可能会有损失,short同理。而小数编译器默认识别为double类型,需要在小数后面加上f或F,以告诉编译器其为float类型。

强制类型转换

当大范围类型转换为小范围类型,或者高精度类型转换为小精度类型,无法自动完成(无法自动类型转换),则需要使用强制类型转换。

特点:数据范围大的到数据范围小的

当long转为int,将double转为float,将int转为byte等都需要强制类型转换。代码如下所示:

public class Main {public static void main(String[] args) {long num1 = 123456;int num2 = (int)num1;System.out.println(num2);float num3 = 1.23f;double num4 = (double)num3;System.out.println(num4);byte num5 = 123;int num6 = (int)num5;System.out.println(num6);}
}

在这里插入图片描述
但不相干类型无法相互转换,例如:boolean转换为int。

public class Main {public static void main(String[] args) {boolean flag = true;int num1 = (int)flag;}
}

在这里插入图片描述

注意:
● 不同数值类型的变量转换时,表示范围小的类型能隐式转换为范围大的类型;
● 若需要将表示范围大的转换为表示范围小的,需要强制类型转换,但可能存在精度丢失;
● 强制类型转换不一定能成功,不相干的类型不能相互转换。

注意:由于编译器会默认将整数识别为int类型,若小于byte范围可以直接赋值给byte变量,否则需要强制类型转换。编译器默认将小数识别为double,需要在小数后面加f或F才能识别为float,否则也需要强制类型转换。

public class Main {public static void main(String[] args) {byte num1 = (byte)123456;System.out.println(num1);float num2 = (float)3.1415926;System.out.println(num2);}
}

在这里插入图片描述

类型提升

不同类型的数据之间计算时,小范围数据类型会被自动提升为大的数据类型。

  1. int和long之间:int会提升为long
public class Main {public static void main(String[] args) {int num1 = 123;long num2 = 123;long sum1 = num1 + num2;	// OKint sum2 = num1 + num2;		// ERRORSystem.out.println(sum1);System.out.println(sum2);}
}

在这里插入图片描述

  1. 范围小于int的类型:都会提升为int

代码示例1:

public class Main {public static void main(String[] args) {byte num1 = 1;byte num2 = 2;byte sum = num1 + num2;System.out.println(sum);}
}

在这里插入图片描述

代码示例2:

public class Main {public static void main(String[] args) {short num1 = 1;short num2 = 2;short sum = num1 + num2;System.out.println(sum);}
}

在这里插入图片描述

代码示例3:

public class Main {public static void main(String[] args) {short num1 = 1;byte num2 = 2;short sum = num1 + num2;System.out.println(sum);}
}

在这里插入图片描述

总结:
● 不同类型的数据混合运算,范围小的会被提升为范围大的;
● 对于short,byte这种比4个字节小的类型,会提升成4个字节的int,再计算;

字符串类型

在Java中存储字符串类型时,将变量定义为String即可,而String属于抽象数据类型,并不属于基本数据类型。

public class Main {public static void main(String[] args) {// 定义String类型的变量String s1 = "Jammingpro";String s2 = " hello world";System.out.println(s1);System.out.println(s2);System.out.println(s1 + s2);// 将s1和s2拼接在一起}
}

在这里插入图片描述

在一些场景下,我们需要实现字符串和整型数据之间的转换:

  1. int转为String

下方代码演示了int转为String的两种方法:

public class Main {public static void main(String[] args) {// 定义int类型数据int num = 123456;// 转换为String类型方法1String s1 = String.valueOf(num);System.out.println(s1);// 转换为String类型方法2String s2 = num + "";System.out.println(s2);}
}
  1. String转为int
public class Main {public static void main(String[] args) {// 定义String类型变量String s = "123456";// 转换为int类型int num = Integer.parseInt(s);System.out.println(num);}
}

nice,bro!我写完了这篇文章了,你也看完这篇文章了!一起奖励自己一道力扣题吧~

相关文章:

【浅尝Java】变量与数据类型(含隐式类型转换、强制类型转换、整型与字符串互相转换等)

🍞自我激励:每天努力一点点,技术变化看得见 文章目录 字面常量数据类型变量变量概念语法格式整型变量字节型变量(byte)短整型变量(short)整型变量(int)长整型&#xff08…...

Ubuntu环境下使用uWSGI服务器【以flask应用部署为例】

0、前置内容说明 首先要知道WSGI是什么,关于WSGI服务器的介绍看这篇:WSGI(Web Server Gateway Interface)服务器 由于从Python 3.11开始限制了在系统级 Python 环境中使用 pip 安装第三方包,以避免与系统包管理器&am…...

GCC 使用指南

安装 GCC Ubuntu/Debian: sudo apt update && sudo apt install gcc gCentOS/RHEL: sudo yum install gcc gcc-cmacOS (通过 Homebrew): brew install gcc基本用法 编译 C 程序 gcc hello.c -o hello # 编译 hello.c,生成可执行文件 hello ./hello …...

虚函数 vs 纯虚函数 vs 静态函数(C++)

🧩 一图看懂:虚函数 vs 纯虚函数 特性虚函数(Virtual)纯虚函数(Pure Virtual)语法virtual void foo();virtual void foo() 0;是否必须实现✅ 必须在类中实现❌ 不在基类实现,派生类必须实现是…...

CF1000E We Need More Bosses

CF1000E We Need More Bosses 题目描述 题目大意: 给定一个 n n n 个点 m m m 条边的无向图,保证图连通。找到两个点 s , t s,t s,t,使得 s s s到 t t t必须经过的边最多(一条边无论走哪条路线都经过ta,这条边就是…...

Python:Seaborn 美化图表的技术指南

🎨 1、简述 Seaborn 是建立在 Matplotlib 基础上的高级可视化库,提供了更美观、更简洁的数据统计图表。本文将带你深入了解 Seaborn 的强大功能,并通过多个实践案例掌握使用技巧。 2、Seaborn 1️⃣ 什么是 Seaborn? Seaborn 是一个基于 matplotlib 构建的 Python 可视…...

go实现循环链表

需求 实现循环链表的节点生成、顺序遍历、指定删除。 实现 package mainimport ("fmt" )type zodiac_sign struct {number intdizhi stringanimal stringyear intnext *zodiac_sign }// 添加 // func add_node_by_order(previous_node zodiac_sign, current_…...

QT | 常用控件

前言 💓 个人主页:普通young man-CSDN博客 ⏩ 文章专栏:C_普通young man的博客-CSDN博客 ⏩ 本人giee: 普通小青年 (pu-tong-young-man) - Gitee.com 若有问题 评论区见📝 🎉欢迎大家点赞👍收藏⭐文章 —…...

EasyExcel使用总结

EasyExcel 文章目录 EasyExcel1、导入1.1、基本方式导入1.导入依赖2. 加载源文件基本语法 3. 读取数据行4. 读取结果 1.2、模型映射导入1.定义实体映射类2. 操作读取基本语法 3. 读取数据行4. 读取结果 1.3、导入类型转换器语法 1.4、导入监听器基本语法: 1.5、多行…...

【形式化验证】动态逻辑(DL)的定义解释与示例

动态逻辑(Dynamic Logic, DL)是一种用于描述和验证程序行为的逻辑系统。它结合了命题逻辑、谓词逻辑以及模态逻辑的特点,特别适用于表达程序执行前后的状态变化。以下将从语法、语义以及实际应用等方面详细介绍DL公式的相关内容。 1. 动态逻…...

OpenCv实战笔记(1)在win11搭建opencv4.11.1 + qt5.15.2 + vs2019_x64开发环境

一. 准备工作 Visual Studio 2019(安装时勾选 C 桌面开发 和 Windows 10 SDK) CMake 3.20(官网下载) Qt 5.15.2(下载 Qt Online Installer)安装时勾选 MSVC 2019 64-bit 组件。 opencv 4.11.1 源码下载 git…...

四年级数学知识边界总结思考-上册

目录 一、背景二、过程1.大数的认识**一、知识点梳理****二、知识点的由来****三、作用与意义****四、总结** 2. 公顷和平方千米**一、知识点梳理****二、知识点的由来****三、作用与意义** 3.角的度量**一、知识点梳理****二、知识点的由来****三、作用与意义** 4.平行四边形和…...

(undone) MIT6.S081 2023 学习笔记 (Day10: LAB9 fs file system)

url: https://pdos.csail.mit.edu/6.1810/2023/labs/fs.html 任务1:Large files (moderate) ----------------- 完成 本次作业中,你将扩大xv6文件的最大容量。当前xv6文件被限制为268个块(即268*BSIZE字节,xv6中BSIZE为1024&…...

SpringMVC详解

一:Maven 1.1 概述 (1)项目结构 所有IDE使用Maven创建的项目结构完全一样,maven项目可通用 (2)构建流程(编译、测试、打包、发布) (3)依赖管理 定义&#xff…...

【Python】一直没搞懂生成器是什么。。

生成器 上期我们讲解了迭代器:【Python】一直没搞懂迭代器是什么。。-CSDN博客 这期我们来讲讲它的好兄弟——生成器 生成器 (Generator)? 生成器是一种特殊的 迭代器 (Iterator)。 迭代器 是你可以逐个访问其元素的对象(比如在 for 循环中使用)。列表、元组、字典、字符…...

高等数学同步测试卷 同济7版 试卷部分 上 做题记录 第四章 不定积分同步测试卷 B卷

第四章 不定积分同步测试卷 B卷 一、单项选择题(本大题共5小题,每小题3分,总计15分) 1. 2. 3. 4. 5. 二、填空题(本大题共5小题,每小题3分,总计15分) 6. 7. 8. 9. 10. 三、求解下列各题(本大题共5小题,每小题6分,总计30分) 11. 12. …...

只用Prettier进行格式化项目

1.下载Prettier插件,禁用ESlint 2.在项目根目录新建.prettierrc文件 {"singleQuote": true,"jsxSingleQuote": true,"printWidth": 100,"trailingComma": "none","tabWidth": 2,"semi": f…...

ARM寻址方式

寻址方式指的是确定操作数位置的方式。 寻址方式: 立即数寻址 直接寻址(绝对寻址),ARM不支持这种寻址方式,但所有CISC处理器都支持 寄存器间接寻址 3种寻址方式总结如下: 助记符 RTL格式 描述 ADD r0,r1…...

2025年- H25-Lc133- 104. 二叉树的最大深度(树)---java版

1.题目描述 2.思路 返回左右子树中,最高高度的子树,高度从0开始计数。 3.代码实现 class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val val;…...

深入理解 Spring MVC:DispatcherServlet 与视图解析机制​

import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Locale; import java.util.Map;// 继承自 FrameworkServlet 的 DispatcherServlet 类…...

Python基本语法(lambda表达式)

lambda表达式 lambda的一般形式是在关键字lambda后面跟一个或多个参数,之后再紧跟一个 冒号,接下来是一个表达式。lambda是一个表达式,而不是一个语句,它能够出现 在Python语法不允许def出现的地方。作为表达式,lambd…...

嵌入式按键原理、中断过程与中断程序设计(键盘扫描程序)

按键去抖动  通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号波型如下图。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。…...

C++负载均衡远程调用学习之实时监测与自动发布功能

目录 1.LarsDns-V0.3BackenThread后端实时监控线程流程 2.LarsDns-V0.3加载当前Route版本号方法实现 3.LarsDns-V0.3加载RouteChange修改表的信息 4.LarsDns-V0.3实现实时监控流程线程业务 5.LarsDnsV0.3编译bug修改和功能测试 6.Lars Web管理界面的集成 7.LarsDnsV0.3 D…...

VSCode常用插件推荐

文章目录 VSCode常用插件推荐1 Git相关插件2 代码格式3 AI工具4 语言插件通用工具参考 VSCode常用插件推荐 1 Git相关插件 2 代码格式 3 AI工具 4 语言插件 通用工具 参考 50 个 VSCode 必装插件推荐 https://mp.weixin.qq.com/s/b_OKvg3hdavtnv7pbWcKWg...

性能优化实践:内存优化技巧

性能优化实践:内存优化技巧 在Flutter应用开发中,内存优化是提升应用性能的关键环节之一。本文将从实战角度深入探讨Flutter内存优化的各种技巧,帮助你构建高性能的Flutter应用。 一、内存分析工具使用 1. DevTools内存分析器 启动DevTool…...

WPF中Behaviors

行为的好处 可以把复杂的界面逻辑抽象出去&#xff0c;让xaml的界面设计更简单&#xff0c;更清爽 1.安装包 Microsoft.Xaml.Behaviors.Wpf2.简单实现拖动效果 <Border Width"100"Height"100"Background"Red"><i:Interaction.Behav…...

FreeRTOS菜鸟入门(十)·消息队列

目录 1. 基本概念 2. 数据存储 3. 运作机制 4. 阻塞机制 4.1 出队阻塞 4.2 入队阻塞 5. 操作示意图 5.1 创建队列 5.2 向队列发送第一个消息 5.3 向队列发送第二个消息 5.4 从队列读取消息 6. 消息队列控制块 7. 消息队列常用函数 7.1 消息队列创建…...

Day3:设置页面全局渐变线性渐变背景色uniapp壁纸实战

效果&#xff1a; 页面全局渐变线性渐变背景色会让这个设计更加有质感 想给页面加背景的时候&#xff0c;就给最外部的布局容器添加一个pageBg这样一个类别 接下来&#xff0c;我们就可以在之前写的common的公共的style里的common-style.css里改变它就行了 线性渐变&#xff1…...

Ray开源程序 是用于扩展 AI 和 Python 应用程序的统一框架。Ray 由一个核心分布式运行时和一组用于简化 ML 计算的 AI 库组成

​一、软件介绍 文末提供程序和源码下载 Ray开源程序 是用于扩展 AI 和 Python 应用程序的统一框架。Ray 由一个核心分布式运行时和一组用于简化 ML 计算的 AI 库组成 二、Ray AI 库的更多信息 数据&#xff1a;适用于 ML 的可扩展数据集训练&#xff1a;分布式训练Tune&…...

19、权限控制:分院帽系统——React 19 RBAC实现

一、分院帽的魔法本质 "RBAC是霍格沃茨城堡的智能分院帽&#xff0c;用角色编织的星轨矩阵阻隔黑魔法入侵&#xff01;" 魔法部安全司官员挥舞魔杖&#xff0c;角色-权限的量子纠缠态在空中交织成防护结界。 ——基于《国际魔法联合会》第7号安全协议&#xff0c;RB…...

P1802 5 倍经验日

P1802 5 倍经验日 - 洛谷 题目背景 复制Markdown &#xff5b;展开 进入IDE模式 现在乐斗有活动了&#xff01;每打一个人可以获得5倍经验&#xff01;absi2011却无奈的看着那一些比他等级高的好友&#xff0c;想着能否把他们干掉。干掉能拿不少经验的。 题目描述 现在abs…...

赋予网页健壮的灵魂 —— TypeScript(下)

7 DOM 操作与类型定义&#xff1a;赋予网页真正的交互 回到最初的目标&#xff1a;让网页动起来。在 TypeScript 中&#xff0c;我们如何安全地操作 HTML 元素并响应用户的交互呢&#xff1f;TypeScript 提供了内置的类型定义来描述浏览器环境中的各种对象&#xff08;如 docu…...

ARM Linux 设备树

Linux 设备驱动开发详解&#xff1a;基于最新的Linux 4.0内核, 机械工业出版社, 宋宝华, 2015 1. 设备树的起源 • 背景: ARM架构中大量板级代码冗余&#xff0c;硬编码在mach-xxx目录&#xff0c;设备树&#xff08;Device Tree&#xff09;引入结构化描述硬件。 • 目的: 减…...

35、C# 中的反射(Reflection)

反射是 C# 和 .NET 框架中的一个重要特性&#xff0c;它允许程序在运行时检查、访问和操作类型、对象、属性和方法等元数据信息。 反射的核心概念 运行时类型检查&#xff1a;反射允许你在程序运行时获取类型的详细信息&#xff0c;而不需要在编译时知道这些信息。动态操作&a…...

驱动中的 mmap() 函数和 file_operations 中的 mmap() 原型的区别

在 Linux 驱动开发中&#xff0c;mmap() 系统调用和 file_operations 结构中的 mmap() 方法虽然功能相关&#xff0c;但原型和用途有显著区别。以下是两者的详细对比&#xff1a; 1. 系统调用 mmap() 的原型 这是用户空间程序调用的系统调用接口&#xff0c;定义在 <sys/mma…...

Go语言八股文之Map详解

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…...

矿泉水瓶的绘制

1.制作中心矩形&#xff0c;大小为60&#xff0c;注意设置矩形的两条边相等 2.点击拉伸&#xff0c;高度为150mm 3.使用圆角命令&#xff0c;点击连接到开始面&#xff0c;同时选中4条边&#xff0c;进行圆角转化&#xff0c;圆角大小为10mm&#xff0c;点击多半径圆角&#xf…...

LeetCode 热题 100 54. 螺旋矩阵

LeetCode 热题 100 | 54. 螺旋矩阵 大家好&#xff0c;今天我们来解决一道经典的算法题——螺旋矩阵。这道题在LeetCode上被标记为中等难度&#xff0c;要求我们按照顺时针螺旋顺序返回矩阵中的所有元素。下面我将详细讲解解题思路&#xff0c;并附上Python代码实现。 问题描述…...

方案精读:业财融合转型路径和华为实践【附全文阅读】

在当今快速变化、竞争激烈的时代,业务面临不确定性,业财融合至关重要。以华为为例,其从财务到财经的转型,历经财务四统一变革、IFS 变革等,构建了包含财经能力中心(COE)、业务伙伴(BP)和财经共享中心(SSC)的财务组织架构 。通过实现财务四算拉通、提升预算预测、项目…...

AIDC智算中心建设:计算力核心技术解析

目录 一、智算中心发展概览 二、计算力核心技术解析 一、智算中心发展概览 智算中心是人工智能发展的关键基础设施&#xff0c;基于人工智能计算架构&#xff0c;提供人工智能应用所需算力服务、数据服务和算法服务的算力基础设施&#xff0c;融合高性能计算设备、高速网络以…...

Javase 基础加强 —— 02 泛型

本系列为笔者学习Javase的课堂笔记&#xff0c;视频资源为B站黑马程序员出品的《黑马程序员JavaAI智能辅助编程全套视频教程&#xff0c;java零基础入门到大牛一套通关》&#xff0c;章节分布参考视频教程&#xff0c;为同样学习Javase系列课程的同学们提供参考。 01 认识泛型…...

PowerShell 备份 Windows10/11 还原计算机驱动程序SOP

一、现在计算机C目录下创建一个新的文件夹名称为 driverbackup 二、打开cmd 以管理员身份执行 dism /online /export-driver /destination: C:\driverbackup 在正常情况下&#xff0c;Windows 10会自动检测您的设备所需的驱动程序&#xff0c;并将其安装到您的PC上。 但是&am…...

Python 中的 collections 库:高效数据结构的利器

Python 中的 collections 库&#xff1a;高效数据结构的利器 在 Python 编程中&#xff0c;数据结构的高效使用往往能极大地提升代码的性能和可读性。今天&#xff0c;就让我们来深入了解一下 Python 的 collections 库&#xff0c;它是一个非常实用且强大的工具库&#xff0c…...

2025年- H24-Lc132-94. 二叉树的中序遍历(树)---java版。

1.题目描述 2.思路 递归遍历&#xff1a;返回值&#xff0c;中序遍历的节点值列表 List。 &#xff08;1&#xff09;首先是一个中序遍历的结果函数&#xff0c;传入root参数&#xff0c;定义一个节点值列表result&#xff0c;然后递归调用中序遍历的函数 &#xff08;2&#…...

第十六届蓝桥杯单片机组省赛(第一套)

看到很多人在问第十六届蓝桥杯单片机难不难&#xff0c;以及实现多少功能可以获得省一。 先介绍下我的作答情况吧&#xff0c;选择题只对一题&#xff0c;程序题的求连续两次距离差值没有考虑负数的情况&#xff0c;其他功能都实现了&#xff0c;成绩是福建省省一第一页&#x…...

使用python写多文件#inlcude

使用下面的程序可以将当前文件夹下面的.c文件的写入main.h文件&#xff0c;我这里是将自己的基于标准库stm32初始化io文件为例。 import osbase ["#ifndef main_H","#define main_H\n","#endif" ]includes set() for file in os.listdir():if…...

深度学习中保存最优模型的实践与探索:以食物图像分类为例

深度学习中保存最优模型的实践与探索&#xff1a;以食物图像分类为例 在深度学习的模型训练过程中&#xff0c;训练一个性能良好的模型往往需要耗费大量的时间和计算资源。而保存最优模型不仅可以避免重复训练&#xff0c;还能方便后续使用和部署。本文将结合食物图像分类的代…...

OpenCv实战笔记(2)基于opencv和qt对图像进行灰度化 → 降噪 → 边缘检测预处理及显示

一、实现效果 二、应用场景 这三步是经典的 “灰度化 → 降噪 → 边缘检测” 预处理流程&#xff0c;常用于&#xff1a; 计算机视觉任务&#xff08;如物体识别、特征提取&#xff09;。 图像分析&#xff08;如文档扫描、车牌识别&#xff09;。 减少后续算法的计算复杂度&a…...

个人文章不设置vip

今天没登录打开自己文章&#xff0c;发现自己读自己文章还要充值。就感觉很扯。 继而去查看个人的历史文章&#xff0c;发现很多被标注为高质量的文章设置成了VIP文章。 如果仅有一两篇&#xff0c;还可能是本人手滑误设置&#xff0c;这么多就解释不通了。 &#xff08;大概有…...

【聚类分析】基于copula的风光联合场景生成与缩减

目录 1 主要内容 风光出力场景生成方法 2 部分程序 3 程序结果 4 下载链接 1 主要内容 该程序方法复现《融合风光出力场景生成的多能互补微网系统优化配置》风光出力场景生成部分&#xff0c;目前大多数研究的是不计风光出力之间的相关性影响&#xff0c;但是地理位置相近…...