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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘 佳 中级黑马   /  2012-9-5 09:25  /  2360 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 kikifirst1 于 2012-9-5 11:36 编辑

看视频第二天,有几个问题想请教一下

1.环境变量设置
  set classpath=路径 这个设置是否只是针对.class文件的?编译.java文件仍然需要在当前目录下进行?
2.类型强制转换
  把int型转换为char型。
  我是这么写的:   int b = 98;
                          b = (char)(b+1);
                          System.out.println(b);
    为什么输出的是99?而不是字符c?

初学有很多地方不理解,盼望有童鞋能指点一二,感激不尽~

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 新人提问 多多加油哦

查看全部评分

12 个回复

倒序浏览
首先回答第一个问题:你想在那里编译就在那里编译
第二个问题:因为你定义是int类型,当然会输出99啦!
回复 使用道具 举报
本帖最后由 王晓明 于 2012-9-5 10:02 编辑

1.classpath环境变量只是定义需要运行的class文件所在的目录路径,只对于运行class有所提升,所以对于是没有变化的,还需在其目录进行编译!

2.  int b = 98;
     b = (char)(b+1);
     System.out.println(b);

这里(char)(b+1)的确是将b+1的结果强制转换成了c,但是赋值给力b之后,又自动提升了,成为int型了,自然输出的是99;
应该是:
int b = 98;
  b = (char)(b+1);
  System.out.println((char)b);//输出的时候又再次将c强制转化成99

这是我也才学会的,希望能够帮到你!

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

回复 使用道具 举报
全海波 发表于 2012-9-5 09:39
首先回答第一个问题:你想在那里编译就在那里编译
第二个问题:因为你定义是int类型,当然会输出99啦!
...

第一个问题我试过设置classpath,javac **.java的时候是这样显示的

C:\Users\Administrator>set classpath=F:\java练习代码\day02

C:\Users\Administrator>javac 练习.java
javac: 找不到文件: 练习.java
用法: javac <options> <source files>
-help 用于列出可能的选项

但是当java **的时候在其他目录下就能进行。所以我以为编译时候就得在当前目录下了。不知道我能描述明白不,而且这问题出在哪呢?

还有第二个问题,b不是已经做强制转换了么,为什么还得定义一个char类型呢?

有点刨根问底,O(∩_∩)O~
回复 使用道具 举报
吕书凯 发表于 2012-9-5 09:45
第一个问题:
path 路径,是java编译时需要调用的程序(如java,javac等)所在的地方
classpath 类的路径, ...

十分感谢,思路很清晰,理解了:hug:
回复 使用道具 举报
王晓明 发表于 2012-9-5 09:47
1.classpath环境变量只是定义需要运行的class文件所在的目录路径,只对于运行class有所提升,所以对于是没 ...

谢谢谢谢,很感谢,明白了~:hug:
回复 使用道具 举报
kikifirst1 发表于 2012-9-5 09:48
第一个问题我试过设置classpath,javac **.java的时候是这样显示的

C:\Users\Administrator>set classpa ...

你出错的原因是因为classpath只定义的是class文件所在的文件路径,不是.java文件所见的路径,假设你的.java和.class文件都在同一个文件夹,那就不会出错,但是若.class在另外的文件夹,而你的classpath没有定义到该文件夹,jvm在.java所在的文件夹找不到.class文件就会出错!
回复 使用道具 举报
第一个问题关于环境变量的设置:
PATH变量用于列出可执行文件的搜索路径.

因为要通过命令行的命令启JAVA,JAVAC等编译工具和解释工具,系统必须要知道他们所在位置,而PATH则指明了其位置.

CLASSPATH变量用于JAVA加载类的路径.只有在classpath设置的路径中的类才能被加载.

第二个问题
                          int b = 98;//  定义一个变量b为int类型,把98赋值给b
//                         b = (char)(b+1);//     把(char)(b+1)赋值给b,等于把(char)(b+1)对应的“阿师壳码”值99赋给b
因为这个b是int类型的,不是char类型的。把b前加上char 就ok了 但是已经声明b为int类型了,所以可以在定义一个变量为char类型
即:
                          char b1= (char)(b+1)
                                                           //      这时b1的值就是99
                          System.out.println(b1);   
输出的就是99了

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

回复 使用道具 举报
去上面通道把名字改了要不然不能给你加分的,
回复 使用道具 举报
王德升 发表于 2012-9-5 10:36
去上面通道把名字改了要不然不能给你加分的,

请问设置了我的真实姓名,还需要申请改名字吗?
回复 使用道具 举报
kikifirst1 发表于 2012-9-5 11:34
请问设置了我的真实姓名,还需要申请改名字吗?

上面有改名字的渠道阿,
你看最上面置顶的帖子,
回复 使用道具 举报
王德升 发表于 2012-9-5 12:43
上面有改名字的渠道阿,
你看最上面置顶的帖子,

现在改名字好像要扣技术分的?我记得淘哥好像公告过!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马