一 初识java
1.java之父:James Gosling博士
2.Java语言特性
3.一次编译,到处运行
4.DK、JRE、JVM之间的关系?
1) JDK(Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。
2)JRE(Java Runtime Environment):Java运行时环境,包含了JVM,Java基础类库。是使用Java语言编写程序运行的所需环境。
3)JVM:Java虚拟机,运行Java代码
5.注释:单行,多行,文档
二 数据类型与变量
1.数据类型
2.变量:取值范围取决于范围
3.常量:final
三 运算符
各运算符特点
1. &
2.|
3.按位异或 ^
4.左移 <<: 最左侧位不要了, 最右侧补 0
右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)
无符号右移 >>>: 最右侧位不要了, 最左侧补 0
四 逻辑控制
1.选择
1)switch:float,double,boolean,long不能作为switch的参数数据类型
2)if:条件必须为boolean类型
2.循环
1)for
2)do while
3.输入输出
循环输入/多组输入
五 方法的使用
1.定义 :返回值 方法名 形式参数列表{方法体}
2.传参
1)array = new int[10];
2)array[1];
3.返回值
4.重载:方法的参数列表不同(方法个数,顺序,数据类型),返回值不影响方法重载
5.重写和重载区别
6.递归:终止条件,调用自己本身,找到递推公式
六 数组的定义与使用
1.定义
2.内存布局:JVM5块内存:虚拟机栈,本地方法栈,方法区,堆,程序计数器
3.数组在内存中的布局
4.数组的访问:长度,下标
5.常见错误:数组越界,空指针异常
6.作为参数传递和作为返回值
7.常见方法:排序,拷贝。。。
8.二维数组:特殊的一维数组
七 类和对象
1.类:描述一个对象,包含属性/成员变量,成员方法/方法,分为普通的和静态的,普通的需要通过对象的引用访问,静态的需要通过类名来访问
表示:class Person{属性 方法}
2.静态的是类的
3.对象:通过new关键字进行实例化,可以实例化多个,里面有定义好的成员变量,可通过对象的引用访问成员变量
4.this:当前对象的引用,可通过this访问自己的成员变量,成员方法,构造方法,谁调用某个方法,谁就是this
5,this和super的区别
6,构造方法
1)方法名与类名一样,无返回值,可以有多个,可发生重载
2)在实例化对象时被引用
3)若一个类没有提供任何构造方法,默认有一个不带参数的构造方法,若提供任一,则不再提供
4)this调用其他构造方法时必须在第一行
5)默认初始化:引用类型默认为null,boolean为false
7.封装:隐藏类内部实现细节,通过公开方法操纵这些数据。实现上采用private修饰成员变量或方法(提供get和set方法实现),体系了类的安全性
8.包:组织类
9.static关键字:不依赖对象,通过类名访问,只有一份,all类共享
10.代码块:静态,实例,局部,构造(执行顺序),静态的只执行一次
11.内部类:静态,实例,匿名
1)对应内部类中的对象获取
2)内部类中访问外部类的成员
八 继承和多态
1.继承:对共性的抽取,可实现代码复用
1)成员访问:同名的就近原则,通过super关键字指定访问父类的
2)super访问父类的成员变量,成员方法,构造方法
3)子类继承父类后,要帮助父类的成员进行初始化:子类中显示调用父类构造方法
4)执行顺序:父类静态,子类静态,父类的实例,构造,子类的实例,构造
5)密封类:final修饰,不可以被继承
6)不支持多继承,可通过接口实现
7)组合表示have,继承是is
2.多态:是一种思想,代码层次实现,父类引用的子类对象不一样时,调用被子类重写的方法,所表现的行为不同
1)发生条件:a.向上转型:父类引用引用子类对象
b.重写:方法名相同,参数列表相同(个数,数据类型,顺序),返回值相同
ps:被private,static,final修饰的不能被重写
子类的访问权限>父类
c.通过父类引用来调用这个被重写的方法,此时发生动态绑定
2)向下转型,不安全 Dog dog = aniaml;不是所有动物都是狗,要强制类型转换
3)静态绑定:在编译时进行的,eg:重载
九 抽象类和接口
1.抽象类
1)不能具体的表达某个类/方法,包含抽象方法后这个类也被abstract修饰
2)不能被实例化,存在构造方法,因为可以被子类继承后调用这个构造方法初始化抽象抽象类中的成员
3)只能被继承,被继承后要重写抽象方法,除非该子类是抽象类
2.接口:被interface修饰,标准行为
1)不能被实例化
2)类和接口关系implements
3)一旦实现某个接口,就要重写all成员方法
4)成员变量默认为public static final,方法为public abstract
5)接口间用extends,相当于扩展功能
6)抽象类和接口都可以发生向上转型
7)重要接口:Comparable(对类侵入性更强),Compartor(更灵活),Clomable(深浅拷贝)
3.Object类:all类的父类,包含重要方法
1)equals默认比较地址,返回true或false,比较大小要重写
4.抽象类与接口的区别
十 String 类
1.内存表现形式
2.常用方法:length(),isEmpty(),charAt()。。。
3.StringBuffer和StringBuilter区别
StringBuilter是线程安全的,但可能有效率问题,频发加锁和释放锁会耗费系统资源
十一 认识异常
1,程序抛出的
1)可以自己处理
2)throws声明异常
3)throw抛出异常
4)try catch处理异常,final一定会执行,catch会捕获具体的异常
2,定义异常:继承Exception(默认为受查异常)或RuntimeException(默认为非受查异常)