Thinking in java 笔记

转载 2006年06月19日 10:23:00

1:static函数中不能直接使用非static 的函数和数据。


2:只有数据成员回自动初始化,函数中的变量是不会自动初始化的。

3:this表示此一对象,当前对象;用在constructor中 this(arg)调用另外一个constructor,但是不能使用第二次this(arg),且必须放在首行;this.s = s ;

 Super:普通继承类中调用父类函数 super.method(args);

构造函数中调用父类构造函数用super(args),且只能在首行调用一次


如果基类中写了非default构造函数,则子类必须调用super(args);


只要自己写了构造函数,无论有参无参,都不会有默认的构造函数,生成该实例时,都需要调用自己的构造函数。


习惯:自己写构造函数,子类主动调用父类构造函数。

4:初始化顺序 (1)对象产生或static数据成员或函数调用,装载class文件


              (2)装载时就初始化所有的static数据/函数无论用到没用到


              (3)初始化primitiva 和 references


              (4)定义处的初始化


              (5)执行构造函数,只有new时才调用,单纯用static不调用


5:  在类中定义一数据成员时候直接初始化,不可以分行初始化。


即:ClassName aa ;


    aa = new ClassName();


int i;i=1;


必须int i = 1;ClassName aa= new ClassName();


但可以int i;ClassName aa ;  {i=1;aa=New ClassName()}


或者 static int i;staic ClassName aa ;


static{i=1;aa=New ClassName()}

6: 数组:


在定义并初始化时是不能制定其大小的


(1)  Integer[] a = new Integer[]{new Integer(1),new Integer(2),};


(2)  Integer[] a = {new Integer(1),new Integer(2),};


(3)  Integer[] a;


a = new Integer[]{new Integer(3),new Integer(3),new Integer(3),};

在类中能够定义并明确初始化;也可只定义,但方法中初始化,包括构造函数;在方法中,可定义,然后初始化。此属性仅仅限制于方法内使用

   以下错误


   a = new Integer[];


   a = {new Integer(3),new Integer(3),new Integer(3),}; a 是一引用
(4) Integer[] a;


a = new Integer[3]; 指定其大小后,只能一个一个初始化                 


   a[0] = new Integer(2);


(5)Integer[] a = new Integer[3]; 指定其大小后,只能一个一个初始化


  a[0] = new Integer(2);
数组的copy,fill,sort,binarySearch,equal  都有静态方法  在java.util.Arrays  System.arrayCopy()??????????

(6)注意多数组  


 Integer[][] a;


    a = new Integer[3][];


    for (int i = 0; i < a.length; i++) {


      a[i] = new Integer[3];


      for (int j = 0; j < a[i].length; j++) {


        a[i][j] = new Integer(i * j);


      }


}

7:类只有public和default两种.方法和属性各有四种。


8:不能继承构造函数为private的类


9:在函数中定义的变量只能default;
10: 类的构造函数是private,则可通过定义一返回该类的static函数,或者该类类型的static变量,后者只能产生一个类对象。


201垃圾回收相关

10:常量的定义方式常常是 public static final,可能是编译器常量,可能是执行期常量。未在定义处初始化的final变量必须在构造函数中初始化。Final参数时候就相当于PL/SQL的in,正常情况的参数是 in out


    Final函数是子类不能改变的,final类是不能继承的。


11:类装载时即对static 变量,static块进行初始化,而static方法在使用时才调用。

12:初始化顺序: 装载基类,子类à基类,子类的static初始化à变量设置初值和nullà如果有new,则定义处初始化后才是基类构造函数,子类构造函数。


         à如只是使用static变量,变量定义处仍不进行初始化。先构成基类才子类。


13:构造函数以及构造函数之前初始化时候不要调用非final和private型的函数,否则有可能调用子类中被覆写的方法。P241


   一个类是不知道子类的,但是在使用父类的函数时候实际调用的确实子类的。

14:接口中的数据成员自动是 public static final可以方便的产生常量群,而函数自动是public


15:嵌套于类中的private interface 可以被实现为嵌套类中的public,private类,但是这种实现private签套接口的类只能被拥有其使用权的类所操纵。P259


16:外围类和外围接口只能是public 和default,而内隐的可以是任何。


17:interface 中的函数自动为 public,实现 interface 时候必须将函数声名为 public,interface中数据是public static final,但不能是blank final,因为blank fianal需要在构造函数中初始化。可以是执行期初始化final,如:final int i;


    i = new Random().nextInt();

17: 嵌套于接口的接口只能为 public


17:可以通过 extends  来扩充 interface


17:匿名class可以实现接口,可以继承类,但匿名类的父类有非default的构造函数时候,只需在new时将参数传入即可。因无构造函数,故采用实体初始化的方式{int a ;a= a;}


18:匿名class中用到的别的对象必须声名为final


19: 非static inner class对象拥有一个指向outer class的引用,所以产生非static inner class时候必须先有outer对象,且可以访问任何外围类对象。Static inner class对象产生时不需要外围类对象存在,也就无法访问外围类的对象。


