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

双引号与括号

在Tcl中,可通过双引号“”和括号{}将多个单词包括分隔符(例如:换行符和空格)和置换符(例如:美元符号$、方括号[]和反斜杠)等特殊字符组成一组,作为一个参数处理。这实际上也是一种置换操作。...第一个puts命令使用了双引号,可以看到所有置换都随之发生;第二个puts命令使用了括号,相应的内部置换均被阻止。 ? 双引号另一常用情形是出现在嵌套命令中,且嵌套的命令是外层命令参数的一部分。...给变量赋值时,也可以通过括号使特殊字符被当作普通字符处理。如下图所示。在这个例子中,括号阻止了$置换。如果将括号替换为双引号则会报错。 ? 如果在一个脚本中同时使用双引号和括号会是什么结果呢?...给变量b赋值时使用了反斜杠置换,给变量c赋值时使用了双引号加括号,其中双引号在最外层,给变量d赋值时使用了括号加双引号,其中括号在最外层,对比下来可以得出这样的结论:在同时使用双引号和括号时,最外层的做主...对于括号,如前文所述“括号内的置换有可能会被阻止”,这是因为括号的功能稍微复杂一些,但总的来说遵循两个原则:第一个原则是如果括号是用做置换操作,则其内部的置换操作会被阻止;第二个原则是如果括号用做界限符

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

使用双括号初始化集合,可别这么干

Double Brace Initialization should not be used 前言 最近在修改sonar问题时,发现有人使用双括号初始化集合,提示可能发生内存泄漏。...(1000); } } 输出 访问外部类对象的属性:bob Thread name: Finalizer Object: sandy Gc happen 分析 匿名内部类持有外部类对象引用 双括号初始化时...使用了匿名内部类 双括号初始化的方法 非双括号初始化的方法 编译后产生的文件 可以发现,多了一个内部类:A$1.class。...查看内部类字节码 拥有一个外部类的成员变量 通过构造方法传入了外部类对象的引用 将外部类对象的引用赋值给成员变量 执行我们写的put方法 内部类继承于HashMap 发生了内存泄漏 使用非双括号初始化...map的sandy被回收了,而使用双括号初始化map的bob却没有被回收。

78930

编程语言简史:有人不喜欢括号,于是他发明了 Python

这在后来被证明是正确的——在Electron.js被发明出来后 1972年 Dennis Ritchie在贝尔实验室上班上到无聊了,于是他决定写出带有括号的C语言,这门语言取得了巨大成功。...1991年 Guido van Rossum不喜欢括号,于是他发明了Python,语法选择的灵感来源自Monty Python(巨蟒剧团)和Flying Circus(飞行马戏团)。...他先是找到了Netscape然后说这门语言叫做LiveScript,但在代码评审期间Java变得流行起来,所以他们决定最好还是用括号,然后就把它更名为JavaScript。...结果表明,Java却是一个会让他们惹上麻烦的商标,JavaScript随后更名为ECMAScript,但大家还是把它叫做JavaScript。...2001年 Anders Hejlsberg重新发明了Java然后把它叫做C#,因为用C来编程感觉要比Java酷。每个人都喜欢这个新版本的Java,因为它完全不像Java

1.2K70

编程语言简史:有人不喜欢括号,于是他发明了 Python

1972年 丹尼斯·里奇(Dennis Ritchie )在贝尔实验室上班上到无聊的时候,他决定发明带有括号的语言,于是C语言诞生了,最终还取得了巨大的成功。...1991年 Guido van Rossum不喜欢括号,于是决定发明一种没有括号的语言,然后又因为太喜欢英国肥皂剧《Monty Python飞行马戏团》,于是,就把该语言命名为Python。...他先是找到了 Netscape 然后说这门语言叫做 LiveScript,但在代码评审期间 Java 变得流行起来,所以他们决定最好还是用括号,然后就把它更名为 JavaScript。...1996年 詹姆斯·高斯林(James Gosling)发明了Java,这是第一个过度冗长的面向对象编程语言,其中设计模式在实用主义方面几乎为0。...每个人都喜欢这个新版本的Java,因为它完全不像Java

94220

java漫谈-Java只有值传递

