java基础之一 数组、对象

时间:2023-02-16 17:46:50

一、数组

  1. 定义
    Type[] name;(常用),基本很少使用Type name[];
  2. 初始化
    静态初始化:
int[] it=new int[4];
在类初始化时默认产生,栈内存存储it地址指向堆内存中的[0][0][0][0],四个默认为int 0的数组

动态初始化:

int[] it={1,2,3,4};动态指认数组的值
  1. java8增强
    java8提供Arrays增强类实现对数组的操作
    Apache Commons Lang 库 的 ArrayUtils的使用
int[] it={2,1,3,4};
Arrays.sort(it);//升序
Arrays.sort(it,Collections.reverseOrder());//降序
Arrays.asList(it);//转成集合
Arrays.toString(it);//打印数组
ArrayUtils.addALL(集合a,集合b);//合并链接两个数组
ArrayUtils.reverse(it);//反转数组 {4,3,1,2}
ArrayUtils.removeElement(it,2);//移除数组中的某个元素 {2,1,4}

二、对象

  1. static
    –静态成员属于类成员,随着类的创建而创建,随着类的回收而回收。

    –调用方式:类名.静态成员,应该避免使用对象调用静态成员。

    –静态成员不能访问非静态成员:
    因为静态成员作用域比非静态成员作用域大,当在静态成员访问非静态成员时,非静态成员还有被加载则造成异常,通常访问非静态成员时,无法指向合适的对象。

  2. 方法重载和方法重写
    方法重载:两同一不同:
    同一个类中,同一个方法名,参数列表不同即可
    方法重写:两同两小一大
    方法名和参数列表相同,方法修饰符和异常类型大小比被重写的方法要小,子类访问权限要比父类权限大
  3. 访问类型
    private:同一个类中访问
    default:同一包中
    protected:子类中可以访问,多用于定义父类被子类继承的类
    public:全局范围可以访问

  4. 构造器
    1.创建对象时初始化;
    2.至少有一个,没有系统默认一个空的构造器
    3.构造器重载,尽量把同一套代码书写两次以上!

构造器A{st1,st2}
构造器B{st1,st2,st3}
优化为:构造器B{this.构造器A,st3}

5.代码块
用于提取多个构造器利重复的代码的初始化代码,
初始化类时先初始化父类的静态代码块然后子类静态代码块
三、类继承
1.extends,表示扩展,子类对父类的扩展更为准确些;
2.java子类不能获得父类的构造器;
3.java支持单继承(只有一个直接父类),c++支持多继承;
4.重写:两同两小一大;
5.super:关键词:

  • 用于访问父类被重写的方法或者成员变量
  • 用于调用父类的构造器
  • 注明:子类对象初始化时,1.类初始化(一次),先调用object静态代码块,父类静态代码块,子类静态代码块,2.对象初始化,然后调用父类构造器,子类构造器

四、多态(工厂模式

  • 概念:父类引用指向子类对象,java引用类型分为编译类型和运行类型,当两种类型不一致时将会产生多态。
  • 注意:父类引用调用指向子类的方法,调用父类的属性

五、自动拆箱和装箱

自动装箱:基本类型自动转为包装类型,int–>integer
自动拆箱:包装类型自动转化为基本类型,integer–>int
eg:

Integer i1=new Integer(4);//4-->装箱为integer对象
Int i2=i1.intValue(); //i1拆箱为4