Java基础之一维数组,类与对象和private,static,this关键字

                              Java基础之一维数组

数组:可以存储多个元素并且多个元素是同一种类型的容器

数组的定义:

       数据类型[] 数组名;

                   例如:int[]a;  意义:定义了一个int类型的数组变量a

       数据类型 数组名[];

                   例如:int a[];  意义: 定义了一个int类型变量a数组

注意:虽然两种定义方式读法和写法不同,但是表达的效果一样,都是在定义一个数组,推荐使用第一种方式;

数组的初始化:

                 1)动态初始化:  给数组指定长度,数组中的元素值由系统默认给定

                              数据类型[] 数组名 = new 数据类型[数组长度] ;

                 2)静态初始化:  给定数组中元素的值,数组的长度由系统给定;

                                     数据类型[] 数组名称= {元素1,元素2,元素3..} ;

初始化的错误:动静结合定义数组要么动态初始化,指定长度,要么静态初始化指定数组元素!

如何获取数组中的元素

         获取数组中的元素:通过数组名称获取

格式:数组名称[索引值],数组的索引值从0开始,最大的索引=数组长度-1

数组中经常会出现的异常:

                 1>ArrayIndexOutOfBoundsException:数组角标越界异常

                                   出现的原因:访问了数组中不存在的索引值;

                                   解决方案:观察数组中到底有索引值到多少;  数组长度-1

                2>NullPointerException:空指针异常 (在实际开发中该异常是最多的)

                                   出现的原因:对象为null,而开发者还要去使用对象,就会出现问题

                                   解决方案:给某个对象进行非空判断,防止程序程序空指针异常

数组的应用:

         1>数组的遍历:

                   publicstatic void printArray2(int[] arr) {

                   //左中括号

                   System.out.print("[");

                   for(intx = 0 ; x < arr.length ; x ++) {

                            //判断当前x是否是最后一个索引

                            if(x==arr.length-1){//如果是最后一个索引的对应的元素

                                     System.out.println(arr[x]+"]");

                            }else{

                                     System.out.print(arr[x]+",");

                            }

                   }

         }

         2>数组的最值问题:

                   publicstatic int max(int[] arr) {

                   //定义参照物

                   intmax = arr[0] ;

                   //遍历其他元素

                   for(intx = 1 ; x < arr.length ; x ++) {

                   //获取到每一个元素,分别和参照物进行比较,如果大了,就作为最大值进行继续比较

                            if(arr[x]> max) {

                                     max= arr[x] ;

                            }

                   }

                   returnmax ;

         }       

3>数组逆序:

         /*

*定义一个数组,静态初始化

 *             将数组中0索引对应的元素和arr.length-1索引对应的元素进行互换

 *             将1索引对应的元素和arr.length-1-1索引对应的元素进行互换

 *             ....

 *             只要保证数组的长度arr.length

*/

 

         publicstatic void revers2(int[] arr) {

                   for(intstart = 0,end = arr.length-1 ; start<=end ;start++,end --) {

                            //temp中间变量

                            inttemp = arr[start] ;

                            arr[start]= arr[end] ;

                            arr[end]= temp ;

                   }

         }

4>元素的查找:

数组中的元素查找法(数组中的基本查找法)

 *                      定义一个数组,静态初始化,查找某个元素在该数组中第一次出现的索引

 *   分析:

 *             1)给出了数组

 *             2)写一个查找数组中的元素的索引的方法

         publicstatic int getIndex(int[] arr,int value) {

                   //如果没有找到这个元素,假设找不到

                   intindex = -1 ;

                   //遍历数组

                   for(intx = 0 ;  x < arr.length ; x ++) {

                            //获取到每一个元素,如果找打,修改索引值

                            if(arr[x]== value) {

                                     //修改

                                     index= x ;

                                     break;

                            }

                   }

                   returnindex ;

         }

Java为了提高程序执行效率,将内存分配为5个部分:

                                                        Java基础之类与对象

在介绍面向对象前,先知道面向过程的思想

面向过程:

         假设有一个需求:求数组中的最大值;

         定义一个数组,静态初始化---->定义一个参照物---->遍历....

         给一个需求,对需求分析,然后一步一步进行操作,最终得到某一个结果,整个过程都是自己在完成....

