Java DAY4(数组基本运用和类,构造方法,对象,变量)

1.(1)什么是NPE:NPE是NullPointerException的缩写,是JAVA里的空指针,一般指对一个空对象                                   (null)进行了操作而出现的问题。

 

      (2)什么情况下会发生NPE? 本身引用的内容是空的,比如获取一个对象的值,但是这个对象在                                                    逻辑中没拿到值,变成了null

       (3)如何防止NPE?当你使用指针进行操作的时候,如果不确定指针是否为null应该对指针做非             空判断,判断指针为null时,使用new关键字开辟内存空间if(指针== null) {指针= new ...}。

2.new关键字的作用:是在堆区开辟内存空间,并返回该内存空间的内存地址   

                                 1. 用于在堆区造数组

                                    new 数据类型[长度]

                                   数组的构造器是系统默认就有的,任何一种数据类型都可以使用数组构造器                                     来构造数组。例如:new  int[10];

                                 2.用于在堆区造对象

                                   new构造方法:对象的构造器是类里面提供的。例如:new Student();

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

3.数组和对象的区别:

(1)创建方式不同:数组表示有序数据的集合,而对象表示无序数据的集合。数组的数据没有属                                    名,但是有索引号,对象的数据有属名,但是没有索引号。

(2)调用方法不同

(3)对象键值唯一,数组可以重复

(4)对象没有长度,不能用for循环

4.基本数据类型:简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示                                了真实的数字、字符和整数。
     引用数据类型: Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数                                 据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同                                 时可以针对程序外部进行信息隐藏。

5.正序遍历数组

    倒序遍历数组

6.数组求和

7.数组求最大值和最小值

 8.数组求平均数

9.数组扩容的策略

 10.数组中插入元素

11.数组中删除元素

12.反转数组:方法一:使用循环,交换数组中元素的位置使用循环,在原数组中交换元素的位                                           置:第一个元素与最后一个元素交换,第二个元素与最后一个元素交换,                                         依此类推,直到结束。

                         方法二:使用循环,将原数组元素反向放置在新数组中:在函数内部,初始化一                                                            个新数组(数组大小和第一个数组arr相同)。数组arr[]从第一个                                                            元素迭代,将其中的每个元素从后面放置在新数组中,即从最                                                          后一个元素迭代新数组。这样,数组arr[]的所有元素都将反向                                                          放置在新数组中。我们从头迭代新数组并输出数组元素。

13.使用冒泡排序算法排序数组:冒泡排序的思想是比较相邻的元素的值,如果满足条件就交换                                                          值。
                              这里以降序排列为例:如果前面一个元素大于后面一个元素,就交换两者的                                    值,这样一来,大的值就会后移,而较小的值会移动到数组的前面,一轮过                                    后,数组中最大那个数就会被挪到最后,其它较小的元素都会像气泡一样上                                    浮,经过几轮这样的排列后数组就按照从小到大的次序排好了。

14.官方的Arrays工具类

  (1)int binarySearch(type[] a, type key):使用二分法查询key元素值在a数组中出现的索引;如果a
数组不包含key元素值,则返回负数。调用该方法时要求数组中元素已经按升序排列,这样才能得到正确结果。
  (2)int binarySearch(type[] a, int fromIndex, int toIndex, type key):这个方法与前一个方法类似,但它只搜索a数组中fromIndex到 toIndex索引的元素。调用该方法时要求数组中元素已经按升序排列,这样才能得到正确结果。
  (3)type[] copyOf(type[] original, int length):这个方法将会把 original数组复制成一个新数组,其中length是新数组的长度。如果length小于original数组的长度,则新数组就是原数组的前面length
个元素;如果 length大于original 数组的长度,则新数组的前面元素就是原数组的所有元素,后面补充О(数值类型)、false(布尔类型)或者null (引用类型)。
  (4)type[ ] copyOfRange(type[ ] original, int from, int to):这个方法与前面方法相似,但这个方法只复制original 数组的from索引到to索引的元素。
