Switch 的表达式可以为byte,short,int,char,JDK7之后的版本可以为string。
带标签的语句:可以直接跳出多层循环。
如:
loop1 : for( int i=0;i<100;i++){
loop2 : for (int j=0;j<i;j++){
if (条件){
break loop1; // or break loop2;
}
}
}
Static关键字的特点:(可以修饰成员变量,也可以修饰成员方法)
1. 随着类的加载而加载
2. 优先于对象存在
3. 被类的所有对象共享
4. 可以通过类名调用,也可以通过对象名调用(一般用类名调用)
5. 静态方法只能访问静态成员变量和静态成员方法。
静态变量和成员变量的区别:
1. 所属不同
静态变量属于类,所以也称为类变量
成员变量属于对象,所以也称为实例变量(对象变量)
2. 内存中的位置不同
静态变量存储于方法区的静态区
成员变量存储于堆内存
3. 内存出现时间不同
静态变量随着类加载而加载,随着类消失而消失
成员变量随着对象创建而创建,随着对象消失而消失
4. 调用不同
静态变量可以通过类直接调用,也可以通过对象调用
成员变量只能通过对象调用。
将一个类的构造方法私有(private),其余成员和方法全部设为static,则类中的成员变量和成员方法将不能够通过创建对象来访问,只能通过类名去访问成员和方法。
Java.lang包不需要import,其他的包都需要import
代码块:
静态代码块(只执行一次),构造代码块(每次调用构造方法都执行),构造方法。
继承的优点:
提高了代码的复用性
提高了代码的维护性
让类与类产生了关系,是多态的前提。
缺点:高耦合性。
this和super的区别:
this代表本类对应的引用
super代表父类存储空间标识(父类的引用,可以操作父类的成员)
使用:
1. 调用成员变量
a) this.成员变量
b) super.成员变量
2. 调用构造方法
a) this(…)
b) super(…)
3. 调用成员方法
a) this.成员方法
b) super.成员方法
方法重写(override,子类继承父类方法并进行重写)
方法重载(overload,同一个类中,方法名相同参数不同的方法)
Final可修饰类、变量、方法
修饰变量时,可修饰基本类型和引用类型。
修饰基本类型:变量值不能改变。
修饰引用类型:地址值不能改变。
多态:
父类的引用指向子类对象。
Father f = new Son();
子类继承父类的方法,所以f调用父类方法时,实际调用的是子类重写的父类方法。
多态的缺点:
不能调用子类中特有的方法。(解决方法:对象向下转型)
Father f = new Son(); (向上转型)(f调用成员变量时调用的是父类成员,调用
成员方法时调用的是子类的方法(只能是重写的父类的方法,特有的额方法不行)。)
Son s = (Son) f;(向下转型)(s调用成员变量时,调用的是子类成员,可以调用子类的所有方法(包括重写的父类的方法和子类特有的方法。))
多态中的成员访问特点:
1. 成员变量
编译看左边,运行看左边
2. 构造方法
创建子类对象时,访问的是父类的构造方法,对父类的数据进行初始化。
3. 成员方法
编译看左边(只能调用子类重写的父类方法),运行看右边(调用子类方法)。
抽象类有构造方法,但是不能实例化。该构造方法的作用是用于子类访问父类数据的初始化。
抽象类可以通过多态实例化子类(父类引用指向子类对象)(对象转型)。
抽象类的成员特点:
1. 成员变量:可以是变量,也可以是常量
2. 构造方法:有,也可带参
3. 成员方法:可以是抽象方法,也可以是非抽象方法
多态的分类:
1. 具体类多态
2. 抽象类多态(常用)
3. 接口多态(最常用)
接口的特点:
1. 成员变量:接口中的变量默认是static且final。
2. 构造方法:无,没有构造方法。
3. 成员方法:只能是抽象方法。(默认为public且abstract)
类与类的关系:继承关系,只能是单继承,可以多层继承。
类与接口:实现关系,可以同时实现多个接口。
接口与接口:继承关系,可以单继承,也可以多继承。
抽象类与接口的区别:
1. 成员区别
a) 抽象类:
i. 成员变量:
ii. 构造方法:
iii. 成员方法:
b) 接口:
i. 成员变量:
ii. 成员方法:
2. 关系区别
a) 类与类
b) 类与接口
c) 接口与接口
3. 设计理念区别
a) 抽象类
b) 接口
参数传递时,Java 中只有值传递,但分两种情况,如果是基本类型(如int,double等基本数据类型),传递的是数据值,如果是引用类型(如类,接口,数组),传递的是地址值。
基本类型:形式参数的改变不影响实际参数。(因为传递的只是数据值。)
引用类型:形式参数的改变直接影响实际参数。(因为传递的是地址,所以所指向的内容会随时改变。)
UML语言
面向对象思想
类与对象及其使用
对象的内存图
成员变量和局部变量的区别
匿名对象
封装
this关键字
构造方法
static关键字
面向过程的思想:
需求分析(要做什么)----概要设计(要怎么做)----详细设计(代码实现,具体实现时要一步一步去实现,具体的每一步都要我们去实现和操作,这些步骤按照一定的顺序协调操作,完成需求。)
当需求较单一,需求变更较少时,并无明显缺点。
缺点:当需求较复杂,维护较频繁,功能较多,需求变化较多时,维护起来会很难。
面向对象:
面向对象的开发:就是不断的创建对象、使用对象、指挥对象做事情。
面向对象的设计:就是管理和维护对象之间的关系。
面向对象的特征:封装(encapsulation)、继承(inheritance)、多态(polymorphism)。
封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式。
Private修饰成员变量,外部不能访问,只能通过成员方法访问
对象是类的具体实现,是一个类的具体实例。
Java中内存分为3个区:栈、堆、方法区(类描述区,静态区)。
成员变量和局部变量的区别:
在类中位置不同:
成员变量:在类中方法外。
局部变量:方法内或者方法声明上
在内存中的位置不同:
成员变量:在堆内存
局部变量:在栈内存
生命周期不同:
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
初始化值不同:
成员变量:有默认初始化值
局部变量:没有默认初始化值,必须定义、赋值,然后才能使用。
注意事项:局部变量名字可以和成员变量名字一样,在方法中使用的时候采用的是就近原则。
匿名对象(new classname()):
调用方法,只适用于只调用一次的时候,不适合于多次调用。匿名对象调用完毕即消失(可被回收)。