首页 > 代码库 > 第二周

第二周

重点记忆

JAVA变量的分类

(1)按被声明的位置分类划分

a、局部变量:方法或语句块内定义的变量

b、成员变量:方法外部、类的内部定义的变量

注意:类的外面(与类对应的大括号外面)不能有变量的声明

(2)按所属数据类型分

a、基本数据类型变量

b、引用数据类型变量

5、局部变量和成员变量

(1)局部变量:方法体内部声明的变量(包括形参)

注:方法体内部指与方法对应的大括号内部

(2)成员变量:在方法体外,类体类声明的变量

一周概述

1、类、对象、包

面向对象:围绕着问题域中的对象来设计;面对过程:结构化编程,面对这要解决的问题来设计

 

是具有相同属性和行为的一组对象的集合,使用类可以添加自定义的数据类型,编写类来描述每个对象的属性和行为

类是模板,对象才真正具体存在的

属性==成员变量,可以通过对象来操作

类是对象的抽象,抽象的是共同的特征(属性),

对象是类的实例化,实例化的是行为(方法)

类调用的操作分两种情况:

  访问属性:对象名称.属性名=值;

  访问方法:对象名称.方法();

用关键字new创建新对象。

 

基础数据类型与引用数据类型

基础数据类型装的是具体的值,引用数据类型装的是new出来的对象的地址

引用数据类型(数组、对象、接口)指向对象地址(堆区)

                  Emp e (引用变量,装的是内存地址) =   new  Emp()(类名);

对象无指向,无引用,GC自动回收

 

this关键字

代表当前成员变量,当前类的对象的引用

无形参,无重名,编译器自动添加this,形参与成员变量重名,必须使用this

 

import 包名.类名(导包规则)

java中每个类属于一个包,它提供一个组织类的机制,为包中的类提供一个命名空间

不同包的类引入必须导包,同包下默认直接使用

 

2、对象的行为

 

在Java中,参数包括形参实参。形参是定义方法所需变量,实参是调用方法所传递具体的值。

当实际参数传递给形式参数时,实际参数的数据被复制给形式参数。在编程中,在方法调用之间复制数据的过程称为按值调用(不管传递给方法的实参是什么类型,相关的形参都会得到一份该数据的copy)

基本数据类型中数据调用,按值传递,copy值

引用数据类型中调用地址,指向同一对象,对象的属性发生改变

方法被调用时,程序流程被跳转到调用的方法。所有的方法调用都维护在调用栈的结构中。当前调用的方法位于调用栈的顶部,main()方法位于栈的底部,被第一个调用,有JVM调用。

方法调用的执行有三种情况:

  a、方法返回一个值。由return返回与定义的类型相同的基本类型或引用类型。

  b、方法不返回一个值。返回值声明为void,方法体中没return。

  c、抛出一个异常。

java中没有声明为static的方法只能在类的实例中调用。

构造方法与重载

构造方法作用:对属性进行初始化

            用法:创建对象是默认调用构造方法

            特点:特殊方法,在类创建一个实例时被调用;初始化一个实例,使其成为一个有效的状态;构造器的名称必须与类名相同;不能声明返回值,也不能返回void

构造方法中this的使用

this.***()属性  ,this.***方法   代表每个对象本身的this引用(this在本来中非静态的方法中直接调用,掉边这个行为的对象本身);

this()代表调用一个类中的其他构造器,只能放在构造方法的第一句(代表调用一个无参构造)

 

在一个类中,方法名相同,参数类型,顺序,个数不同就称为重载overload

相同的行为,不同的需求实现是不一样的,所以使用重载

 

3、数组

数组:同类型,同性质的变量集合(内存中一块连续的元素集合),缺点:一旦创建就无法改变

可以存储多个同类型基础数据变量或对象(引用变量)地址

声明与语法:数据类型[数组]  数组变量名 = new 数组类型[数组长度];(存于栈中)

访问数组:数组变量名【下标】;可加”=“对下标进行赋值

创建时【】代表数组长度,调用时【】代表下标

数组在java中是对象,length是数组的属性

引用数组:操作引用数组,每个对象都将被创建

数组复制:利用数组是对象的特点进行操作,使用System类中的arraycopy()方法

               arraycopy方法的签名:第一位代表原数组;第二位代表原数组的起始位置;第三位代表新数组;第四位代表新数组的起始位置,第五位代表copy的长度(起始位置改变,长度也随之改变)

 

4、继承

定义:扩展一个已有类,继承该类的属性和行为,来创建一个新的类,这种方法称为继承

已有的类:父类                     新建的类:子类

使用关键字extends声明,java中只有单继承,类只能有一个父类

类与类的关系有组合(has-a)和继承(is-a)。

父类对象加上子类独有的特征组成一个完整的子类,在子类中实现不同之处,相同的属性和行为已经存在于父类

继承的优点

  a、代码的可重复率;

  b、父类的属性和行为可以用于子类;

  c、子类可以拓展父类的属性和行为;

  d、设计应用程序变得更加简单。

所有类的根类是Object类,它是所有java类的父类

关键字final是可选修饰符,final修饰变量,就成常量;修饰类,类就是终态类,不可继承;修饰方法,方法就不可重写。

重写是在子类中声明与父类相同的方法,继承父类,改变父类方法。构造方法不能被子类重写。

子类重写父类的规则:

  a、子类方法返回值类型、方法名、参数列表必须与父类相同;

  b、访问修饰符必须不小于父类中的访问修饰符;

  c、子类中重写的异常不能抛出比父类更多的异常。

重写(override)--子类中的方法与父类中的方法相同(参数列表相同);

重载(overload)--一个类中的一个方法与另一个方法相同(参数列表不同)。

关键字super用于调用父类的构造器,并且super()必须是构造器的第一条语句。如果构造器没有显示地使用super关键字,那么编译器会自动添加一个无参数的super()来调用父类的构造器。如果父类没有无参数的构造器,调用空括号super()不会通过编译。因此子类构造器需要显示地调用父类构造器,并将恰当的实际参数传递给父类的构造器。

在子类的要检测的方法前加“@override”,可以强制检测当前方法是否重写父类方法。

关键字super,代表这个类对应的父类对象,用于子类非静态方法。super.***或super.***()代表每个类中指向父类对象部分的引用;super()代表调用父类中指定的构造器。

关键字final是可选修饰符,final修饰变量,就成常量;修饰类,类就是终态类,不可继承;修饰方法,方法就不可重写。