1 / 41
文档名称:

JAVA重难点问题剖析--实例讲解好理解.doc

格式:doc   页数:41
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

JAVA重难点问题剖析--实例讲解好理解.doc

上传人:szh187166 2012/12/31 文件大小:0 KB

下载得到文件列表

JAVA重难点问题剖析--实例讲解好理解.doc

文档介绍

文档介绍:JAVA重难点问题剖析(一)
 
这次主要剖析以下四个问题:
构造函数定义问题、类实例化时的歧义、equals和==、protected成员的访问问题
一、
(1)构造函数前不加void,否则变为方法,只能加可访问性修饰。
public class Name { 
 void Name(){
  ("Method");
 }
 public static void main(String[] args){
  Name n=new Name();
  }
}
无输出,去void则输入Method;
(2)如果需要在不同包的类中使用构造函数创建对象必须前面加上public;
二、类实例化时的歧义问题
(1)单类形导入(即import p1.*)时用此类实类化;
(2) b=new ()
package p1;   //定义第一个类
public class TestC {
 public TestC(){("p1");}
}
package p2;   //定义第二个类
public class TestC { 
 TestC(){("p2");}
}
package p2;   //定义第三个类
import p1.*;  //(1)
public class TestB {
 public static void main(String[] args) {
  TestC c=new TestC(); //(2)
  }
} 
输出p2,若要输出p1,可将(1)处改为import (2) b=new ();
三、数值、对象比较问题
()方法:
public boolean equals(Object obj) {
 return (this == obj);
    }
()方法:
    public boolean equals(Object anObject) {
 if (this == anObject) {
     return true;
 }
 if (anObject instanceof String) {
     String anotherString = (String)anObject;
     int n = count;
     if (n == ) {
  char v1[] = value;
  char v2[] = ;
  int i = offset;
  int j = ;
  while (n-- != 0) {
      if (v1[i++] != v2[j++])
   return false;
  }
  return true;
     }
 }
 return false;
    }
例子:
class Test{
 String s;
 Test(String s){
  =s;
 }
}
public class Fyz {
 public static void main(String[] args) {
  
  String s1=new String("hello");
  String s2=new String("hello");
  Test T1=new Test("JAVA");
  Test T2=new Test("JAVA");
  ((s2)); //true:String、Boolean等类的equals覆盖了object的,比较的不再是对象而是数值
  ((T2)); //false:没有覆盖object的,所以比较的仍然是对象
  (S1==s2);        //false:==比较的是对象,无论是什么对象;
  (T1==T2);        //false:同上
  T2=T1