day05-08

来源:互联网 发布:一键海淘 知乎 编辑:程序博客网 时间:2024/06/06 01:42
数组
    存储同种类型多个数据的容器
格式
   int arr[]/int[] arr
初始化
  动态初始化 自定义数组长度的,由系统分配初始化值  int[] arr = new int[3];
  静态初始化 自定义初始化值,由系统分配长度    int[] arr = new int[]{1,2,3};
内存分布
 栈: 局部变量  
 堆: 成员变量
常见小问题
    越界ArrayIndexOutOfBoundsException:数组越界异常,访问了不存在的索引。
空指针 NullPointerException:空指针异常 数组已经不在堆内存了,还用数组名去访问元素。
基本操作:遍历,长度,最值,反转,查表法,元素查找(第一次出现的索引),排序和二分查找(数组高级部分讲) 
二维数组
        多个一维数组
格式:int[][] arr=new int[m数组个数][元素个数];
int[][] arr={{},{},{},...};
基本操作:遍历,
参数传递 
        基本数据:形式参数的改变对实际参数没有影响
   引用数据:形式参数的改变对实际参数有直接影响
面向过程:研究步骤和过程
面向对象:研究对象
特点:
   一种更符合我们思想习惯的思想
让复杂的事情简单化
从执行者变成指挥者
特征:封装 继承 多态
学习编程语言的目的:模拟现实世界的事物,实现信息化
成员变量:属性
成员方法:行为
学生/手机类的定义的创建及使用
          //创建 赋值 输出 调用
封装和private的应用:
   隐藏对象的属性和实现的细节,仅对外提供公共访问方式
类和对象的概念
类:是一组相关的属性和行为的集合 学生
对象:是该类事物的具体体现 班长
成员变量和局部变量的区别
类中位置
成员变量:在类中方法外
局部变量:在方法定义中或者方法声明上
内存位置
成员变量:在堆内存
局部变量:在栈内存
生命周期
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
初始化值
成员变量:有默认初始化值
局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
private特点
一个权限修饰符
可以修饰成员变量和成员方法
被其修饰的成员只能在本类中被访问
this: 代表的是本类对象一个引用,可以把其理解为就是本类的一个对象
谁调用我,方法中的this,就代表谁
why:当局部变量和成员变量相同,使用this关键字,局部变量不能隐藏成员变量
构造方法特点:
方法名和类名相同  //class Student/Student(main)
没有返回值类型,连void也没有  public Student
没有具体的返回值
           public Student()
//show显示所有的成员变量的值
public void show(){System.out.println(name+"-"+age);}   
   创建对象使用new关键字 , 需要借助于构造方法//s.show();
构造方法的作用:
给类的成员变量赋值,完成类的初始化
static 关键字
特点:
随着类的加载而加载
优先于对象存在
被类的所有的对象所共享
可以通过类名和对象名访问; 推荐使用类名访问
注意事项:
在static修饰的方法中没有this关键字
静态只能访问静态,非静态可以访问静态的也可以访问非静态的
帮助文档
    在java开发中,往往需要用到别人写的类或是自己写的类被别人拿去用。
    而使用类的过程中,类中的方法对使用者而言并不完全透明,这个时候帮助文档可以让我们清楚的了解这个类中的方法该如何调用。
javadoc -d 目录名 [-author] [-version] 类名    (中括号内可不写,若要突显作者和版本号可写)
    比如:javadoc -d helpdoc Demo.java
    步骤:


       ①、打开DOS窗口;


       ②、定位到到该类的源文件所在文件夹;


       ③、输入命令:javadoc -d c:\help -author -version ComputerUtil.Java


           说明:-d:其后空一格,用来指定生成的帮助文档存放的位置;


                       -author:用来指定生成的帮助文档必须显示该类的作者,如果没有这一命令则生成的帮助文档将不会显示作者;


                       -version:用来指定生成的帮助文档必须显示该类的版本,如果没有这一命令则生成的帮助文档将不会显示版本;


       ④、点击回车键。
随机数 获取1~100之间的随机数: int result = (int)(Math.random() * 100) + 1 ;
代码块
    在java语言中使用{}括起来的内容就是代码块 //public Student{private int age;.....}
