Java自学总结3

 51.类注释必须放在import语句之后,直接放在class定义之前。方法注释必须紧靠着放在它所描述的方 法前面  。

52.在Java中任何继承都是共有继承。

53.如下代码
 public class Employee{
 private int salary;
 ....
 public int getSalary(){
  return salary;
  }
 .....
 }

 public class Manager extends Employee{
 private int bonus;
 ....
 public int getSalary(){
  int basesalary;
  basesalary=super.getSalary();//super关键字表示调用基类的函数。
  return basesalary+bonus;
  }
 ....
 }

54.看下面的代码:
 public class Test{
  public static void main(String [] args){
  data []aa;
  aa=new data[3];
  }
  static
  {System.out.println("124");}
  {System.out.println("sadf");}
 }
 class data{
  public  int a;
  data(){}
  {System.out.println("sadf");}
  static
  {System.out.println("iuwe78789");}
 } 
 在定义data对象时其里面的初始化块没有执行,为什么?
 解答:Java语言是解释执行的,对于主类中的静态初始化块,程序一进入就会触发主类,所以        主类的静态块会被执行,但上面的代码中虽然用data定义了数组,同时也给数组分配了               三个存储空间,但没有触发其类,因为分配的存储空间不是类的对象,所以类中的静态       块类也就不执行。假如把data类中的public  int a;改为public static int a;然后在               Test类中增加data.a=1;就会触发data类,从而data类中的静态块就会被执行。

55.在C++中也能够写出不允许被派生的类,问如何写这些类?(提示:使用虚基类)。

56.用instanceof 可以判断一个类对象是否属于一个类。
 例如 if( staff instanceof Manager){}//Manager是定义的一个类,staff是一个对象

57.Java使用的类型转换语法来自于C语言"糟糕的旧时代",工作方式类似于C++的安全dynamic_cast操作 符。例如,Manager boss=(Manager)staff;//java
 他等同于:Manager *boss=dynmic_cast<Manager *>(staff);//C++
 在Java中,如果类型转换失败,不会生成一个null对象,而是抛出一个异常。在这个意义上,  它类似于C++中的引用类型转换。在C++中,你可以在一个操作里进行类型测试和类型转换:
 Manager * boss=dynamic_cast<Manager*>(staff);//C++
 if(boss!=NULL){....}
 而在Java中,你需要把类型转换和instanceof操作符结合起来使用:
 if(staff instanceof Manager){
  Manager boss=(Manager)staff;
  ...
 }

58.abstract关键字为抽象的意思,如果类用abstract关键字修饰则表示这个类为抽象类。一个方法用  abstract关键字修饰表示这个方法为抽象方法。抽象类不能够创建对象。
 在C++中如果含有一个纯虚函数,那么这个类为虚类,那么在Java中是否一样呢?是否类含有  一个抽象的方法这个类就是一个抽象类?
 抽象类可以定义变量,但那变量必须指向其子类为非抽象类的对象。

59.Java中protected保护的字段于C++中的protected保护的字段有较大的区别:
 在Java中,protected保护的字段级可以被子类访问,还可以被同一包中的其他类访问。而在  C++中只能被子类访问。所以Java中的protected关键字的安全性要比C++中的弱。

60.关于Object类:
      Object类是Java中所有类最终的祖先---每一个类都由它扩展而来。在不明确给出超类的情况下,       Java会自动把Object作为要定义类的超类。
 疑问:抽象类也由Object类派生而来?  
 解答:所有类都有Object类派生而来,其中当然也包含了抽象类                           

61.Object类中的equals方法用于测试某个对象是否同另一个对象相等。它在Object类中的实现是判断两 个对象是否指向同一块内存区域。

62.Java语言规范要求equals方法具有一下特点:
 1)自反性,对于任意非空引用x,x.equals(x)应返回true;
 2)对称性,对于任意引用x,y,当且仅当y.equals(x)返回为true时,x.equals(y)返回为true;
 3)传递性,对于任意引用x,y,z,如果x.equals(y)返回为true且y.equals(z)返回为true时,      x.equals(z)返回为true;
 4)一致性,如果x和y引用的对象没有改变,那么对x.equals(y)的重复调用应返回同一结果;
 5)对任意非空引用x,x.equals(null)应返回false。

