java基础

JAVA基础:(个人理解,刚开始学,有错误麻烦大家纠正,谢谢.)

1、修饰符 class  类名

{

  //Do  something;  

}  

public static void main(String[] args){

  这属于函数入口

}

2、数组:int  x[] = new int[100];

3、成员变量、局部变量

4、get/set  实现类似属性访问

public class Person{

private int age;

  public int getArea(){

  return age;

  }

  public void setArea(int i){

  this.age = age;

  }

}

5、类的初始化

  Person p1=new Person();

  new Person().getArea();

6、构造函数

  一般应用是对于初始化赋值

  在Java中至少又一个构造方法,我们没有写,系统会自动产生一个默认构造方法

  在构造方法里不含返回值概念是不同void的,对public void Per son( ) 这样的法就不再是构造方法,而变成普通方法,人都会犯这样的错误,在

定义构造方法void,果这个方法就不再被自动。 

  对构造方法进行重载:

  class Person{

  public Person(){

  System.out.println("构造方法");

  }

  public Person(String n){

  name = n;

  System.out.println("构造方法重载");

  System.out.println("name="+name);

  }

  public Person(String n,int m){

  name = n;

  age = m;

  System.out.println("构造方法重载");

  System.out.println("name ="+ n+"age ="+m);

  }

  public void shout(){

  System.out.println("打印方法");

  }

}

//调用class 

class TestPerson{

  public static void main(String[] args){

    Person p1 =new Person();

    p1.shout();

    Person p2 =new Person("Jack");

    p2.shout();

  }

}

   构造方法的重载的作用是可以根据传入参数不同,对对象进行不同的初始化;

  ps:构造函数一般都是用public修饰,不能用private,因为它们在对象产生时会被系统自动调用。

