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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贾文泽 高级黑马   /  2013-3-1 16:01  /  1757 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 贾文泽 于 2013-3-11 12:01 编辑

首先,请看这段代码
  1. import java.io.*;
  2. class  text
  3. {
  4.      public static void main(String[] args)
  5.      {
  6.                  // 文件路径 D:\ja\unix\002.java
  7.          File f = new File("D:\\ja\\unix\\002.java");
  8.                  String s=f.getName();
  9.                  System.out.println(s);
  10.      }
  11. }
复制代码
一个简单的文件操作,指定文件路径获取文件名(其他的暂不考虑),你会不会认为这段代码一定会输出 002.java
要这么想就错了,这段代码根本编译不通过。。。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 很心细啊,赞一个

查看全部评分

9 个回复

倒序浏览
恕我愚钝,没理解
回复 使用道具 举报
黄玉昆 发表于 2013-3-1 16:08
恕我愚钝,没理解

这段代码在你电脑上能成功编译?
额,这段代码在任何平台上都无法编译的。。。
回复 使用道具 举报
真没看出哪里错了
然后用myeclipse试了一下
真的出了个002.java
求解释
回复 使用道具 举报
张豪杰 发表于 2013-3-1 16:41
真没看出哪里错了
然后用myeclipse试了一下
真的出了个002.java

提示信息说明问题明显在 第6行,也就是这段代码仅有的那一行注释信息,奇了个怪了,呵呵,想想注释行里的东西不是可以随便写的么?这里出问题了,注意看注释行里的   \u    ,这样的会出问题的,在写文件操作的代码中,尽量要避免文件名或者文件夹名是以u开头的,要么就不要把文件路径写在注释行了。
回复 使用道具 举报
  1.         public static void main(String[] args) {
  2.         // 文件路径 D:\ja\ubacanix\002.java
  3.         File f = new File("D:\\ja\\unix\\002.java");
  4.                 String s=f.getName();
  5.                 System.out.println(s);
  6.         }
复制代码
求解,为什么我这样时能编译并输出的,这也是\u开头的啊!
回复 使用道具 举报
曹春贵 发表于 2013-3-1 17:37
求解,为什么我这样时能编译并输出的,这也是\u开头的啊!

你很不巧的写了个  \ubaca   可能成为了一个Unicode的良构    猜的,因为直接输出 是 ?
编译器在抛弃空格和注释之前会将这些特殊字符进行转换,编译器不接受Unicode的病构形式

评分

参与人数 1黑马币 +3 收起 理由
黄玉昆 + 3

查看全部评分

回复 使用道具 举报
不是很理解··不理解了
回复 使用道具 举报
怎么会这样呢,看来注释也不会完全被忽略掉,不能和系统起冲突
回复 使用道具 举报
看来这个涉及到了编码表的知识了。有待我研究研究了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马