所以我注意到了一些事情。
在编码包上执行递归方法时,我查看了:
String abc = "abc";
String mod = abc.substring(1);
System.out.println(mod); //prints "bc"
所以我想:
嘿,为什么没有类似子串的方法呢?
例如:
String[] abc = {"a", "b", "c"};
String[] mod = abc[1, str.length];
for(int i = 0; i < mod.length; i++){
System.out.print(mod[i]);
if(i + 1 != mod.length){
System.out.print(", ");
}
}
// This would print out: "b, c"
因此,正如您可以从中看到的,它就像substring方法一样,它将第一个数组中的Objects从开始索引添加到第二个数组,再到结束索引,但不包括结束索引(避免OutOfBounds Exceptions)
由于我似乎无法找到控制“[]”的类,因为它们不仅仅是“那里”它们必须被添加到某种方式。
感谢任何建设性的批评和反馈。
FirexRanger8
答案 0 :(得分:2)
由于我似乎无法找到控制“[]”的类,因为它们不仅仅是“那里”它们必须被添加到某种方式。
他们
如果要更改语言处理数组的方式,则必须对Java编译器进行更改。如果要更改它们在执行时的行为方式,则必须更改JVM ...
答案 1 :(得分:2)
你不能像c ++那样重载运算符,所以在java中无法实现那种精确的语法。但是在List接口中已经有一个subList函数暴露,也许这就是你想要的?
如果你对这样的事情感兴趣,你应该看看替代的JVM语言,比如scala或groovy,它们的语法更加灵活。例如,请参阅:
答案 2 :(得分:2)
它们是Java语言规范的一部分,它们的功能在Java中无法更改。
还有其他语言(即:Groovy)以JVM为目标语言,具有类似于Java的语言语法,并支持诸如数组索引等覆盖运算符之类的东西。
但是,它无法用Java完成。
答案 3 :(得分:2)
我很确定这是一个已经发明的轮子:
String[] abc = { "a", "b", "c" };
String[] mod = Arrays.copyOfRange(abc, 1, abc.length); // now mod = [b, c]
答案 4 :(得分:1)
java.util.Arrays.copyOfRange函数将执行您想要的操作(“类似于子串的方法”)(只是没有您想要的语法)。