所以,我意识到我要提出的问题涉及到一次又一次被打死的话题,然而,即使在阅读了我能找到的所有答案和文档之后,我仍然对此感到困惑.字符串实习.也许是因为我对JVM缺乏了解; 也许这是由于Java 7中引入的变化使许多上述答案和文档贬值.无论哪种方式,我都被困住了,我希望有人可以帮助我更清楚地理解这个概念......
String a = "text";
String b = new String("text");
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我理解将创建两个String对象.我也明白在内存中只有一个包含序列't','e','x'和't'的char数组.但是,内存中的每个字符串对象实际存储在哪里?如果我读过的内容我已经正确阅读:变量的引用't', 'e', 'x', and 't'将存储在常量池中,而引用a将存储在堆中,对吧?如果是这种情况,我对实习池如何维护实习字符串感到困惑.它是否跟踪常量池中定义的字符串以及b从堆中手动内化(调用)的字符串?JVM是否创建常量池中定义的字符串对象并将它们加载到实习池中?我很困惑这一切是如何运作的......
再次,对于提出这样令人困惑/愚蠢的问题感到遗憾,这只是因为我对结构和内部工作方式相对较新,.intern()而且很多问题让我头晕目眩.谢谢!
为什么下面的代码没有捕获引发的异常?
$http.get(null) // <- this throws a fit
.catch(function (e) {
console.log(e); // <- this is not being triggered
});
Run Code Online (Sandbox Code Playgroud)
错误:[$ http:badreq] Http请求配置url必须是字符串或$ sce受信任对象。收到:null https://errors.angularjs.org/1.7.2/$http/badreq?p0=null
我知道这是安全的...
const char *get_str_literal() {
return "I literally can't even";
}
Run Code Online (Sandbox Code Playgroud)
但这是吗?
const char *get_str_literal() {
const char *str = "I literally can't even";
return str;
}
Run Code Online (Sandbox Code Playgroud)
如果不是,为什么?
编辑:下面的代码片段与上面的第二个代码片段有何不同?
const char *get_str_literal() {
const char str[] = "I literally can't even";
return str;
}
Run Code Online (Sandbox Code Playgroud)
字符串文字的内容是否被复制到自动数组存储中?发生什么了?
假设我有以下代码:
import Data.List
f :: (Fractional a) => [a] -> Int -> a
f xs n = sort xs !! n
Run Code Online (Sandbox Code Playgroud)
这不会编译,因为sort是类型Ord a => [a] -> [a].这对我来说似乎很奇怪,因为我认为所有Num类型的值都是固有可订购的.要解决此问题,我需要添加一个额外的类型约束(即(Fractional a, Ord a) => [a] -> Int -> a).看看Haskell的文档,从语法/层次角度来看,这是有意义的.
是什么给出了什么?为什么真正的价值是可订购的,而不是分数值?我不明白其理由.
虽然我过去曾经使用过Oh-My-Zsh,但我这次决定(即设置一台新电脑)我会尽量避免安装它以使事情变得更加精简.现在我正试图挑选Oh-My-Zsh的不敏感制表功能.围绕其源代码库挖掘,我找到了以下行:
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*'
我相当有信心这是Oh-My-Zsh按照我的要求执行的行,所以我尝试将它添加到我的.zshrc.重启了我的终端.输入cd desk,然后点击[tab].没有骰子 - 我没有得到cd Desktop/.
以下是整个.zshrc参考:
# pure shell theme
autoload -U promptinit; promptinit
prompt pure
# completion definitions
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*'
fpath=(/usr/local/share/zsh-completions $fpath)
# syntax highlighting (must be last line)
source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?