java学习笔记(一)

构造方法:构造方法是在编译的时候自动执行的,每产生一个新的对象,构造方法就会在该对象中执行一次,也就是说只有产生了新的实例才会执行构造方法。构造函数可用于初始化特定的值。构造方法的名字与所属的类的名字一致,无任何返回类型,void也不行,因为void其实就是返回null,只不过在代码中省略了return null;而已。构造方法可以被public、private等修饰(在被private修饰时可以参见单态设计模式)。如果类中没有定义构造函数那么默认构造函数为:

Public 类名()

{

}

当然可以同时定义多个构造函数,此时系统不再会默认定义前面所述构造函数,和名字相同的成员方法的区分一样,通过传递的形参类型、个数等在调用的时候自动区分,如下:

Class person

{

  Int age;

  String name;

  Public person(int age)

  {

     This.age=age;

}

Public person(int age,String name)

{

   This.age=age;//this(age);

   This.name=name;

}

//public person()

//{}

Public static void main(String[] args)

{

   Person s1=new person(“29”);

   Person s2=new person(“56”,”luo”);

   Person s3=new person();

}

}

上述代码有一处错误,编译将不能通过,创建s3实例时在类中找不到对应的构造函数,而此时系统又不会产生默认的构造函数,因此应该添加构造函数(将注释部分)。

This关键字:this关键字主要用于强调说明当前调用某属性或者方法的对象。一般在三种情况下必须使用this。第一种:如上述代码,在构造方法中为区分传递的形参与类的成员变量(名字相同,代码要注意易读性,一目了然)使用this关键字用于说明传递过来的参数赋给当前实例中的age、name。第二种:构造方法是不能直接被调用的,因为它是被编译器自动调用的,构造方法调用构造方法的时候,可以用this关键字,如上代码(注释部分)。第三种:向容器中添加部件时,指明添加的容器,如下代码:

Class container

{

  Component comp;

  Public void addcomponent(component comp)

  {

    comp=new component(this);

}

}

Class component

{

  Public component(container c)

{

  This.c=c;

}

}

Main函数:public static void main(String[] args)

Main函数标志着它所在的类作为程序启动类,即程序最先执行和分配内存,故不能调用非静态变量和非静态方法。因为main函数被虚拟机调用执行,所以为public而不能为private。String[] args在运行时(比如在虚拟机中编译时,在编译的类名字后面输入参数传递进去,以空格隔开)用来接收传进来的参数。

Static:静态变量与方法不是单独属于某个类,而是共有的,存储在方法区中,编译器会自动初始化。静态方法中不能调用非静态变量与非静态方法,因为非静态变量与方法是属于类的实例的,此时还不确定是否产生了实例,只有new了对象才能调用实例变量与方法。而静态变量与方法则可以直接通过类名调用也可以通过实例访问。从存储的角度来说,此时实例方法与变量还没有分配内存,故不能访问。

垃圾回收机制:存储在堆中的类及数组在没有被引用时即变成垃圾,默认情况下不会立马被清除,直到回收机制某个时刻(非人为控制的)开始清除才会清除掉,也可以使用system.gc()函数开始收集垃圾。在清除的前一刻系统会自动调用public void finalize()函数。可运行如下代码:

Class person

{

  Public void finalize()

  {

    System.out.println(“rubbish is cleared”);

}

Void obj()

{

  System.out.println(“everything is ready”);

}

Public static void main(String[] args)

{

  New person();

  New person();

  New person();

  System.gc();

}

}

静态代码块:在类被加载的时候静态代码块执行,并且只执行一次(尽管有多个类的实例对象)常用来对类属性进行初始化,形式如下:

Static

{

 

}

单态设计模式:针对某个类只能在其内部创建一个实例对象,即将构造方法用private修饰

Class china

{

  Static china obj=new china();//此处static不能省,否则会不断地产生实例对象

  Public static china getinstance()

  {

     Return obj;

  }

  Private china()

  {

  }

 

}

Class test

{

  Public static void main(string[] args)

  {

China a1=china.getinstance();//a1和a2其实是相同的

China a2=china.getinstance();

  }

}

posted @ 2015-02-01 23:12  有事没事常回家看看  阅读(138)  评论(0编辑  收藏  举报