面向对象的思想概述:

                   思想的特征:

                            1)面向对象更符合我们的生活中的行为思想习惯

                            2)面向对象将我们从执行者变成了指挥者,指挥对象做事情

                            3)面向对象简单性体现在这里:让我们事情从复杂性--->简单化

面向对象的三大特征:

                            封装

                            继承

                            多态

 

举例:

         炒菜:

                                     面向过程:买菜--->摘菜--->洗菜--->切菜--->炒菜--->出锅

                                     面向对象:找一个对象..--->出锅...

面向对象在代码中的实现:

         将事物----->看成类

将事物对应的属性--->看成这个类的成员变量

         将事物对应的行为----->看成这个类的成员方法

一个标准类包括:

                成员变量:姓名,年龄,性别

                成员方法:set/getXXX()

                                   学习,睡觉...           

                构造方法:

                         无参构造:

                         有参构造

*成员变量

面试题:

  成员变量和局部变量的区别

                1)在类中位置不同

                         成员变量:类中,方法外

                         局部变量:方法声明上,或者再方法定义中

                2)在内存中的位置不同:

                         成员变量:堆内存

                         局部变量:栈内存

                3)生命周期不同:

                         成员变量:成员变量是随着类的加载而加载,随着类的消失而消失

                         局部变量:随着方法的调用而存在,随着方法调用完毕而消失

                4)初始化值不同

                         成员变量:初始化由系统默认初始化,

                                     对于成员变量,可以不给初始化值,由系统给,然后显示初始化;

                         局部变量:定义一个局部变量,必须进行初始化,如果不初始化,无法使用(在使用之前进行初始化)

 

*成员方法

成员方法的分类:

                                   1)按照返回值划分

                                            void的形式:没有具体的返回值

                                            void形式:有具体返回值

                                   2)按照参数进行划分

                                            空参

                                            有参

*构造方法

构造方法作用:

                 就是给对象进行进行初始化

构造方法的特点:

                   1)方法名和类名相同

                2)构造方法,void都没有

构造方法的注意事项:

                1)之前没有写无参构造,系统会默认提供无参构造

                2)如果我们无参构造或者有参构造,系统不会在提供无参构造;定义一个类的时候,永远给出无参构造;

         构造方法是可以重载的

创建对象经历的过程:

匿名对象:就是创建对象的时候,没有名字的对象,但依然在堆内存开辟空间

         new对象

匿名对象在实际开发中,只用使用一次,不要使用多次  (可能会造成一个内存溢出的现象);

形式参数的问题:

                           如果是基本数据类型,形式参的改变对实际参数没有影响

                         研究引用类型:形式参数的改变会直接影响实际参数

在Java中,创建对象:new对象

类名 对象名 = new 类名() ;        

Java基础之常用的几个关键字

 private的用法:

                         1)被private修饰的只能在本类访问

                         2)可以通过公共的访问public去间接访问

 当前成员变量和局部变量名称一致的情况,遵循就近原则

private:体现的也是一种封装思想

 封装: 标准类的写法,将成员变量全部私有化,被private修饰的成员变量只能在本类中访问,可以通过公共的访问方法去访问成员变量        

This关键字:                            

this:代表是当前类对象,或者是(当前类对象的引用),解决局部隐藏了成员变量

例如:

         publicvoid setBrand(String brand) {

//               brand= brand ;

                   this.brand= brand;

         }

关于static关键字:

                1)静态随着类的加载而加载

                2)static优先于对象存在

                         回想:main  public static void main(..){...}

               

                 3)static共享数据,可以被多个对象进行共享

                         举例:        饮水机(staticd的:共享的)

                                            水杯(不能共享的...)

                4)如果数据被静态修饰的,它可以被类名直接调用

                                            被静态修饰的方法:        类名.方法名()

                                            被静态修饰的变量:        类名.变量名;

static用法:

                一个类中可有静态变量,也可以有非静态

                可以有静态成员方法,也可以非静态的成员方法

                静态的方法只能访问静态变量,或者是静态的方法

                非静态的方法,既可以访问静态变量也可以非静态的变量...

                   Java基础之说明书的制作

针对数组操作的工具类

     如何制作一个文档说明书

                        1)创建一个数组,静态初始化

                        2)创建一个工具类,ArrayTool,提供一些静态功能

                                           遍历,最值,查找

                        3)ArrayTool,每类,方法加上文档注释

                        4)打开dos控制台:

                                 找到当前路径:

                                                    javadoc-d(目录名) -author -version ArrayTool.java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值