1. no i think 
2.一个对象可以被多个引用来引用 当没有引用来引用它的时候 它可以被收集
gc()建议虚拟机收集无用的对象 finalize()在对象被收集前执行
3.flag= true 这个赋值表达式的值为 和即 a= 5的值为 5
4.后三个只是让线程睡眠一段时间或暂时退出运行或等待它需要的资源(分别用在不同的场合中),并不是让线程停止
5。可以 但Integer在java.lang包里 而java.lang包又是自动import的 所以会有冲突 不信你换成Button试试 一定没问题
6。能够 但读写时会找不到文件 呵呵 可移植不是万能的

解决方案 »

  1.   

    只想说两点:
    3.每个表达式都是有值的,而 flag= true 这个赋值表达式的值恰恰为 true ,所以会得到 The output is "true"! 。当然了一般不建议在if里用赋值表达式的值,那容易使程序员犯逻辑错误(而非语法错误,因为能通过编译)。有一种建议的方式:true == flag 来作为逻辑表达式,这样当误写为true = flag 时就能被编译器检查到。
    5.“类的名字也能做变量名吗?如Integer.(编译没有错,但是……)”,并不是类名能做变量名,而是可以通过类名来访问类的可访问的(一般是public的)静态方法或静态域(static 的)。
      

  2.   

    我又来了 呵呵
    3。用true == flag来作为逻辑表达式  还不如直接用flag 呢 
    4。我想楼主是这个意思
    int JFrame = 3;合法不合法
    既然JFrame不是保留字 当然是合法 你甚至可以用汉字作为变量名
    但不要与其他类名冲突
      

  3.   

    1.不一定,看自己想怎么编写了
    2。局部变量的生命期就是在它所在的那个{}内,执行完后就死去了
    至于java的垃圾收集,你不要也搞在这里面去理解,java的垃圾收集,是一个很低级的进程,优先级很底,所以你有时为了提高优先级,可以手动杀除
    3。看好了flag=true 不是flag==true,所以是flag先为true,然后在判断
    我认为这是很简洁高效的写法
    4。没有什么不可理解的,你现在就把他们记住
    5。在java中,只有类与基本变量,有时候必须要类,所以基本变量必须变成类,所以Integer对应int 等等
    6。你如果想在unix下编译,那我劝你去查api,里边有专门的delimiter常量,是自动根据os来转变的;或用条件编译;或自己去修改jdk的某个properties文件,我记得是有这个文件的
      

  4.   

    6.编译是肯定可以的,因为你的语法调用并没有出错,而编译时是不会检查该文件是否存在或路径名是否存在,这与平台无关,你可以调用JAVA的API来获得操作系统正确的路径分隔符。
      

  5.   

    1,must not need,
    3,同意wyalchemy(透明)的,他提到的方法实际上是代码优化(编写角度)。
    5,类的名字不能做为变量名,错误至少会出现在运行期
    6,能编译不一定能运行,跟上面的类似。程序错误包括编译期错误和运行期错误
      

  6.   

    再关注一下 
    楼上的
    5。外部的类并不是java虚拟机的一部分,jdk类库中的类在本质上与我们编写的类并没有什么区别 只是在楼主的问题中 他使用了java.lang包中的类 而这个包里的类又是自动import的 所以会与他的变量名冲突 导致编译错误 而楼主所说编译没问题 我试过 编译是通不过的
      

  7.   

    不知sunni(死猪)用什么编译的?我编译的时候的确过去了。我用的是JDK1.4+UltraEdit