它们是两个不同的概念
第二个c是方法传进来的值
第一个是什么呀
他是一个租得值
你付给了c.a等

解决方案 »

  1.   

    Java是by value形式来进行参数传递的。
      

  2.   

    不会出问题啊!谁说JAVA是BY VALUE的,简直是胡说啊!那克隆方法是干吗用的,如果是BY VALUE它不是毫无用武之地吗!
      

  3.   

    import java.awt.*;
    import java.awt.event.*;
    import java.awt.print.*;
    import java.awt.datatransfer.*;
    import java.io.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.text.*;
    import javax.swing.text.PlainDocument;
    import com.jnotepad.inster.*;
    import java.awt.event.ActionEvent;
    import com.jnotepad.format.*;
    import javax.swing.JMenu;
    import com.jnotepad.view.*;
    // 定义主类
    public class JNotepad extends JPanel
    {
    // 定义一个菜单条
    JMenuBar jmb = new JMenuBar();
    //定义文件菜单
    JMenu file = new JMenu("文件");
    // 定义编译菜单
    JMenu edit = new JMenu("编辑");
    // 定义 帮助菜单
    JMenu help = new JMenu("帮助");
    // 定义 插入菜单
    JMenu inster= new JMenu("插入");
    // 定义格式 菜单
    JMenu format = new JMenu("格式");
    // 定义工具菜单
    JMenu tools =new JMenu("工具");
    // 定义表格菜单
    JMenu form =new JMenu("表格");
    // 定义窗口菜单
    JMenu window = new JMenu("窗口");
    // 定义 视图菜单
    JMenu view = new JMenu("视图");
    // 定义 工具条
    JToolBar toolBar = new JToolBar();
    // 定义菜单项
    JMenuItem jmi;
    JMenu jm;// 给菜单中添加拷贝菜单项
    edit.add(jmi = new JMenuItem("拷贝", KeyEvent.VK_C));
    //菜单项事件注册
    jmi.addActionListener(new copyL());
    // 给菜单中添加剪切菜单项
    edit.add(jmi = new JMenuItem("剪切", KeyEvent.VK_T));
    //菜单项事件注册
    jmi.addActionListener(new cutL());
    // 给菜单中添加粘贴菜单项
    edit.add(jmi = new JMenuItem("粘贴", KeyEvent.VK_P));
    //菜单项事件注册
    jmi.addActionListener(new pasteL());
    // 给菜单中添加删除菜单项
    edit.add(jmi = new JMenuItem("删除", KeyEvent.VK_D));
    //菜单项事件注册
    jmi.addActionListener(new deleteL());
    // 在菜单中添加一条分隔线
    edit.addSeparator();
    // 给菜单中添加全选菜单项
    edit.add(jmi = new JMenuItem("全选", KeyEvent.VK_A));
    //菜单项事件注册
    jmi.addActionListener(new selectAllL());// 给菜单中添加帮助主题菜单项
    help.add(jmi = new JMenuItem("帮助主题", KeyEvent.VK_A));
    //菜单项事件注册
    jmi.addActionListener(new aboutL());// 添加布局管理(使用边界布局)
    setLayout(new BorderLayout());file.setMnemonic(KeyEvent.VK_F);
    jmb.add(file);
    edit.setMnemonic(KeyEvent.VK_E);
    jmb.add(edit);
    view.setMnemonic(KeyEvent.VK_V);
    jmb.add(view);
    view.add(jmi=new JMenuItem("普通(N)")) ;
    view.add(jmi=new JMenuItem("Web版式(W)")) ;
    jmi.setIcon(new ImageIcon(
    getClass().getResource("Image7.gif"))) ;
    view.add(jmi=new JMenuItem("页面")) ;
    view.add(jmi=new JMenuItem("大纲")) ;
    view.addSeparator();
    view.add(jmi=new JMenuItem("任务窗格")) ;
    view.add(jmi=new JMenuItem("工具栏")) ;
    view.add(jmi=new JMenuItem("标尺")) ;
    view.add(jmi=new JMenuItem("显示段落标记")) ;
    view.add(jmi=new JMenuItem("网格线")) ;
    view.addSeparator();
    view.add(jmi=new JMenuItem("文档结构图")) ;
    view.add(jmi=new JMenuItem("页眉和页脚")) ;
    view.add(jmi=new JMenuItem("脚注")) ;
    jmi.setEnabled(false) ;
    view.add(jmi=new JMenuItem("标记")) ;
    view.addSeparator();
    view.add(jmi=new JMenuItem("显示全屏")) ;
    view.add(jmi=new JMenuItem("显示比例...")) ;jmb.add(inster);
    inster.add(jmi=new JMenuItem("分隔符……",'i'));
    inster.add(jmi=new JMenuItem("页码……"));
    inster.add(jmi=new JMenuItem("日期与时间"));
    inster.add(jmi=new JMenuItem("域..."));
    inster.add(jmi=new JMenuItem("符号..."));
    inster.add(jmi=new JMenuItem("批注"));
    inster.addSeparator();
    inster.add(jmi=new JMenuItem("数字..."));
    inster.add(jmi=new JMenuItem("引用"));
    inster.add(jmi=new JMenuItem("Web组件"));
    jmi.setEnabled(false) ;
    inster.addSeparator();
    inster.add(jm=new JMenu("图片"));
    jm.add(jmi=new JMenuItem("剪贴画"));
    jm.add(jmi=new JMenuItem("来自文件"));
    jm.add(jmi=new JMenuItem("自选图形"));
    jm.add(jmi=new JMenuItem("艺术字"));
    jm.add(jmi=new JMenuItem("图表"));
    inster.add(jmi=new JMenuItem("图示(G)..."));
    inster.add(jm=new JMenu("文本框"));
    jm.add(jmi=new JMenuItem("横排"));
    jm.add(jmi=new JMenuItem("竖排"));
    inster.add(jmi=new JMenuItem("文件..."));
    inster.add(jmi=new JMenuItem("对象..."));
    inster.add(jmi=new JMenuItem("书签..."));
    inster.add(jmi=new JMenuItem("超连接"));jmb.add(format);
    format.add(jmi=new JMenuItem("字体(F)...")) ;
    jmi.setIcon(new ImageIcon(
    getClass().getResource("Image00011.gif"))) ;
    format.add(jmi=new JMenuItem("段落(P)...")) ;format.add(jmi=new JMenuItem("项目符号和编号(N)...")) ;
    format.add(jmi=new JMenuItem("边框和底纹(B)...")) ;
    format.addSeparator();
    format.add(jmi=new JMenuItem("分栏(C)...")) ;
    format.add(jmi=new JMenuItem("制表位(T)...")) ;format.add(jmi=new JMenuItem("首字下沉(D)...")) ;
    jmi.setEnabled(false) ;
    format.add(jmi=new JMenuItem("文字方向(X)...")) ;
    format.add(jmi=new JMenuItem("更改大小写(E)...")) ;format.addSeparator();
    format.add(jmi=new JMenuItem("调整宽度(I)...")) ;
    jmi.setEnabled(false) ;
    format.add(jm= new JMenu("中文版式(L)")) ;
    format.addSeparator();
    format.add(jm=new JMenu("背景(K)")) ;
    format.add(jmi=new JMenuItem("主题(H)...")) ;
    format.add(jm=new JMenu("框架(R)")) ;
    format.add(jmi=new JMenuItem("自动套用格式(A)...")) ;
    format.add(jmi=new JMenuItem("样式和格式(S)...")) ;
    format.add(jmi=new JMenuItem("显示格式(V)...")) ;
    format.addSeparator();
    format.add(jmi=new JMenuItem("对象(O)...")) ;
    jmi.setEnabled(false) ;
    jmb.add(Box.createHorizontalGlue());
    help.setMnemonic(KeyEvent.VK_H);
    jmb.add(help);// 使用边界布局北边添加菜单条
    add(jmb, BorderLayout.NORTH);
    // 使用边界布局中心添加工具条
    add(toolBar, BorderLayout.CENTER);
    // 使用边界布局南边添加封装滚动窗口
    add(jsp, BorderLayout.SOUTH);
    // 给文本区添加可以看的见的符号
    jta.getCaret().setVisible(true);
    // 符号的位置
    jta.setCaretPosition(0);
    }
    //**************************************************************************************
    // main 主函数protected static final class appCloseL extends WindowAdapter
    {
    public void windowClosing(WindowEvent e)
    {
    System.exit(0);
    }
    }
    }
    有什么问题?
    谁都说JAVA是BY VALUE的,因为这是事实,thinking in java中有
      

  4.   

    楼主把这两个混淆了,在第一个Ass类中,得到参数值的不是c,而是类Content
    中是两个域(或称成员数据)a,b
    而在第二个类中,你实参赋值c="aaa";这在任何一门高级语言中都是不可以的.
    即使是传址也是不行的,在传址过程中你修改的是参数所指向的地址空间的值,
    而不是参数值.
      

  5.   

    第一句有误,
    楼主把这两个混淆了,在第一个Ass类中,你的值不是赋给参数c,而是赋给类Content
    中是两个域(或称成员数据)a,b
    而在第二个类中,你却要给实参赋值:c="aaa";这在任何一门高级语言中都是不可以的.
    即使是传址也是不行的,在传址过程中你修改的是参数所指向的地址空间的值,
    而不是参数值.