欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA学习笔记-04

程序员文章站 2024-03-22 09:45:52
...

1.面对对象

1.1 抽象类:包含抽象方法的类,不能实例化

public abstract class Animal{
    public abstract void run();
    public void breath(){//可以包含普通方法
        System.out.println("呼吸");
    }
}
public class Cat extends Animal{
    @override
    public void run(){//子类必须重写父类抽象方法
        System.out.println("猫步");
    }
}

1.2接口


  • 比抽象类还要抽象,不能包含普通方法
    给设计师写的
public interface Animal{//接口中只有:常量,抽象方法
    String MAX_GRADE="100";//(public static final)默认在前面
    int MAX_SPEED=120;
    void run();//(public abstract)默认在前面
    int age(int a,int b);   
}
public class Dog implements Animal{//一个类可以实现多个接口
    @override
    public void run(){
        System.out.println("狗跑"+MAX_SPEED);
    }
    @override
    public int age(int a,int b){
        return a+b;
    }
}

注:一个人只有一个父亲,但是可以遵守多个规范

1.4内部类
内部类:把一个类,放到另一个类的内部定义实现,提供更好的封装。
外部类可以直接访问,但是其他类不能直接访问。
内部类可以直接访问外部类的私有属性,但是外部类不能直接访问内部类的属性。

public class Face{
    String faceType;
    class Nose{//内部类
        String noseType;
        void breath();
    }
}
public class Test{
    public static void main(String[] args){
        Face.Nose nose =new Face().new Nose();
        //两种调用方法
        Face f= new Face();
        Nose n = f.new Nose();
    }
}

静态内部类,

2.数组

数组也是对象,引用类型。

int[] a = new int[3];//对象
a[0]=21;
a[1]=22;
a[2]=23;
Car[] c = new Car[10];
c[0]=new Car("benzi");//类数组
c[1]=new Car("BMW");
public class Car{
    String name;
    public Car(String name){
        this.name=name;
    }
} 
  • 三种初始化方法
int[] a;
int b[];//声明
a = new int[4];//创建
b = new int[5];//
//默认初始化,数组元素相当于对象的成员变量,默认值也一样
//动态初始化
for(int i=0;i<a.length;i++){
    a[i]=i*12;
}
//静态初始化
int c[]={23,24,25};
Car[] c1 = {new Car("benzi"),new Car("BMW")};

3.String

  • String:不可变字符

boolean equals(Obeject a)//字符串相等,返回true
JAVA学习笔记-04
JAVA学习笔记-04
3.1StringBuilder
 String:字符串常量
 StringBuffer:字符串变量,有一段16字符的Buffer,不够再扩容。安全
 StringBuilder:字符串变量,不安全

1 String s = "abcd";
2 s = s+1;//不断创建新的对象,JVM回收垃圾
3 System.out.print(s);

3.2模拟ArrayList代码

public class MyArrayList {
    private Object[] value;
    private int size;

    public MyArrayList() {
        this(16);//调用下面的构造器
    }//初始化

    public MyArrayList(int size) {
        value = new Object[size];
    }//初始指定长度

    public void add(Object obj) {
        value[size]=obj;
        size++; 
        if(size>=value.length) {
            Object[] newValue=new Object[value.length*2];
            for (int i=0;i<value.length;i++) {
                newValue[i]=value[i];
            }//拷贝原始数据
            value=newValue;
        }
    }//添加对象

    public Object get(int index) {

        if(index<0||index>size-1) {
            try {
                throw new Exception();
            }catch(Exception e) {
                e.printStackTrace();

            }
        }
            return value[index];
    }//获取当前index对象

    public int Size() {
        return size;
    }//返回大小

    public int indexOf(Object obj) {
        if(obj==null) {
            return -1;
        }else {
            for(int i =0;i<value.length;i++) {
                if(value[i]==obj) {
                    return i;
                }
            }
        }
        return -1;//找不到
    }//返回对象的index

    public int lastIndexOf(Object obj) {
        if(obj==null) {
            return -1;
        }else {
            for(int i=value.length-1;i>=0;i--) {
                if(value[i]==obj) {
                    return i;
                }
            }
        }
        return -1;//找不到
    }   
}
public class Human {
    String name;
    public Human(String name) {
        this.name=name;
    }
}
public class Human {
    String name;
    public Human(String name) {
        this.name=name;
    }
}
相关标签: java