数组和面向对象

1. 数组

1.1 为什么要使用数组

在开发中可能会存在很多情况下,相同数据类型都是数据大量使用的情况,按照目前我们所学的方式,在代码中可能就会出现很多行的变量定义,会导致以下问题:
1. 代码过于臃肿!
2. 代码阅读性极差!
3. 数据维护性极差!
4. 数据没有任何的复用度可言,操作非常繁琐!

1.2 定义数组

数据类型[] 数组名 = new 数据类型[容量];
赋值左侧
数据类型:
	告知编译器,当前数组中能够保存的数据类型到底是什么?并且在确定数据类型之后,整个数组中保存的数据类型无法修改!!!
[]:
	1. 告知编译器这里定义的是一个数组类型数据。
	2. 明确告知编译器,数组名是一个【引用数据类型】
数组名:
	1. 操作数据非常重要的数据!
	2. 数组名是一个【引用数据类型】
赋值号右侧:
new:
	申请【XX】内存空间,并且清空整个内存空间中所有二进制位,所有的二进制位都是0
数据类型:
	前后呼应,告知编译器这里支持存储的数据类型到底是什么?
[容量]:
	容量==> Capacity
	告知编译器,当前数组中能够存放的对应数据类型的数据,最大存储多少个!

1.3 数组的下标

规定:
    数组中的下标是从0开始,到数组的容量 - 1
操作会出现的问题:
    数组下标越界  ArrayIndexOutOfBoundsException

2. 面向对象

2.1 什么是面向对象

2.1.1 生活中

从生活角度看面向对象:
    找合适的人,做合适事
从生活角度看面向过程:
    亲力亲为,自力更生,体验人生疾苦

2.1.2 代码中

Arrays.toString();
Arrays.sort();
Arrays.binarySearch();

2.2 类和对象

类:
对于一类事物的统称,对当前事物的一些描述,属性描述和行为描述
对象:
独立,唯一,特殊的个体 

2.3 Java中定义类的格式

class ClassName {
// 属性描述
// 行为描述
}
要求:
1. ClassName要求符合大驼峰命名法,并且要做到见名知意!!!
2. 属性描述,是用于描述当前类拥有的一些特征,这里可以使用变量
该变量有一个特定的名字【成员变量】 Field
3. 行为描述,是用于描述当前类可以做到一些事情,这里使用方法。
该方法有一个特定的名字【成员方法】Method

2.3.1 Java中定义类【成员变量】

例如:
class Person {
// 属性描述,这里使用成员变量 Field
// 使用String类型来描述Person类的姓名属性
String name;

// 使用int类型数据描述Person类的年龄属性
int age;
}

2.3.2 Java中定义类【成员方法】

例如:
// 使用方法描述Perosn类的吃饭行为                            
public void eat(String food) {                   
    System.out.println("吃" + food);              
}  

2.4 类对象使用

2.4.1 Java中创建类对象的形式

new 对象
例如:Scanner sc = new Scanner(System.in);
java.util.Scanner : 
    数据类型,Scanner类型。创建的【变量】是Scanner的类对象,同时也是一个引用 数据类型
sc : 
    类对象,变量
    Scanner的类对象,sc是对象名

new :
    申请内存的【堆区】空间,并且清理整个空间中的所有数据。
    代码中,只有有new关键字,一定会使用到内存的堆区空间,并且是新的内存空间。
Scanner(System.in) :
    1. 这里是一个方法,因为有小括号
    2. 方法名字和类名一致
    3. 该方法称之为构造方法,Constructor 构造方法

总结:
    类名 对象名 = new 构造方法(所需参数);

2.4.2 Java中使用类对象调用成员变量

格式:
    对象名.属性名/成员变量名;
    . ==> 的
    可以操作取值或者赋值操作。

2.4.3 Java中使用类对象调用成员方法

格式:
    类对象.方法名(必要的参数);
    . ==> 的

2.5构造方法 Constructor

2.5.1 Java编译器提供的默认的构造方法

通过反编译工具,发现了一些不存在与代码中的内容,而这段内容就是Java编译器为了方便程序开发,提供的一个必要的无参数构造方法。
Java编译器如果发现当前class没有显式自定义构造方法,会默认提供一个无参数构造方法给予使用。
如果Java编译器发现在代码中出现了任何一个构造方法,就不会再提供对应的无参数构造方法。

2.5.2 自定义使用构造方法

构造方法功能:
    初始化当前类对象中保存的成员变量数据。
目前创建对象的方式;
    new 构造方法(有可能需要的参数);

new:
    1. 根据构造方法提供的数据类型申请对应的堆区内存空间。
    2. 擦除整个空间中所有的数据。
构造方法:
    初始化在当前内存堆区空间的成员变量对应的数据

格式:
    public 类名(初始化形式参数列表) {
	    初始化赋值语句;
    }

要求:
    1. 无论什么时候一定要留有一个无参数构造方法备用
    2. 根据所需情况完成构造方法参数选择
    3. 一个class可以有多个构造方法【方法的重载】
总结:
    1. 所有的方法名字都是一致的!
    2. 所有的方法参数都是不一样的!
    3. 同一个类内!

2.6 this关键字

this关键字特征:
    this关键字表示调用当前方法的类对象

2.7 "零"值

new关键字申请内存空间,并且擦除的一干二净
对应每一个数据类型的"零"值
基本数据类型
    byte short int   0
    long             0L
    float            0.0F
    double           0.0
    char             '\0' ==> nul
    boolean          false
引用数据类型
    Person person  null
    String str     null
    int[] arr      null
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值