String key = offset == -1 ? keyStroke : keyStroke.substring(offset + 1);
我在网上找到了一些代码的例子,它包含了我不明白的这一行。这些操作员在做什么? String key = offset == -1? keyStroke:keyStroke.substring(offset + 1);
这是在key binding example中找到的一段代码。具体而言,“KeyboardAnimation.java”行37.
这可能会遇到一个愚蠢的问题,但我不知道这里发生了什么。我可以花很长时间做研究,但我觉得这可以通过某人相当容易地解释(我可以更详细地介绍我的推理,但这不是重点)。
我得知,它将String
类型的变量key
设置为某个值。 keyStroke是格式化按键的字符串:
解析字符串并返回KeyStroke。该字符串必须具有以下语法:
*(|)修饰符:= shift |控制| ctrl | meta | alt |同时按下AltGraph
typedID:=键入
typedKey:=长度为1给出的Unicode字符的字符串。
pressedReleasedID:=(压|释放)键
键:= KeyEvent的键代码的名称,即下面的 “VK_” 的名称。
如果未指定键入,按下或释放,则假定已按下。这里有>一些例子:
"INSERT" => getKeyStroke(KeyEvent.VK_INSERT, 0); "control DELETE" => getKeyStroke(KeyEvent.VK_DELETE, InputEvent.CTRL_MASK); "alt shift X" => getKeyStroke(KeyEvent.VK_X, InputEvent.ALT_MASK | InputEvent.SHIFT_MASK); "alt shift released X" => getKeyStroke(KeyEvent.VK_X, InputEvent.ALT_MASK | InputEvent.SHIFT_MASK, true); "typed a" => getKeyStroke('a');
(来自:击键javax.swing.KeyStroke.getKeyStroke(String s)将)
现在,要进什么,我居然不知道:为什么它似乎在那里有一个布尔运算符?问号是做什么的?结肠是做什么的?
我觉得这是我的东西之前应该已经学会了,但还没有...
1.条件运算符'? :(或三元)和2.在两个“int”常量(它们表示位掩码)上按位或者。 –
三元运算符是else if语句的缩写:if(String key = offset == -1){keyStroke} else {keyStroke.substring(offset + 1); } –
对不起,我还是不太明白你们的意思......就@艾略特的评论而言,什么是位掩码?按位或两个int常量?而且,Fady,如果这样的陈述会做什么?我有点儿搞错了,但对细节还是有点困惑......我只学了一个学期的Java,所以我提前为无知的问题道歉... –