黑马程序员技术交流社区

标题: 为什么不能定义字符串数组 [打印本页]

作者: 刘印12    时间: 2013-3-29 13:36
标题: 为什么不能定义字符串数组
我用eclipse 编译的时候为什么我就不能定义字符串数组呢??请各位大侠们看看我下面到底是那个地方错了
public class String{
    public static void main(String[] args){
         String str={"add","df","ge","rtr"};//报错
         ........
    }
}
作者: Just_Only    时间: 2013-3-29 13:40
可以定义字符串数组的啊,
String str={"add","df","ge","rtr"};//报错
应该是这样的,String[] str=new String[]{"add","df","ge","rtr"}
作者: 奋斗2013    时间: 2013-3-29 13:50
一维数组的声明语法是:
                       数组类型  数组名[]; 或 数组类型[] 数组名;
     为数组分配内存空间的格式如下:
                       数组名字=new 数组类型[数组长度];
      String数组应该这样定义并初始化:String  str[] = new String[]{"add","df","ge","rtr"} 或是 String str[] ={"add","df","ge","rtr"};
你的String数组定义中缺少“[]"。
作者: 董延京    时间: 2013-3-29 13:52
String str这能是字符串数组变量么?你这也太马虎了吧。main方法的参数就有一个标准的写法。
字符串数组声明:String[] str或者 String str[];这样才是一个字符串数组的表示方法。
作者: 陈丽莉    时间: 2013-3-29 13:58
还有问题的话,继续追问;没有了请将帖子分类改成【已解决】~
作者: 刘印12    时间: 2013-3-29 14:05
对不起大家  我帖子写错了 我的程序是下面这个样子的但是还是报错,我现在非常痛苦
public class String{
    public static void main(String[] args){
         String[] str={"add","df","ge","rtr"};//报错
         ........
    }
}
作者: HM张健    时间: 2013-3-29 15:05
本帖最后由 HM张健 于 2013-3-29 15:08 编辑
刘印12 发表于 2013-3-29 14:05
对不起大家  我帖子写错了 我的程序是下面这个样子的但是还是报错,我现在非常痛苦
public class String{
  ...

额   String类是系统类  你定义的类是String 把系统类覆盖了 所以你后面报的错是类型不符 把类名改下  或者你改成这样也行
  1. public class String{
  2.     public static void main(String[] args){
  3.             
  4.                String str1 = new String();
  5.                String str2 = new String();
  6.          String[] str={str1,str2};//报错
  7.       
  8.     }
  9. }
复制代码

作者: 米腾达    时间: 2013-3-29 15:39
本帖最后由 米腾达 于 2013-3-29 15:42 编辑

自定义类与系统内的类不能同名
作者: 陆旭东    时间: 2013-3-29 15:57
字符串数组类型修饰符应该是String[]才对
作者: 杜加璇    时间: 2013-3-30 21:23
数组的定义格式是 数组类型[] 数组名={元素} ;数组类型[] 数组名=new 数组类型[]{元素};
你改成 String []str={"add","df","ge","rtr"}; String[] str=new String[]{"add","df","ge","rtr"}; 这样就可以了
作者: 陈丽莉    时间: 2013-3-30 23:44
若还有问题,继续追问;没有的话,将帖子分类改成【已解决】哦~  

作者: 匿名    时间: 2013-3-31 12:34
本帖最后由 王俊杰 于 2013-3-31 12:39 编辑

这个问题看来很有意思~~  没想到还关系到java endorsed技术
我不知道你的包名是什么
可是我想你可以自己写个类也叫java.lang.String 我验证了一下 没有问题
  1. package java.lang;

  2. public class String {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                 System.out.println("Hello");
  9.         }

  10. }
复制代码
可是运行的时候发生了有意思的事情
错误: 在类 java.lang.String 中找不到主方法, 请将主方法定义为:
   public static void main(String[] args)


这说明class loader没有去找你的String类,而是去自己的库里找jre.jar里面的java.lang.String

又及:java中的endorsed技术
官方解释 java endorsed http://java.sun.com/javase/6/docs/technotes/guides/standards/index.html  (为什么我弄的链接总是不成功。。。。)
Specifying the -Djava.endorsed.dirs=lib/endorsed system property on the Java command line will force the JVM to prefer any library it finds in the endorsed directory over its own system libraries. Copying the jars into $JAVA_HOME/jre/lib/endorsed will do the same thing.

System.out.println(System.getProperty("java.endorsed.dirs"));

在-Djava.endorsed.dirs指定的目录面放置的jar文件,会覆盖系统的API
将自己修改后的API打入到JVM指定的启动API中。

不过能覆盖的类是有限的,不包括java.lang包中的类。。。。。

希望给你有益的启示。祝共同进步!!!
作者: 王俊杰    时间: 2013-3-31 13:09
匿名者 发表于 2013-3-31 12:34
这个问题看来很有意思~~  没想到还关系到java endorsed技术
我不知道你的包名是什么
可是我想你可以自己写 ...

不小心用了一次道具 结果匿名了:funk:
然后又用了一次现身道具,看了一下匿名者是我自己:funk:
然后金币就剩没几个了。。。。。:'(
好奇心害死猫。。。。。。
作者: 张超    时间: 2013-3-31 13:49
陈丽莉 发表于 2013-3-30 23:44
若还有问题,继续追问;没有的话,将帖子分类改成【已解决】哦~

版主责任心很强啊
作者: 张超    时间: 2013-3-31 13:50
匿名者 发表于 2013-3-31 12:34
这个问题看来很有意思~~  没想到还关系到java endorsed技术
我不知道你的包名是什么
可是我想你可以自己写 ...

隐身大神
作者: 黑马李杰    时间: 2013-3-31 14:52
  String str={"add","df","ge","rtr"};//报错  你的字符串数组定义错了:Stirng[] str = {"add","df","ge","rtr"} 或者 Stirng str[] = {"add","df","ge","rtr"};或者
  String[] str = new String[]{"add","df","ge","rtr"};一般用第一种和第三种,因为第一眼就能明确是字符串数组类型。
作者: 王俊杰    时间: 2013-3-31 17:34
张超 发表于 2013-3-31 13:50
隐身大神

千万别这么叫啊。。 本人菜鸟一个
共同学习 共同提高 呵呵
都是为了梦想而努力的人~~
加油加油!
作者: 夏凡    时间: 2013-3-31 21:28
本帖最后由 夏凡 于 2013-3-31 21:31 编辑
  1. <font size="3">public class String{
  2.     public static void main(String[] args){
  3.          String str={"add","df","ge","rtr"};   </font>
复制代码
错误在于:第三行,字符串数组的定义
正确代码如下:
  1. <font size="4">public class String{
  2.     public static void main(String[] args){
  3.          String [] str={"add","df","ge","rtr"};</font>
复制代码

作者: 张源锋    时间: 2013-3-31 21:40
可这是样来        String str[] =new String[]{"a","b","c"};或者       
String str1[] = new String[10]; //定义一个容量为10的数组
str1[0] = "a";
str1[1] = "b";
str1[2] = "c";
..........




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2