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是绘图的重要类,可以理解为一支画笔
浙公网安备 33010602011771号