首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java变量,替换详解。

群友在微信群讨论一个话题,有点意思,特拿出来分享一下。 输出true false 来看下面这段程序,和群友分享大致一样。...首先来理解下变量: Java,一个用final定义变量,不管它是类型变量,只要用final定义了并同时指定了初始值,并且这个初始值是在编译时就被确定下来,那么这个final变量就是一个变量。...编译器会把程序所有用到该变量地方直接替换成该变量值,也就是说编译器能对变量进行替换。...final String a = "hello"; final String b = a; final String c = getHello(); a在编译期间就能确定下来,而b、c不行,所以a是变量...所以,再回到上面的程序,finalWorld2和finalWorld4是final定义,也是在编译期间能确定下来,所以它能被替换,编译器就会让finalWorld2和finalWorld4指向字符串池中缓存字符串

3.6K50
您找到你想要的搜索结果了吗?
是的
没有找到

#和##用法

printf(STR(vck)); // 输出字符串"vck"     printf("%d   ", CONS(2,3)); // 2e3 输出:2000     return 0;   }   二、当参数是另一个时候...  需要注意是凡定义里有用'#'或'##'地方参数是不会再展开.   1, 非'#'和'##'情况   #define TOW (2)   #define MUL(a,b) (a*b)  ...printf("%d*%d=%d   ", TOW, TOW, MUL(TOW,TOW));   这行会被展开为:   printf("%d*%d=%d   ", (2), (2), ((2)*(...加多一层中间转换.   加这层用意是把所有参数在这层里全部展开, 那么在转换那一个(_STR)就能得到正确参数.  ...第二层: --> ___ANONYMOUS1(static int, _anonymous, 70);   第三层: --> static int _anonymous70;   即每次只能解开当前层

1.1K20

聊聊Swift

聊聊Swift ,Macros是一种常见编程技术,传统C语言中,即包含了功能。这种功能,简单来说是在代码预编译阶段进行静态替换,是一种非运行时特性。...但元编程能力可以大大提高编程灵活性和复用性,Swift在5.9版本重新引入了功能,并且是以一种全新方式来定义和实现,在提供灵活性同时保证代码安全性和可靠性。...但这也有一些缺陷,相比与C语言,Swift定义非常抽象,实现复杂,不太利于开发者进行理解。...Swift分为两类: 1 - 独立 2 - 附加 其中,独立单独出现,单独使用,不会附加到任何声明(可以理解为原始代码)上。附加则需要配合声明一起使用,通常是为了向原代码增加一些功能。...这些因为是标准库,我们无法查看展开后样子,如果是自定义则可以直接展开查看,后面我们再介绍。

22110

Rust过程

x变量是一个表达式(用x:expr标记),所以在展开后它知道如何正确处理,会将其展开为((1 + 1) * (1 + 1))。 然而这只是书本上常见简单用法。...对于编程,Rust中提供了几种过程库操作支持,即: 1、Syn 它是基于TokenStream一种语法分析过程,它并不很强大,需要自定义扩展一些,比如Rust函数和闭包等。...过程(Procedure Macro)是Rust一种特殊形式,它将提供比普通更强大功能。方便起见,本文将Rust由macro_rules!定义称为规则以示区分。...属性(Attribute macro):用在结构体、字段、函数等地方,为其指定属性等功能。如标准库#[inline]、#[derive(...)]等都是属性。...在展开过程,遇到派生时,会将整个结构体(或enum、union)展开成TokenStream作为派生函数输入,然后将其输出TokenStream附加到结构体后面,再继续作语法分析。

2.5K30

打造vimpython IDE

2,pydoc.vimvim查找python文档,这个相当管用,你可以调用Pydoc ,也可以当光标停在某个关键词位置时,按下K就能弹出文档,设置pydoc执行路径如下,后面的路径和你执行....vimrc设置了 filetype plugin indent on  另外这个只支持python2.5以上版本,这个比较坑爹 4,nerd_tree.vim vim文件浏览器,我做了一个映射...,但是vim版本必须是vim 7.2以上,另外支持自动补全比较好就是pydiction.vim,比系统自带自动补全强大多了,支持tab补全,这家伙有3个组成部分。...vim-debug 这个依赖于系统vim-debug模块,支持交互式调试,设置断点,跳出跳进函数,支持查看栈和变量,我配置: " debugger keyboard shortcuts map <F5...打开终端功能,非常有用,可以vim buffer执行python 命令(:ConqueTerm shell )也可执行bash命令(:ConqueTerm bash)  接下来,我们再来分析下.vimrc

1K20

在Linuxvim用法

vi 编辑器是所有 Unix 及 Linux 系统下标准编辑器,它强大不逊色于任何最新文本编辑器,这里只是简单地介绍一下它用法和一小部分指令。...复制 「yw」:将光标所在之处到字尾字符复制到缓冲区。 「#yw」:复制#个字到缓冲区 「yy」:复制光标所在行到缓冲区。...A) 列出行号 「set nu」:输入「set nu」后,会在文件每一行前面列出行号。...B) 跳到文件某一行 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字 15,再回车,就会跳到文章第 15 行。...沈唁志|一个PHPer成长之路! 原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:在Linuxvim用法

