javaSE总结
1 java的历史 1991-至今 詹姆斯-高斯林 SUN公司 ORACLE 2009年2 java的版本 javaSE java的标准桌面级开发 javaEE 企业级web开发 javaME 嵌入式开发3 jdk的版本 jdk1.0 - jdk11 每半年一个版本 每年的3月和9月4 jdk 的安装和环境配置 jdk--开发者必须安装 jre--使用者安装 java_home:jdk的安装目录 javac:%java_home%/bin; 可以在任意目录结构中,进入jdk的bin目录,方便的找出javac.exe和java.exe 5 数据类型 基本类型 byte,short,int,long,char,float,double,boolean 引用类型 类,接口,数组,枚举6 运算符 算术运算符,关系运算符,逻辑运算符, 赋值运算符,位运算7 流程语句 单分支 if 双分支 if else 多分支 if.. else if.. else switch(){case..} 8 循环语句 while(条件){ 循环体 变量更新 } do{ }while(); for(初始值;范围值;变量更新){ 循环体 }9 方法 无参无返回 无参有返回 有参无返回 有参有返回 形参:方法声明是时,形式上的参数,是一个局部变量 实参:方法调用时,传递给方法实际有值的参数 10 数组 概念:一个开辟了连续的空间的线性数据结构 特点:查询快,增删慢 可以添加任意的数据类型 数组的基本操作 增 删 改 查 长度 判断 排序 冒泡排序 插入排序,选择排序,快速排序 11 面向对象编程 OOP AOP(面向切面编程) 类:类是一类事务的模板,把很多具有相同功能的对象抽象出来,描述为一个类 对象:每一个类的具体的实例 类是对象的抽象化,对象是类的实例化 类的主要组成 成员属性,成员方法,构造方法 成员属性:修饰符 数据类型 变量名; 默认值 整型:0 浮点型:0.0 布尔型:false 引用类型:null 变量的作用域 局部变量:声明在方法中的变量,作用范围,只在本方法中 成员变量 类变量(static),对象变量 内存位置 堆: 对象变量 方法区:类变量 加载时机 创建对象的时候,对象变量初始化 类被加载的时候,类变量就初始化 份数 对象变量,每一个对象各有一个 类变量,被每一个对象所共享 成员方法 修饰符 返回值 方法名(){ } 方法重载:overload 1:同一个类 2:方法名相同 3:参数列表不同 3.1 参数个数 3.2 参数类型 3.3 参数顺序 和返回值无关 构造器 修饰符 类名(){ } 每一个类至少会有一个构造器,如果没有手动提供构造器,那么编译器会自动提供一个无参的构造器 构造器没有返回值 构造器也可以重载 public Student(){ this("张三"); } public Student(String name){ this("李四",20); } public Student(String name,int age){ } this:代表当前对象的引用 1:this可以调用成员属性 2:this可以调用成员方法 3:this可以调用构造方法 static的用法 修饰变量:代表类变量,被所有的对象共享 修饰方法:代表类方法 修饰类 :静态内部类 细节 成员方法中,既可以直接访问成员变量,也可以访问类变量 静态方法中,只可以访问类变量 成员方法既可以直接调用成员变量,也可以调用类方法 静态方法只可以调用类方法 面向的3个特点 封装,继承,多态 封装:属性私有化,提供公开的get和set方法 隐藏细节,公开接口 属性的值是随着行为的变化而变化的 修饰符 访问修饰符 private:类可见性 default:类可见,包可见性 protected:类可见,包可见,不同包的子父类 public:项目可见 非访问修饰符 static,final, synchronized,native,transient 继承:单继承,继承链 extends 顶级父类:Object 子类可以继承父类的属性和方法,私有的不能继承 修饰符 class 子类 extends 父类{ } 优点:提高了代码的复用性 缺点:高耦合,低内聚 多态 : 父类 变量名 = new 子类() 向上转型(父类的引用指向子类对象) 多态的必要原则 1:继承 2:要有方法重写 3:向上转型 方法重写 override 1:子父类之间 2:方法名,参数列表,返回值相同 super:代表父类的引用 super.成员属性 super.成员方法 super(参数); 调用父类的构造函数 java中任何一个子类的构造方法都必须调用其父类的构造方法(包括隐示调用)并且调用父类构造方法的语句必须是子类构造方法的第一条语句 抽象类:就是为了被子类继承 修饰符 abstract class 类名{ } 特点 1:可以有抽象方法 2:可以有实现方法 3:不可以创建对象 4:利用多态通过向上转型,创建子类对象接口 interface 修饰符 class 类名 implements 接口名{ } 类与类 继承关系,单继承,有继承链 类与接口 实现关系,多实现 接口和接口 继承关系,多继承 抽象类与接口的区别? 变量 抽象类有,接口没有 常量 抽象类有,接口有 public static final 成员方法 抽象类有,接口没有(jdk1.8之前没有) 抽象方法 抽象类有,接口有 public abstract 构造器 抽象类有,接口没有 final的用法 final修饰变量,表示常量,一旦被赋值,不可被修改 final修饰方法,表示这个方法不能被重写 final修饰类,表示是一个最终类,不能被继承(所有的方法不能被重写) 异常 Throwable 子类 Exception 异常 编译时异常 运行时异常 RuntimeException Error 错误 处理异常 1:捕获异常 try:尝试运行有可能会出错的代码 catch:一旦代码出错,编译器生成一个异常对象,和catch中异常做匹配,匹配成功进入catch块,后面的代码正常执行 finally:表示一定会执行,就算代码中有return,也会在return之前执行,除了虚拟机强制退出 System.exit(1); 2:抛出异常 throws:在方法声明部分,抛出一个异常类,可以一次性声明多个异常 有可能会抛出异常 throw 在方法体中,抛出一个异常对象,一定会抛出异常 3:自定义异常 1:继承Exception或者RuntimeException 2:提供一个无参的,以及有参的构造函数 public class SexException extends Exception{ public SexException(){ super(); } public SexException(String message){ super(message); } } 常用类 包装类 Byte,Short,Integer,Long,Float,Double,Boolean,Character 字符串 :String:是一个不可变的字符序列 "abcde".substring(0,2) = "ab" "abc".charAt(0) = 'a' "abc".length() = 3 "a,b,c".split(",") = ["a","b","c"] "abc".indexof("a") = 0 "abaca".replaceAll("a","*") = "*b*c*"; 字符串缓冲类 StringBuffer:可变的字符序列 同步 StringBuilder: 可变的字符序列 不同步 数学类:Math random() 0-1 之间的小数 包括0,不包括1 max(int a,int b); min(int a,int b); ceil(10.123) = 11 floor(10.123) = 10 pow(10,3) = 1000 次幂函数 日期类:java.util.Date Date date = new Date(); 获取当前系统时间 getYear()+1900 getMonth()+1 getDate() getDay() getHours(); getMinutes() getSeconds() 日期转为字符串 date.toLocalString(); 日期转换类 DateFormat 子类 SimpleDateFormat DateFormat df = ne