63.Java中的Class类和C++中的type_info类相似,而getClass方法等同于C++中的typeid操作符。不过  Java中的Class类要比C++中的tyep_info功能强大。C++的type_info只能展现一个类型的名字字  符串,却不能创建那个类型的对象。
 疑问:C++中的type_info类和typeid操作符如何使用?

64.什么叫反射器?
 能够分析类的能力的程序称为反射器。

65.以下编译错误说明了什么?
 1.Test3.java:59: 类 Employee 是公共的,应在名为 Employee.java 的文件中声明
   public class Employee extends Person{.... }
 2.Test3.java:59: 此处不允许使用修饰符 private
   private class Employee extends Person{...}
 3.Test3.java:55:缺少方法主体或抽象声明
   public String setName(String aa);//这是抽象类Person类中的成员函数

66.对于静态字段在定义时可以直接赋值,例如在类中写:static int i=1;

67. 在Java中接口不是类,不能用new操作符实例化接口,而是一组对类的要求,这些类要与接口一致。

68.接口中绝不能有实例字段,而且接口中也绝不会去实现方法。

69.要让类实现一个接口,需要下面两个步骤:
 1.声明类想要实现指定的接口。
 2.对接口中所有的方法进行定义。
 声明类要实现的接口需要使用implement关键字。

70.如何让一段代码执行下面的功能
 如果try中抛出了异常在catch中抓住了,就再一次进入try。按照这个思路我们设计一个循环实 现,具体代码如下:
 while(true){
  try{
  String str;
  str=JOptionPane.showInputDialog("请输入一个数字");
  input=Integer.parseInt(str);
  }
  catch(NumberFormatException e){
   continue;
  }
  break;
 }
71.在Java中,每个异常都是一个对象,它是Throwable类或其子类的实例。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出。类似地,只有此类或其子类之一才可以是 catch 子句中的参数类型。

72.接口没有构造器,也就不能创建对象的原因之一。

73.使用下面的步骤,可以得到屏幕大小。
 调用ToolKit类的静态方法getDefaulToolKit得到一个ToolKit对象。(ToolKit类包含很多和本 地窗口系统打交道的方法)
 然后调用getScreenSize方法把屏幕尺寸作为一个Dimension对象返回。
 Dimension对象d使用共有的(!)实例变量width和height存储了宽度和高度。
 下面为相关代码:
 ToolKit kit=ToolKit.getDefaultToolKit();
 Dimension screenSize=kit.getScreenSize();
 int screenWidth=screenSize.width;
 int screenHeight=screenSize.height;

74.如何自定义光标类型
 我们可以使用ToolKit类的createCustomCursor方法定义自己的光标类型:
 ToolKit tk=ToolKit.getDefaultToolKit();
 Image img=tk.getImage("dynamite.gif");
 Cursor dynamiteCursor=tk.createCustomCursor(img,new Point(10,10),"dynamite stick");
 createCustomCursor方法中的第一个参数指向光标图像。第二个参数给出了光标的热点偏移。  第三个参数是描述光标的一个字符串。改字符串可以用于访问性支持,例如把此光标形状读取  给视力受损人士或者没有面对屏幕的用户。

75.如果局部内部类中的方法要访问外部方法中的变量,外部方法中的变量必须声明为final类型的变量。

76.假若byte的值为负数,加上 256 把它转换成无符号的整数值。

77.有一个函数名为:public String valueToString(Object value) throws ParseExcetption{
    ...... 
   }
 请问:函数名后面跟的 throws ParseExcetption 有什么作用?

78.在Swing中,文本区没有滚动条。如果你需要滚动条,你必须把文本插入到一个滚动窗格中。然后, 把该滚动窗格插入进内容窗格中。
 testArea =new JTextArea(8,40);
 JScrollPane scrollPane=new JScrollPane(textArea);
 contentPane.add(scrollPane,BorderLayout.CENTER);

79.一般情况下在什么地方设置背景颜色?

80.如何在Swing中实现单选框按钮?
 首先为按钮组构造一个ButtonGroup类型的对象。
 接着,把JRadioButton类型的对象添加到该按钮组中。
 ButtonGroup group=new ButtonGroup();

 JRadioButton smallButton=new JRadioButton("Small",false);
 JRadioButton mediumButton=new JRadioButton("Medium",true);
 JRadioButton bigButton=new JRadioButton("Big",false);
 groud.add(smallButton);
 groud.add(mediumButton);
 groud.add(bigButton);

