A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘印12 中级黑马   /  2013-3-29 13:36  /  4132 人查看  /  18 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我用eclipse 编译的时候为什么我就不能定义字符串数组呢??请各位大侠们看看我下面到底是那个地方错了
public class String{
    public static void main(String[] args){
         String str={"add","df","ge","rtr"};//报错
         ........
    }
}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

18 个回复

倒序浏览
可以定义字符串数组的啊,
String str={"add","df","ge","rtr"};//报错
应该是这样的,String[] str=new String[]{"add","df","ge","rtr"}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
一维数组的声明语法是:
                       数组类型  数组名[]; 或 数组类型[] 数组名;
     为数组分配内存空间的格式如下:
                       数组名字=new 数组类型[数组长度];
      String数组应该这样定义并初始化:String  str[] = new String[]{"add","df","ge","rtr"} 或是 String str[] ={"add","df","ge","rtr"};
你的String数组定义中缺少“[]"。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
String str这能是字符串数组变量么?你这也太马虎了吧。main方法的参数就有一个标准的写法。
字符串数组声明:String[] str或者 String str[];这样才是一个字符串数组的表示方法。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
还有问题的话,继续追问;没有了请将帖子分类改成【已解决】~
回复 使用道具 举报
对不起大家  我帖子写错了 我的程序是下面这个样子的但是还是报错,我现在非常痛苦
public class String{
    public static void main(String[] args){
         String[] str={"add","df","ge","rtr"};//报错
         ........
    }
}
回复 使用道具 举报
本帖最后由 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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 米腾达 于 2013-3-29 15:42 编辑

自定义类与系统内的类不能同名

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
字符串数组类型修饰符应该是String[]才对

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
数组的定义格式是 数组类型[] 数组名={元素} ;数组类型[] 数组名=new 数组类型[]{元素};
你改成 String []str={"add","df","ge","rtr"}; String[] str=new String[]{"add","df","ge","rtr"}; 这样就可以了

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
若还有问题,继续追问;没有的话,将帖子分类改成【已解决】哦~  
回复 使用道具 举报
黑马网友  发表于 2013-3-31 12:34:14
12#
本帖最后由 王俊杰 于 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 12:34
这个问题看来很有意思~~  没想到还关系到java endorsed技术
我不知道你的包名是什么
可是我想你可以自己写 ...

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

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

隐身大神
回复 使用道具 举报
  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"};一般用第一种和第三种,因为第一眼就能明确是字符串数组类型。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
张超 发表于 2013-3-31 13:50
隐身大神

千万别这么叫啊。。 本人菜鸟一个
共同学习 共同提高 呵呵
都是为了梦想而努力的人~~
加油加油!
回复 使用道具 举报
本帖最后由 夏凡 于 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>
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
可这是样来        String str[] =new String[]{"a","b","c"};或者       
String str1[] = new String[10]; //定义一个容量为10的数组
str1[0] = "a";
str1[1] = "b";
str1[2] = "c";
..........

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 新人加油

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马