《Head First Java》中关于 Java 参数传递的说明: Java 中所传递的所有东西都是值,但此值是变量所携带的值。...《Java编程思想 第四版》中第二章第一节“用引用操作对象”中写到: 尽管一切都看作对象,但操作的标识符实际上是一个对象的引用(reference)。...每个方法的运行都会在Java虚拟机栈中创建一个栈帧,里面存放了局部变量表等内容,方法的运行就是一个栈帧进栈出栈的过程。...形参只有在方法被调用的时候,虚拟机才会分配内存单元,在方法调用结束之后便会释放所分配的内存单元。...相关知识: JVM-Java内存区域 JVM基础小结 换种说法,当调用swap方法时,sa类似C++中的引用,成为地址2503dbd3的一个别名,亦既上面关于《思想》中的引用说的更接近引用而不是指针

61740

Java 基础概念·Java 只有值传递

Java 只有值传递 本文为个人学习摘要笔记。...原文地址:为什么说 Java只有值传递 Java 中的参数传递是值传递还是引用传递的错误理解: 错误理解一:值传递和引用传递,区分的条件是传递的内容,如果是个值,就是值传递。...在主调函数中调用一个函数时,函数名后面括号中的参数称为“实际参数”。...同样传递了一个对象,但是原始参数的值并没有被修改,难道传递对象又变成值传递了? Java 中的值传递 上面的三个栗子,表现的结果不一样,导致大家对 Java 中传递类型产生困惑。...简单点说,Java 中的传递,是值传递,而这个值,实际上是对象的引用。而按共享传递其实只是按值传递的一个特例罢了。所以我们可以说 Java 的传递是按共享传递,或者说 Java 中的传递是值传递。

40030

Java真的只有值传递?

JAVA核心技术卷一中说JAVA程序设计语言中是采用按值调用 值传递和引用传递 值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数...Car b = new Car(“AE86”); 执行这个语句首先会在栈中创建一个b变量,然后在堆中创建一个Car类的实例,然后b指向堆中的实例。...其实在java程序中,将对象传入形参中,也是值传递,基本数据类型值传递就是拷贝一个变量的副本;下面以update2()分析,引用数据类型就是将变量名(b)指向堆的地址复制一份,也就是说在栈中有一个变量名...JAVA中引用数据的传输 赛前,拓海将钥匙配了一个交给了阿树,阿树在比赛中对车进行了改装,比赛完之后阿树和钥匙一起消失了,那么拓海用钥匙开车,车是经过改装过的。...这两个是不同的:引用传递是真的将地址交给了形参,形参和实参始终指向堆中的一个类的实例;而java中引用类型的传递,则是将实参的地址复制一份交给了形参,这就符合值传递的概念,复制一个副本,只不过这里复制的是一个地址罢了

66550

有效的括号java

有效的括号 1、题目描述 题目描述: 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。...有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。...,即不考虑数学意义上括号的意义:也就是说,只要括号正确闭合就行,类似 ([])、({})、[{}]、([{}]) 等也符合题目中有效括号的定义。...若字符串以)、]、}三者之一开头,则为无效字符串,以栈空为条件结束返回false 该思路借鉴了他人的题解,很强大 解题步骤 1、声明一个空栈 2、使用toCharArray()将字符串转为字符数组...第一次解题:只考虑了括号的数量成对,未考虑括号的位置 第二次解题:想的太多,认为{}的包含关系是固定的,即[{}] 为无效括号 第三次解题:对于空字符串的判断使用!

31710

有效的括号(java)

二、题目描述: 题目:        给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。...所以当我仔细观察,却发现了一个特点,跟栈先入后出的特别非常吻合,即若遇到左括号入栈,遇到右括号时将对应栈顶左括号出栈即可,所以只需遍历完所有括号后 ​​stack​​ 仍然为空,这就说明括号是有效的。...所以算法思路就是:​​遍历字符串​​ str,然后分情况: 当遇到一个括号时,在后续遍历中希望有一个相同类型的右括号将其闭合。由于后遇到的左括号要先闭合,因此我们可以将这个左括号放入栈顶。...当遇到一个括号时,我们则需要将一个相同类型的左括号闭合。此时,我们可以取出栈顶的左括号并判断它们是否是相同类型的括号。...动画演示:        如上动画就是结合栈的特点来验证该括号是否有效的一个过程,最终栈空就表示该括号是有效的,栈不为空,则表示该括号无效。

28020
领券