java学习笔记(一)

一.java规则:静态变量即类变量(区别与实例变量)用类方法即静态方法访问
例:

public class Object_1 
 {
     static int i=1;
     static
     {
         //静态区域块,只执行一次,当一个类定义时,在代码区定义执行完成
         System.out.println("one");
          i++;
     }
     public Object_1()
     {
         System.out.println("two");
         i++;
     }
 }

二.java面向对象编程-四大特征
1.抽象
2.封装:public(公开),protected(子类和同包),默认(同包),private(私有)
3.继承:extends(继承public,protected)
4.多态
三.多态
1.重载{
   方法名相同
   方法的参数类型,个数,顺序至少有一项不一样
   方法返回类型可以不同   
   方法修饰符可以不同
   若只有返回类型不同,不可构成重载
   若只有访问修饰符不同,不可构成重载
}
2.方法覆盖(子类方法覆盖父类方法){
   子类方法的返回类型,参数,方法名称要和父类完全一样
   子类方法不能缩小父类方法的访问权限(例:子类public,父类可为protected)
}

3.多态是指通过指向父类的指针,来调用在不同子类中实现的方法

例(父类:Animal;子类:Dog,Cat):

public static void main(String[] args) {
		Cat c=new Cat();
		c.Bake();
		Dog d=new Dog();
		d.Bake();
		Animal a=new Animal();
		a.Bake();
		Animal b=new Cat();
		b.Bake();
		Master m=new Master();
		m.feed(new Cat(), new Fish());
		m.feed(new Dog(), new Bone());
	}

 4.抽象类
  当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]

 例

 

//抽象类,不能被实例化,但可Animal a=new Cat()
abstract class Animal
{
    String name;
    int age;
    //抽象方法,不能有主体即{}
    abstract public void cry(); 
}
//当一个类继承抽象类时,必须实现父类中的所有抽象方法
class Cat extends Animal
{
    public void cry()
    {
        
    }
}

 

5.接口(更抽象的抽象类){
   接口不能被实例化  
   接口中所有方法都不能有主体,抽象类则可以
   一个类可以实现多个接口,用逗号区分开来
   接口中可以有变量但不能用private,protected修饰,接口的变量本质是static,而且是final,要初始化,可做全局变量

   (final)注:不希望父类的某个方法被子类覆盖时,可以用final关键字修饰
                   不希望类的某个变量被修改时,可以用final关键字修饰,且必须赋初值
                   不希望类被其他类继承时,可以用final关键字修饰
   一个接口不能继承类,但是可以继承别的接口
}

例:

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Computer c=new Computer();
        Camera ca=new Camera();
        Phone p=new Phone();
        //多态
        c.useusb(ca);
        c.useusb(p);
    }

}
//抽象类,不能被实例化
abstract class Animal
{
    String name;
    int age;
    //抽象方法,不能有主体即{}
    abstract public void cry(); 
}
//当一个类继承抽象类时,必须实现父类中的所有抽象方法
class Cat extends Animal
{
    public void cry()
    {
        
    }
}

//接口
interface USB
{
    //方法
    public void start();
    public void stop();
}
//继承接口的类必须实现接口的全部方法
class Camera implements USB
{
    public void start()
    {
        System.out.println("我是相机,开始工作");
    }
    public void stop()
    {
        System.out.println("我是相机,结束工作");
    }
}
class Phone implements USB
{
    public void start()
    {
        System.out.println("我是手机,开始工作");
    }
    public void stop()
    {
        System.out.println("我是手机,结束工作");
    }
}
class Computer
{
    public void useusb(USB usb)
    {
        usb.start();
        usb.stop();
    }
}

 6.数组:int a[]=new int[5];长度:数组名.length 

 7.位运算和移位运算{
  按位与&:两位全为1,结果为1
  按位或|:两位有一个为1,结果为1
  按位异或:两位一个为0,一个为1,结果为1
  按位取反:0->1,1->0

  算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位
  算术左移<<:符号位不变,低位补0
  逻辑右移>>>:低位溢出,高位补0

}

8.集合选择{
  如果要求线程安全,使用Vector、Hashtable
  如果不要求线程安全,应使用Arraylist、LinkedList、HashMap
  如果要求键值对,则使用HashMap、Hashtable
  如果数据量很大,又要线程安全考虑Vector
}


9.paint方法在JPanel类中{
  以下情况paint方法会被调用{
   当组件第一次在屏幕显示时,程序会自动的调用paint()方法来绘制组件
   窗口大小发生变化时
   窗口最小化,再最大化时
   repaint函数被调用时
  }  
}
10.Graphics是绘图的重要类,可以理解为一支画笔

posted @ 2017-03-11 14:41  Carling  阅读(171)  评论(0)    收藏  举报