2.9K31

DragonOSREAD_ONCE()和WRITE_ONCE()

DragonOS实现了与Linux相似的READ_ONCE()以及WRITE_ONCE(),主要目的在于解决并行计算场景下,编译器错误优化导致数据访问错误问题。...下面进行简单介绍: 这两个主要是为了解决并行访问问题。编译器在优化代码时候,会对一些操作进行重排序,或者删掉一些它认为无用操作。...为了保证代码之间不乱序,我们可以使用READ_ONCE()和WRITE_ONCE(),告知编译器涉及到操作之间不能乱序。...他们之间区别 细心小伙伴会发现:对于读取一个变量值,好像这两个都能实现哦!对于这个问题,我们需要回到最开始出发点:我们到底是要保护哪个操作不被乱序?...阅读这两个源代码之后我们不难发现: // READ_ONCE能保证变量x读取操作不被乱序,但不能确保对a[0]、a[1]写入操作不乱序 a[0] = READ_ONCE(x); a[1] = READ_ONCE

62720

ReactiveCocoa 奇妙无比” 魔法

在ReactiveCocoa ,封装了很多非常实用”,使用这些“”为我们开发带来了很多便利。 今天就来盘点一下RAC是如何实现。...目录 1.关于 2.ReactiveCocoa 3.ReactiveCocoa 中常用 一. 关于 (Macro),是一种批量处理称谓。...ReactiveCocoa,如果不查看源码分析,会觉得那些都像魔法一样奇妙无比,接下来就来解开“”魔法神秘面纱。 二. ReactiveCocoa ?...在ReactiveCocoa,作者定义了这么一些基础,作为“元”,它们是构成之后复杂基础。在分析常用之前,必须要先分析清楚这些元具体实现。...这两个在ReactiveCocoa也是非常常见,专门用在RACTuple。 先看RACTuplePack(...)

2.5K20

vue3到底是什么东西?

前言 从vue3开始vue引入了,比如defineProps、defineEmits等。我们每天写vue代码时都会使用到这些,但是你有没有思考过vue到底是什么?...然后执行render函数生成虚拟DOM,再调用浏览器DOM API根据虚拟DOM生成真实DOM挂载到浏览器上。 vue3是什么?...总结 现在我们能够回答前面提三个问题了。 vue到底是什么?...vue3是一种特殊代码,在编译时会将这些特殊代码转换为浏览器能够直接运行指定代码,根据功能不同,转换后代码也不同。 为什么这些不需要手动从vueimport?...如果想要在vue中使用更多,可以使用 vue macros。这个库是用于在vue探索更多和语法糖,作者是vue团队成员 三咲智子 。

13110

Vim 编辑器开发 Python 应用 Vim 插件

Python-mode 是一个 Vim 插件,它使你能够在 Vim 编辑器更快利用包括 pylint、rope、pydoc、pyflakes、pep8、autopep8、pep257 和 mccable...推荐阅读:如何用 Bash-Support 插件将 Vim 编辑器打造成编写 Bash 脚本 IDE 这个插件包含了所有你在 Vim 编辑器可以用来开发 Python 应用特性。...Python 缩进 能够在 Vim 运行 Python 代码 能够添加/删除断点 支持 Python 对象 Vim 动作和操作符 能够在运行同时检查代码(pylint、pyflakes、pylama...如何在 Linux 系统Vim 安装 Python-mode 首先安装 Pathogen (它使得安装插件超级简单,并且运行文件位于私有目录),从而更加容易安装 Python-mode 运行下面的命令来获取...在本教程,我向你们展示了如何在 Linux 中使用 Python-mode 来配置 Vim 。请记得通过下面的反馈表来和我们分享你想法。

1.7K80

技术|在 Linux 上使用 groff-me 格式化你学术论文

这就是我方法,因为我需要为我课程写论文,但我更喜欢呆在Linux。...我从我们“大Unix”校园计算机实验室得知,Unix系统提供了一组文本格式化程序nroff和troff,它们是同一系统不同接口:nroff生成纯文本输出,适用于屏幕或行式打印机,而troff产生非常优美的输出...在Linux上,nroff和troff被合并为GNUtroff,通常被称为groff。我很高兴看到早期Linux发行版包含了某个版本groff,因此我着手学习如何使用它来编写课程论文。...我学到第一个集是-me包,一个简单易学集。 关于groff,首先要了解是它根据一组来处理和格式化文本。通常是个两个字符命令,它自己设置在一行上,并带有一个引导点。...可能包含一个或多个选项。当groff在处理文档时遇到这些一个时,它会自动对文本进行格式化。 下面,我将分享使用groff-me编写课程论文等简单文档基础知识。

1.6K30
领券