首页 > 代码库 > 第二周
第二周
重点记忆
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修饰变量,就成常量;修饰类,类就是终态类,不可继承;修饰方法,方法就不可重写。