20: private 的内隐类实现其他接口后,在另外一类中得到指向接口的引用后是无法向下转换的。


21:继承内隐类时因为需要outer类,所以内隐类的子类的构造函数需要一个外围类的引用。继承outer类时,覆写内隐类是没有作用的,虽无作用,但也可以明确指出:子类中的inner类继承父类中的inner类,且可以同名,在这种情况下,父类中生成的inner类不会扩散,即不会生成子类中的inner类。见p275


22:在外类中取得非static内隐类必须有outer对象,有了outer对象后可以通过函数或者new,但是不能直接new private型的内隐类。如果该内隐类实现别的接口,或者继承别的类,则无法向下强制转型。


    产生inner类对象时候必须有一个指向outer对象的引用,除了statc inner类


      在inner中取得outer类时候,只需OuterClassName.this;


      在外类中取用static inner类对象时,可以在outer类中定义一返回static inner类对象的static函数,然后外类中调用该函数取得static inner类


public class Untitled2 {


  static class A {


    int i = 4;


  }

 

 


  class B {}

 

 


  A bb() { 


//    System.out.println(Untitled2.this); àthis是非static


//    new Untitled2().new A(); àA不需outer类,也不能有


    return new A();


  }

 

 


  B cc() {


    new Untitled2().new B();  à必须有outer类,


    return new B();à所以可以直接new,因为调用cc()时已有outer类对象


  }

 

 


  public static void main(String[] args) {


    A sdfs = new A();


//   new Untitled2().new A();à不需,也不能有outer类对象


//    new B(); à没有outer对象


    B dd = new Untitled2().new B();


  }

 

 


}

 

 


class Mihu {


  static void lasjf() {


//   new A();


    System.out.println(Untitled2.bb().i); à需要bb()是static


//    new B();


    new Untitled2().new B();


    new Untitled2().cc();


  }                                        }

Thinking In Java 第四版读书笔记

原文地址:http://dotnetslackers.com/articles/aspnet/UsingWebPartsInASPNet20.aspx[译者改后代码下载][翻译]在asp.net 2....
  • webwalker
  • webwalker
  • 2007年05月22日 09:30
  • 2854

《Thinking in Java》读书笔记(不断更新中)

概述春节在家乡,家里的电脑都是我上大学时淘汰的,要么运行不起来AS,要么连接不上手机,要么编译不了程序,这Android是写不了了。 记得前几天写插件的时候,用过Intellij IDEA,感觉很流...
  • zxt0601
  • zxt0601
  • 2017年01月31日 11:29
  • 1016

读第一遍Thinking in java的笔记

第一章1.Java一切都是对象,但操纵的标识符是对象的一个“引用”。简单的说,引用代表这个对象内存地址。 如:String s;实际上,我们并没有创建一个对象,我们只是创建了一个引用,它不指向任何...
  • u011253016
  • u011253016
  • 2016年07月18日 18:22
  • 1760

《Thinking in Java》笔记

《Thinking in Java》笔记
  • answer1507
  • answer1507
  • 2016年12月10日 14:59
  • 64

thinking in java笔记

1.上溯造型:我们将这种把衍生类型当作它的基本类型处理的过程叫作“Upcasting”(上溯造型)。其中,“cast”(造型)是指根据一个现成的模型创建;而“Up”(向上)表明继承的方向是从“上面”来...
  • xiaodao1986
  • xiaodao1986
  • 2013年01月10日 22:01
  • 1746

Thinking in Java阅读笔记(一)

第一章:对象导论
  • u012031857
  • u012031857
  • 2014年10月31日 17:10
  • 428

《Thinking In Java》第四版中文版读书笔记一

一、书籍整体结构和风格    拿到书籍后,我首先大致浏览了书的目录和第一章概述的内容。第一感觉是该书讲的java知识较为全面和深入,从java中最基本的概念:对象、类、接口等内容到集合、容器、多线程...
  • yizhixingxing
  • yizhixingxing
  • 2017年08月18日 16:54
  • 161

《Thinking in Java》读后总结与感想

作为Java界的四大名著之一《Thinking in Java》一直备受推崇,我很早就知道了这本书,当时只是初涉Java,粗略的翻了翻之后觉得看起来这本书讲的比较深就没有再去碰它,后来Java基础学完...
  • qq_28899635
  • qq_28899635
  • 2017年01月16日 09:47
  • 808

Thinking in Java (Java 编程思想)

Thinking in Java (Java 编程思想)本书来自网络,全科-不安分的码农整理成电子书,支持PDF,ePub,Mobi格式,方便大家下载阅读。...
  • axi295309066
  • axi295309066
  • 2017年04月30日 15:16
  • 4124

《thinking In UML》读书笔记(四)模型的关系表示

UML模型的关系表示 关联关系association 依赖关系dependency 扩展关系extends 包含关系include 实现关系realize 精化关系refine 泛化关系general...
  • sinat_34905048
  • sinat_34905048
  • 2016年08月19日 00:10
  • 370
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Thinking in java 笔记
举报原因:
原因补充:

(最多只允许输入30个字)