分类: 局部,构造,静态,同步代码块(多线程讲解)
局部代码块
位置: 在局部位置(在方法定义中)
作用: 限定变量的生命周期(作用域),提早释放内存,提供内存的利用率
构造代码块:       (构造方法//public开头 (分为无参,带参))
位置: 在成员位置(在类中方法外)
特点: 每创建一次对象,都需要调用一次.并且优先于构造方法执行
作用: 我们可以把多个构造方法都需要执行的代码,放在构造代码块中,这样就提高了代码的复用性
静态代码块:    //static
位置: 在成员位置(在类中方法外) , 并且前面需要添加一个 *static* 关键字
特点: 随着类的加载而执行,只执行一次,优先于构造代码块执行,
作用: 完成类的初始化工作
代码块的编写顺序:
       code
静态代码块
构造代码块
构造方法/函数(无参,带参)
   给对象进行初始化
该函数的名称和所在类的名称相同。不需要定义返回值类型。该函数没有具体的返回值。
codedemo
局部代码块(创建一个数据类型并输出)
创建对象(并调用构造代码块构造方法)
输出到控制台
   局部代码块
静态代码块
构造代码块
(构造方法)无参
构造代码块(每创建对象都会被调用)
带参
继承
    多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。
  //比如老师和学生有相同的属性和行为 年龄 姓名 吃饭 睡觉等。可以提取一个共性人,老师和同学继承即可。
    格式 //class Student extends Person{}
好处:提高代码的复用性和维护性,让类与类产生了关系,是多态的前提
    弊端;类的耦合性增强了。
开发的原则:高内聚,低耦合。
耦合:类与类的关系
内聚:就是自己完成某件事情的能力
特点:不支持多继承 某些支持多继承的语言 格式 class 子类 extends 父类1,父类2...{}
注意事项:
子类只能继承父类中非私有的成员
子类不能继承父类的构造方法,但是可以通过super关键字访问父类的构造方法
不要为了某一些功能去使用继承 继承体现的是一种"is a"的关系
继承中的成员访问问题之成员变量:
a: 子类中的成员变量和父类中的成员变量名称不一致的情况
b: 子类中的成员变量和父类中的成员变量名称一致的情况
查找顺序: 在子类的局部变量,成员变量。父类的成员变量中找,找不到报错
this和super的区别和应用  this:本类 super:父类
    this : 代表的是本类对象的一个引用,可以理解就是本类的一个对象. 谁调用我方法中的 this 就代表谁
super: 父类存储空间的一个标示,可以理解为就是父类的一个对象
格式:
成员变量
this.变量名
super.变量名
构造方法
this(...)
super(...)
成员方法
this.方法名(...)
super.方法名(...)
    继承中构造方法的关系:
        子类在初始化的时候,默认都需要调用父类无参的构造方法,对父类数据进行初始化
(因为子类会继承父类中的数据,可能还会使用父类的数据。
所以,子类初始化之前,一定要先完成父类数据的初始化。)
所有的构造方法的第一条语句默认都是super() 
Object: 是继承体现的顶层父类,所有的类都是直接的或者间接的继承自该类
方法重写和方法重载
        Override: 方法重写: 在子类中出现了和父类一模一样的方法(方法名 , 参数列表 , 返回值类型)
   Overload: 方法重载:在同一个类中允许同时存在一个以上的同名方法,只要它们的参数列表不同,与返回值类型无关
作用:
当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法。
这样,即沿袭了父类的功能,又定义了子类特有的内容。
(手机新类可以添加除call 之外的发短信)
        注意事项
a:父类中私有方法不能被重写
因为父类私有方法子类根本就无法继承
b:子类重写父类方法时,访问权限不能更低
最好就一致
c:父类静态方法,子类也必须通过静态方法进行重写
final关键字
        由于继承中有一个方法重写的现象,而有时候我们不想让子类去重写父类的方法.对这种情况java就提供了一个关键字: final
final修饰特点
修饰类: 被修饰类不能被继承
修饰方法: 被修饰的方法不能被重写
修饰变量: 被修饰的变量不能被重新赋值,因为这个量其实是一个常量

final 修饰基本数据类型,指的是值不能被再次改变
   final 修饰引用数据类型,指的是地址值不能被再次改变
0 0
原创粉丝点击