7、this引用句柄,

  1)其实就是对本类中,各个方法之间要调用其中一个方法的时候用this来指定。

  2)还有就是在外部参数传入的参数名和成员变量名相同的时候,必须用this来指定成员变量名以示区分,例如:this.name = name;

  3) 另外一种,假设我们有一个容器类和一个部件类,在容器类的某个方法中要创建部件类的实例对象,而部件类的构造方法要接收一个代表其所在容器的参数,程序代码如下: 

  class Cintainer{

  Component comp;
  public void addComponent() {

  comp = new Component(this);//this为对象传递 }

  class Component{

  Container myContainer; public Component(Container c) {

  myContainer = c;

 


 4)
构造方法是在产生对象时被Java系统自动调用的,我们不能在程序中象调用其他方法 一样去调用构造方法。但我们可以在一个构造方法里调用其他重载的构造方法,不是用构造方 法名,而是用 t hi s( 参数列表) 的形式,根据其中的参数列表,选择相应的构造方法 
  

public class Person {

  String name;
  int age;
  public Person(String name) {

  this.name = name;

  }

  public Person(String name,int age)

  {

  this(name);

  this.age = age;

  }

public void finalize()作用是当对象被当成垃圾从内存中释放前调用,而不是变成垃圾前调用。finalize()不是完全可靠地每次都会调用。
析构函数是在对象即将消亡之前调用的方法,那么结合前面的构造函数:我们就可以提前对对象的产生和消亡过程进行一些控制。但要知道的是:
无论是构造方法被调用,还是析构方法被调用,对象都在内存中存在。
8、在有些情况下,我们需要自行通知系统进行垃圾回收时,这个时候我们就需要调用System.gc()方法强制启动垃圾回收

9、static关键字,以及静态方法,静态代码块
修饰成员变量的时候,在引用它的时候不需要为该类去创建对象,它会一直保留在内存当然,知道程序结束
修饰方法的时候,我们可以用类名来访问方法,而不需要为该类创建对象

  在使,我意以下:
  
1) 用同类中成员(包括变和方),而不访问 

类中的非成员。这是为,对的方,要先创建对象后才使
用,而使用前不用创建任何对象。

  2) . 任何方式t hi s super 键字与 上面的道理一样,使用前不用创建任何实对象,法被调,t hi s 所引用的对象没有产生

  3) . main() 的,JVMmain 创建 main 在的对象,而在 main() ,我访问该类中的非成员,必须创建该类的一个对象,过这个对象访问类中的非成员,这情况,我在以会多。 

另外就是静态代码块:

  一个类中可以使用不任何态代(static block ),当类, 态代,,经常用来进行类属性初始。 

10、单态模式(IOS中的单例):

  所谓类的单式,就是的方个的,对在一个对象,该类一个对象的方。 例如:

  public class Single

  {

    private static final Single onlyOne = new Single();

    public static Single getSingle(){

      return onlyOne;

    }

    private Single(0{}

  }

 

11、内部类,应用非常多,可以使程序更具模块化,编写更容易,只需要记住内部类可以访问外部类成员,但是反过来就不成立,内部类只有在它的内部类范围之内是可知的,不被外部类使用。

class Outer {

int outer_i = 100; 

  void test() {

    Inner in = new Inner();

          in.display();
       }

    class Inner {

          void display()
          {

    System.out.println("display: outer_i = " + outer_i); }

  } }

class InnerClassDemo {

    public static void main(String[] args) {

    Outer outer = new Outer();

          outer.test();
       }

  当需要从外部类之外被调用,只要将内部类用public进行修饰;

  ps:方法中也能定义内部类,不只是可以在类中定义;在方法中定义的内部类只能访问方法中的 f i nal 类型的局部变量,因为用 f i nal 定义的局 部变量相当于是一个常量,它的生命周期超出方法运行的生命周期。 

  

class InOut {

    String str= new String("Between"); public void amethod(final int iArgs) {

    int it315; class Bicycle {

    public void sayHello() {

      System.out.println(str); System.out.println(iArgs);

        }//End of bicycle class }

  }//End of amethod }

在内类中sayHel l o ,我可以访问变i Ar gs st r ,但不访问 i t 315。 

12、类的继承,Java只支持单继承,不允许多重继承,亦是一个子类只能有一个父类,不允许一个类直接继承多个类;

  但是可以多层继承

  class A{}

  class B extends A{}

  class C extends B{}

  子类继承所有员变量方法,继承类的造方法。在类的造方

法中可使用语句super() 类的造方法。:我们为Student增加一个造 方法,在这个造方法中我们用 super 明确类的造方法。

  class Student extends Person {}

  public Student(String name,int age,String school) {

  super(name,age);

  this.school=school;

  } 

  如果子类的造方法中显式地调造方法,使用 t hi s 关键字用重 其它造方法,生子类的实对象时,系统默认调无参造方法。 

  在类的继承中,子类也同样可以覆盖父类的方法,若想调用父类方法,可以使用super.method();

 

13、  final关键字

  在 Java 中声明类、属性和方法时,可使用关键字 f i nal 来修饰。

  f i nal 标记的类继承。
  
f i nal 标记的方法类重
  
f i nal 标记变量( 员变量局部变量) 为常,赋值次,也只能在定义时赋值

 

14、abstract (修饰抽象类)

  抽象类必须用 abstract 关键字来修饰;

  抽象方法也必须用 abstract 来修饰。

  抽象类不能被实例化,也就是不能用 new关键字去产生对象。

  抽象方法只需声明,而不需实现。

  含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。 

  抽象方法的写法:
  
abstract 返回型 抽象方法( );

  抽象类和抽象方法的例子:
    abstract class A
    {

  abstract int aa(int x,int y);
  } 注意:含有抽象方法的类肯定是抽象类,抽象类中的某个方法不一定是抽象的。 

 

15、interface(接口)

  interface,接是一象类,这象类中只包含和方法的定义,而变量和方法的实

  public interface Runner{

    int iD = 1;

    void run();

  } 

  我们可以用extends关键字去继承一个已有的接口,也可以定义一个类用implements关键字去实现一个借口中的所有方法,

  还可以去定义一个抽象类用implements关键字去实现一个接口中定义的部分方法;

  interface  Animal extends Runner{

    void breathe();

  }//是一个接口,对Runner进行扩展

 

  class Fish implements Animal{

    public void run()

    {

      System.out.println("fish is swimming !");

    }

    public void breathe(){

      System.out.prinln("fish is bubbling !");

    }

  }//是一个类,具有animal接口中所有的方法,必须实现这些方法;

  abstract LandAnimal implements Animal{

    public void breathe(){

    System.out.prinln("LandAnimal is breathing");

  }

  }//是抽象类,但没有实现Run方法,Run在LandAnimal就成了一个抽象方法,LandAnimal就是抽象类;

  interface的目的就是达到多重继承的目的。一个类可以在继承一个父类的同时,实现一个或多个接口,extends关键字必须位于implenments关键字之前;例如:

  class Student extends Person implements Runner{};

  PS:

  实现一个接口就是要实现该接口的所有方法(抽象类除外)。

   接口中的方法都是抽象的。

  多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口。 

16、对象的类型转换

  用instanceof 可以判断某个类实现了某个接口,也可以判断一个实例对象是否属于一个类

  

  public static void CallA(A a) {

    if(a instanceof B) {

          B b=(B)a;
          b.func1();
          b.func2();
          b.func3();

    } else {

    a.func1();

    a.func2();

    }

  } 

  instanceof 的用法:

  对象 instanceof (或)

  它返回布尔的,(t r ue),(f al se)。 

17、异常处理(try...catch)、throws

   try

  {

    /*代码块*/

  }

  catch(Exception e){

  System.out.println("抛出异常");

  }

  throws,当某一个类用throws修饰的时候,另外一个类实例化它的时候就必须做出异常处理。

 

 

 

  

posted @ 2013-09-17 10:55  MyAppZone7797  阅读(213)  评论(0编辑  收藏  举报