81.为什么增加了按键消息却不相应?


82.throw 和throws的区别?

83.所有的applet将会扩展JApplet类,而JApplet类是所有基于Swing技术的applet的超类。

84.如果applet包含Swing组件就必须扩展JApplet类。在Applet类中Swing组件不会正确显示。

85.为什么applet不要main方法?
浏览器自己加载。

86.将应用程序转换成applet的详细步骤
 1)创建一个HTML页面,它有合适的标记来装载applet代码。
 2)创建一个JApplet的子类。将该类标记为public,否则applet代码。
 3)删除应用程序中的main方法。因为应用程序会在浏览器中显示,因此不要构造框架窗口。
 4)将所有的初始化代码从框架窗口的构造器中移到applet的init方法中。不需要显示地构造 applet对象---浏览器会实现实例化一个该对象并且调用init方法。
 5)删除对setSize的调用。对于applet而言,大小通过HTML文件中width和height参数指定。
 6)删除对setDefaultCloseOperation的调用。applet不能被用户关闭。当浏览器退出时applet  才会终止运行。
 7)如果应用程序调用了setTitle方法,删除该调用。applet没有标题。
 8)不要调用show方法。applet会自动显示。

87.applet提供的四个方法:init,start,stop,destory。
 1)init:当初始化applet时就要使用该方法。它类似于构造器----当Java第一次运行applet时,    系统会自动调用该方法。在applet中,该方法的通常动作是对param参数进行处理以及增加用   户界面组件。applet可以有默认构造器,但是习惯上是在init方法中而不是在默认构造器中   进行全部的初始化工作。
 2)start:当Java调用init方法后会自动调用该方法。而当用户从其他页面方法到包含applet的   页面时,该方法也被调用。这表示start方法会被多次调用,而init方法仅仅被调用一次。   start方法是applet中重新启动线程的地方。
 3)stop:该方法在用户离开包含applet的页面时会被自动调用。对同一个applet,该方法会被多   次调用。
 4)destory:仅仅在浏览器正常退出时,该方法才会被调用。因为applet仅仅生存在HTML页面中,    因此当用户不再浏览包含applet的页面时,applet不应该遗留资源在系统中。因此该通过覆    盖destort方法来回收这些资源。

88.关于start和stop方法的进一步讨论
 经过测试,当网页显示的时候就会调用start放,当网页被隐藏时就会调用stop方法。

89.ActiveX的安全机制是如何工作的?

90.假设类A,派生出类B。在创建类B的对象时一定会调用类A的构造器,如果没有显示调用基类的构造器  默认调用基类的无参构造器。
 如下代码:
 class A{
  A(int a){
  }
 }
 class B extends A{
  B(int a){
  }//出现错误,因为基类中没有无参构造可调用
  //如果加super(0);则没有错误。
  //如果在基类中增加一个无参构造器则不出现错误
 }
91.获取URL的常见方法是询问applet的来源,特别是1)当前调用它的页面的URL.2)当前applet自己的URL
 要找到前者,需要使用getDocumentBase方法;而后者要用getCodeBase方法。getDocumentBase  方法实际上是返回包含applet标记的HTML文件的URL,而API文档声称其仅仅返回该目录的URL。  getCodeBase方法实际上是返回包含applet的目录,而API文档声称其返回applet的URL。

92.有了JAR文件后,需要在applet 标记中引用它,如下例子:
 <applet code="calculatorApplet.class" archive="calculatorClass.jar" width="100"   height="100">
 code属性告诉浏览器applet名字。archive属性仅仅指明了applet和其他文件可能存放的位置。  每次需要类文件、图像或者声音文件时,浏览器首先在archive属性中指定的JAR文件中寻找。  当文件不在这些JAR文件时,才会到Web服务器上去取。

93.如果期望一个applet在终端用户机器上长时间驻留,则可以使用cache_option,cache_archive,cache_version这几个关键字。

94.TCP/IP协议的层次结构
 应用层:Telnet  FTP  SMTP  HTTP
 传输层: TCP   UDP
 网际层: IP
 网络接口层:以太网 FDDI X.25  ATM

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值