java中关于星号的问题

joniy 2009-05-10 07:43:18
今天看到一个程序本是想玩玩没想到遇到一个蛮有趣的问题,不知道win中的×有什么特别的意义,我只知道在Java中的正则表达式中他的意义,下面是描述:
class test{
public static void main(String []args){
System.out.print(args[0]);
}
}
操作如下
C:\Documents and Settings\Administrator\桌面>javac test.java
C:\Documents and Settings\Administrator\桌面>java test 3
3
C:\Documents and Settings\Administrator\桌面>java test #
#
C:\Documents and Settings\Administrator\桌面>java test %
%
C:\Documents and Settings\Administrator\桌面>java test *
360保险箱.lnk
郁闷的就在这里了,360保险箱.lnk是我桌面上的一个快捷方式,我改成360时就变成以下请况
C:\Documents and Settings\Administrator\桌面>java test *
360.lnk
忘高手指点!
...全文
555 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
v风雪山神庙v 2012-05-23
  • 打赏
  • 举报
回复
如果想输出*,把*用双括号括起来即可
kimi 2009-05-11
  • 打赏
  • 举报
回复
1楼正解
gao512008 2009-05-10
  • 打赏
  • 举报
回复
wxywdx 2009-05-10
  • 打赏
  • 举报
回复
呃,没想到楼上说的方法,这个够直观的呵呵,一试便知
jinxfei 2009-05-10
  • 打赏
  • 举报
回复
你把代码改成:


class test{
public static void main(String []args){
for(int i=; i<args.length;i++){
System.out.print(args[i]);
}
}
}



你很快就会明白。

一楼说的完全正确,*被替换为当前目录下的所有文件名
wxywdx 2009-05-10
  • 打赏
  • 举报
回复
上面是正解,我这边试了一下变了,呵呵
joniy 2009-05-10
  • 打赏
  • 举报
回复
但为什么不论args[x]中的x是多少,其结果都是不变的呢?
wxywdx 2009-05-10
  • 打赏
  • 举报
回复
有点想法,我先猜一下,你保存文件class文件的目录是桌面对么?如果不是我的想法可能就不对了,呵呵
jsjzzh 2009-05-10
  • 打赏
  • 举报
回复
这是Dos的问题,?和*在dos里是通配符,分别表示文件名的1个字符和所有字符。
在执行java test *的时候,先由操作系统将*转义成表示所有字符的文件,其实是很多文件名。

你可以试一下,dir *,看看列表的文件名顺序,然后执行java test *,看结果是不是dir结果的第一个文件,
然后再删除第一个文件名(或改名),我想再执行java test *时,应该显示dir结果的第二个文件了。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