boolean equals(type[] a, type[] a2):如果a数组和a2数组的长度相等,而且 a数组和a2数组的数组元素也一一相同,该方法将返回true。
  (5)void fill(type[] a, type val):该方法将会把a数组的所有元素都赋值为val。

15.二维数组:例如:int score[2][3]。2是行数。3是列数。行数和列数:只能是整形常量,不能是变量
                           元素是在计算机中是按行存储,即先存储第一行所有元素,在存储第二行所有元                             素,依次存储
                       初始化:int score[2][1]={{1,2,3},{4,5,6}};

16.类和对象:

     (1)、类:类是面向对象程序设计实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。

     (2)、对象:对象(英语:object),是一个存储器地址,其中拥有值,这个地址可能有标识符指向此处。

    方式不同:

    (1)、类:类的实质是一种引用数据类型,类似于byte、short、int(char)、long、float、double等基本数据类型,不同的是它是一种复杂的数据类型。因为它的本质是数据类型,而不是数据,所以不存在于内存中,不能被直接操作,只有被实例化为对象时,才会变得可操作。

   (2)、对象:在软件系统中,对象具有唯一的标识符,对象包括属性(Properties)和方法(Methods),属性就是需要记忆的信息,方法就是对象能够提供的服务。在面向对象(Object Oriented)的软件中,对象(Object)是某一个类(Class)的实例(Instance)。

17.成员变量:   成员变量也称属性,是事物静态特征的抽象。成员变量分为两种:类的成员变                                 量和对象的成员变量(又称为实例变量);声明成员变量语法如下:                                               [public|private][static][final]<type><variable_name>
                            各参数的含义如下:public、private:用于表示成员变量的访问权限。
                            static:表示该成员变量为类变量,也称为静态变量。
                            final:表示将该成员变量声明为常量,其值无法更改。
                            type:表示变量的类型。
                            variable_name:表示变量名称。

             成员变量的默认值:布尔型(boolean)变量默认值为false,byte、short、int、long为0,字                                        符型为'\u0000'(空字符),浮点型(float double)为0.0,引用类型(String)为null

18.构造方法:(1).构造方法使用public 修饰

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

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

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

                       (5)如果一个类没有手动指定构造方法,则编译器会提供一个默认的无参构造方                                    法,如果手动指定了构造方法,则编译器不再提供默认的无参构造方法

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

                       (7)带参构造方法存在的意义?在堆区里面构造一个对象的时候,已经很明确的                                     知道对象中存储的是什么内容,就可以使用带参构造方法

19.成员方法:方法是数据的操作的定义。在JAVA中,方法只能作为类的成员,也称为成员方                                法。方法操作类所定义的数据,以及提供对数据的访问的代码。

                         方法声明包括方法名、返回类型和外部参数。其中参数的类型可以是简单数据类                             型,也可以是复合数据类型(又称引用数据类型)。 

                         对于简单数据类型来说,java实现的是值传递,方法接收参数的值,但不能改变这                           些参数的值。如果要改变参数的值,则用引用数据类型,因为引用数据类型传递                            给方法的是数据在内存中的地址,方法中对数据的操作可以改变数据的值。

20. this关键字

        (1)关键字this是一个变量,一个引用,保存当前对象的内存地址,指向自身。

                 所以严格意义来讲,this代表的就是“当前对象”。this储存在堆内存中对象的内部

        (2)关键字this可以使用在实例方法中,谁调用这个实例方法,this就是谁。所以this代表的                    是当前对象。

       (3)关键字this也可以使用在构造器中,大部分情况下可以省略,但是用来区分局部变量和                    实例变量的时候不能省略。

       (4)this();这种语法只能出现在构造器的第一行,表示当前构造器调用本类其他的构造器,                   目的是代码复用


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值