Java学习Day4-基本数据类型、数组、对象

本文详细介绍了Java中数组的基本概念,包括数组的默认值、空指针异常(NPE)及其预防措施。讨论了数组在内存中的存储位置,以及如何通过new关键字创建数组和对象。此外,还提到了Java 8中Arrays类的增强功能,如二分查找。同时,阐述了类与对象的关系,构造方法的作用,并对比了数组与对象的构造方式。最后,探讨了数组元素的插入操作和相关方法。
摘要由CSDN通过智能技术生成

基本数据类型对应的引用数据类型

数组Array:组成成分

下标/索引(英文:index),元素(英文:element)

基本数据类型也可以是一个数组

如byte [] 、short [] 、int [] 、 long []、 float []  double []、 boolean [] 、 char []  string []

数组类型默认值
byte []0
short []0
int []0
long []0
float []0.0
double []0.0
boolean []false
char []\u0000表示字符集中的第零号字符
string []NULL,真正意义上的空

Java中的空

' '空字符
" " 空字符串
NULL空地址,真正意义上的空数组

 什么是NPE,什么情况下会发生NPE?

NullPointerException        空指针异常

Java语言严格规定当指针是null的时候,不允许通过指针进行操作,这时会发生NPE异常

任何防止NPE?

当你使用指针进行操作的时候,如果不确定指针是否为null应该对指针做非空判断,判断指针为null时,使用new关键字开辟内存空间

if(指针 == null)        {指针 = new ...}

在栈帧、堆区中的分析

数组在栈帧中存储的是变量/指针/引用(内存地址),数组的真正空间是在堆区

代码解读:int[] arr = new int[10];

先执行右边,即在堆区创建一个空间,然后再在栈帧创建一个指针指向堆区中的数组空间

根据数组指针扩展到数组对象

引用数组特点

数组中的所有元素都是同一种数据类型

数组中的元素没有名字,只有索引

int[] arr = new int[10];

10个元素全是int,只能存储10个整数

扩展到对象

需要一种数据类型可以高度自定义的数据结构

比如存储一个学生的信息

学号int
姓名String
年龄int
性别char

根据方法区中字节码文件,在堆区中分配内存空间,形成对象

类是创建对象模板

new关键字

用于在堆区造数组

new 数据类型[长度]

数组的构造器是系统默认就有的,任何一种数据类型都可以使用数组构造器来构造数组

例如:

new int[10]

用于在堆区造对象

new 构造方法()

对象的构造器是类里面提供的

例如:new Student();

这个new后面的Student()是一个无参构造方法,是编译器给你自动生成的,在字节码文件中可以看到

 造数组和造对象的区别:

数组[]里面要加数字,对象()里面可以不用

数组必须用固定形式

对象的构造方法可以自定义:

1、构造方法使用public修饰

2、构造方法没有返回值类型(连void都没有)

3、构造方法的名字必须与当前类名相同

4、构造方法的内部都有一个this指针,指向当前对象

注意点:如果一个类没有手动指定一个构造方法,则编译器会提供一个默认的无参构造方法;如果手动指定了构造方法,则编译器将不再提供默认的无参构造方法

函数和方法的区别

函数不能调用指针,方法可以

方法和对象相关,函数和方法无关

this关键字

有this指针的只有构造方法和成员方法

静态函数中没有this指针

this指针的作用是:把值赋给堆区中对应的元素

无参构造方法存在的意义?

new Student() 再堆区里面构造一个对象,对象中元素存储的数据还未知的时候,可以使用无参构造方法,后续的代码在获得数据以后,可以通过指针操作对象,读写数据

带参的构造方法存在的意义?

自己定义this指针

在堆区里面构造一个对象的时候,已经很明确对象中存储的是什么内容,我们可以使用带参构造,在构造的时候需要自己手动指定this指针

数组元素的插入操作

从插入的索引位置开始,后面的元素后移一位,空出指定的位置

再把元素存入指定位置

Java 8 增强的Array类

Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组,这个Arrays类里包含了如下几个static修饰的方法(static修饰的方法可以直接通过类名调用)

静态函数是通过类名调用的

成员方法是通过对象指针调用的

int binarySearch(type[] a, type key):使用二分法查询key元素值在a数组中出现的索引;如果a数组不包含key元素值,则返回负数。调用该方法时要求数组中元素已经按升序排列,这样才能得到正确结果

int binarySearch(type[] a, type key):使用二分法查询key元素值在a数组中出现的索引;如果a数组不包含key元素值,则返回负数。调用该方法时要求数组中元素已经按升序排列,这样才能得到正确结果

类和对象

类是对象的抽象,对象是类的具体实例

比如购物车是一个类,购物车里面的商品则是一个一个对象

构造方法

类里面一定存在的,可以声明也可以不声明,方法名必须和类名一致

成员方法

根据实际情况声明的


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值