小编kyl*_*art的帖子

字符串实习在Java 7+中如何工作?

所以,我意识到我要提出的问题涉及到一次又一次被打死的话题,然而,即使在阅读了我能找到的所有答案和文档之后,我仍然对此感到困惑.字符串实习.也许是因为我对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()而且很多问题让我头晕目眩.谢谢!

java string heap jvm string-interning

16
推荐指数
2
解决办法
3192
查看次数

承诺-捕获无效

为什么下面的代码没有捕获引发的异常?

$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

javascript promise angularjs

4
推荐指数
2
解决办法
2061
查看次数

返回从函数分配的字符串文字的 const char * 是否安全?

我知道这是安全的...

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)

字符串文字的内容是否被复制到自动数组存储中?发生什么了?

c pointers c-strings

2
推荐指数
1
解决办法
764
查看次数

为什么Haskell中的Fractional类型类本身不可订购?

假设我有以下代码:

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的文档,从语法/层次角度来看,这是有意义的.

是什么给出了什么?为什么真正的价值是可订购的,而不是分数值?我不明白其理由.

haskell types

2
推荐指数
1
解决办法
113
查看次数

Zsh选项卡完成无法正常工作

虽然我过去曾经使用过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)

我究竟做错了什么?

shell zsh autocomplete

1
推荐指数
1
解决办法
5530
查看次数