使用列表的数组声明

时间:2011-10-20 22:35:51

标签: java arrays object substring declaration

所以我注意到了一些事情。

在编码包上执行递归方法时,我查看了:

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

5 个答案:

答案 0 :(得分:2)

  

由于我似乎无法找到控制“[]”的类,因为它们不仅仅是“那里”它们必须被添加到某种方式。

他们 “就在那里”因为他们被硬编码为语言和平台的一部分。

如果要更改语言处理数组的方式,则必须对Java编译器进行更改。如果要更改它们在执行时的行为方式,则必须更改JVM ...

答案 1 :(得分:2)

你不能像c ++那样重载运算符,所以在java中无法实现那种精确的语法。但是在List接口中已经有一个subList函数暴露,也许这就是你想要的?

如果你对这样的事情感兴趣,你应该看看替代的JVM语言,比如scala或groovy,它们的语法更加灵活。例如,请参阅:

Slice notation in scala?

答案 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函数将执行您想要的操作(“类似于子串的方法”)(只是没有您想要的语法)。