在java创建一个窗口对象
public class Demo10 extends JFrame
{
       public static void main(){
         Demo10 d=new Demo10();  //这里创建了一个窗口对象 但并没有去创建一个创口
         d.setVisible(true);   //C++中是先创建一个对象 然后在创建一个创口,在将窗口显示 ,当窗口销毁,对象没有销毁,但是java里面是一个对象 对应一个窗口,没有创建窗口的函数
      }}还有一个问题:java中的数组为何会有一个length属性,就像Integer类一样是对基本 类型 int 的封装 但是Inteage类
维持一个用于保存数据的一个 private final int vaule 这样的一个成员数组是一个对象 如何理解?

解决方案 »

  1.   

    你不应该说Java和C++的区别。不是这样的。C++和Java不一样,Java的图形界面,无论是AWT还是Swing,都是独立于操作系统的,当然,最底层还是调用操作系统的API。然而C++,对于Windows程序,无论是MFC还是直接的Windows程序,是调用WindowsAPI来注册窗口类,来ShowWindow。MFC虽然对WindowsAPI进行封装,但是想探求一下底层的API如何被调用,并不难。而Java封装的机制很好,而且如果你一直挖下去,会发现最终都是用本地函数。
    至于数组,确实是类类型的。
      

  2.   

    应该说Java到底抽象程度高一些,不会在API中直接出现“窗口”这样的词汇。
    当然,不管抽象程度有多高,最后总要落地的,也就是说,通过Swing/AWT内部的一些Peer机制,最后终归会在Windows上操纵对应的窗口的。
      

  3.   

    拿c++的思维来理解java,楼主你这样是永远也学不好的
      

  4.   

    不是拿C++的思维去理解java 
    而是java本身就有一些  直接就有的, 字符串 + 链接,,数组本身不是对象 却length属性对于我们这些用java的来讲 可以说  是无中生有!!!!对于我提的窗口问题,,只是想知道 java对象 与 窗口的关系!!!!
    窗口与对象肯定是有关系....
      

  5.   

    1、数组是对象,因而才会有length属性2、Java对象和窗口的关系,我2楼提到了Peer。
    你可以关注java.awt.peer包里的那些类和接口,
    AWT和SWT一样,都将界面元素对应到本地对象上,如按钮(Java)对按钮(本地、Native、Peer),但是楼主要注意因为需要考虑跨平台,所以Java中的类体系不见得是严格和Windows下的类体系保持一致的。而Swing则是自己手绘控件,除了JFrame拥有窗口句柄外,不是每个控件都拥有窗口句柄的。楼主想要深究的话,google查awt peer这个关键字就明白了。