第一章:Java程序设计概述 Java是一种跨平台,适合于分布式计算环境的面向对象编程语言。 具体来说,它具有如下特性: 简单性、面向对象、分布式、解释型、可靠、安全、平台无关、可移植、高性能、多线程、动态性等。 Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发; JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础; JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序;   第二章:Java程序设计环境 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。 2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。 3,jvm: Java Virtual Machine,java程序的编译器。 4,环境变量的配置:       JAVA_HOME=%安装路径%\Java\jdk        path=%JAVA_HOME%\bin        classpath=%JAVA_HOME%\lib(windows10系统可以不配)   第三章:Java的基本程序设计结构 数据类型: 1、八大基本数据类型:byte、short、int、long、float、double、char、boolean 2、引用数据类型: 数组、类、接口。 级别从低到高为:byte,char,short(这三个平级)-->int-->float-->long-->double 自动类型转换:从低级别到高级别,系统自动转的; 强制类型转换:什么情况下使用?把一个高级别的数赋给一个别该数的级别低的变量; 自动装箱: 将基本数据类型封装为对象类型   int-> Integer 自动拆箱: 将对象重新转化为基本数据类型    Integer --> int 运算符号: 算术运算符、赋值运算符、比较运算符、逻辑运算符。 5,语句。 顺序结构 默认 条件结构 if  switch   循环结构 do while   while  for   第四章:对象和类 1.类 -- 对一堆对象的抽像(抽出像的部分) 2.对象 -- java中万事万物皆对象 引用数据类型:类,接口,数组,对象 ==和equals String类的equals比较的是值 Object类的equals比较的是内存地址 ==基本数据类型比较的是值 ==引用数据类型比较的是地址   类变量和实例变量的区别 1.共享性:类变量被所有对象共享,实例变量为每个对象独有 2.初始化时间:类变量在类加载时分配内存,实例变量在创建对象时分配内存 3.消亡时间:类变量在程序退出时释放内存,对象不存在则实例变量就不存在 4.调用形式:类变量一般通过类名.来调用,实例变量通过对象.调用 5.声明的形式:类变量static来声明,实例变量没有static声明   类加载的时间点要早于对象创建的时间点 类加载:发生在类第一次被虚拟机调用,类会被虚拟机加载,一般类只被加载一次     1.初始化类变量     2.分配类方法的函数入口     3.执行静态块                 可以写多个且执行顺序从上往下依次执行(内部将所有静态块合成一个静态块)                 可以在静态块里调用静态方法和使用静态变量 对象创建晚于类加载的时间         声明一个对象     创建对象     通过赋值号为声明变量赋值     1.初始化实例变量     2.分配实例方法的函数入口     3.执行对象块                 可以写多个且执行顺序从上往下依次执行,对象块在构造方法之前     4.执行构造函数     每次创建一个新的对象都会重复上面的操作 类方法和实例方法的区别 1.类加载时类方法被分配入口地址,实例方法是在第一个对象创建时被分配入口地址 2.类方法一般是类名.来调用 3.类方法中不能使用this关键字,this表当前对象,类方法是在类加载时就存在而此时对象还不存在   空指针异常 -- 使用了为null的类型   JVM:内存分区:
  1. 栈区:函数入口,基本数据类型,对象的引用,变量名
  2. 堆区:通过new关键字新建的对象
  3. 方法区:代码,静态变量
  4. 常量池:常量
  gc -- 垃圾回收器 java里把没有任何应用的对象视为垃圾 为了清理内存 java虚拟机会自动进行回收 程序员可以通过System.gc()进行强制回收 当对象被释放时,将自动调用对象的finalize()方法  System.gc()只是一个提示,不会立即执行finalize(),真正调用还是JVM虚拟机   值传递:基本数据类型采用值传递             实参的值永远不发生变化 引用传递:类类型采用引用传递                 实参的内存地址不变化,但内容有可能变化   包名: 建议小写    域名倒写+项目名+功能 无包名的类可以调用有包名(默认包)的类 有包名的类不能调用无包名的类   import导入包 包名.类名(全类名)可以解决同类名的冲突问题,只能使用一次   访问修饰符:     通过访问修饰符可以进行访问权限的控制,主要用来修饰类,变量和方法 protected受保护的   封装:将属性和方法封装成一个类形成一个新的数据类型 实现了模块化和信息隐藏   JavaBean:         1.是一个java组件,主要用于数据的传输     2.类必须使用public修饰     3.所有属性都需要使用private修饰     4.每个属性都需要使用public修饰的setXxx()和getXxx()来操作属性     5.必须有一个无参构造函数 接口是一个特殊的类,也可以用来多态(面向接口编程)   继承:解决分层次的类结构         好处:1.便于建模分析                   2.代码的复用     第五章:面向对象对象三大特性:封装、继承、多态 多 态(面向对象特征之一) 多态性是指允许不同类的对象对同一消息作出响应。 发生条件:
  1. 必须有继承
  2. 发生重写
  3. 子类引用指向父类类型
上转型对象:子类引用指向父类类型         Animal animal = new Dog()
  1. 子类新增的方法会丢失
  2. 子类新增的属性也会丢失
下转型对象:         Dog dog = (Dog)animal animal instanceof Cat 判断 animal是否是Cat的实例   编译期间进行的绑定(静态绑定或者前期绑定) java在运行时动态决定实例方法的调用叫做后期绑定   封 装(面向对象特征之一):是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。 好处:将变化隔离;便于使用;提高重用性;安全性。 封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问。 private:只有本类可以访问 default:同一包类可以访问 protected:同一包类及不同包内的子包可以访问 public:任何包下都可以访问   继 承(面向对象特征之一) 好处: 1:提高了代码的复用性。 2:让类与类之间产生了关系,提供了另一个特征多态的前提。   父类的由来:其实是由多个类不断向上抽取共性内容而来的。 java只支持单继承,C++可以多继承,但java可以继承多个父接口 单继承:一个类只能有一个父类。 多继承:一个类可以有多个父类。   第六章:接口与内部类: 抽象类:用abstract关键字来修饰一个类时,该类叫做抽象类;
  1. 抽象类必须被继承。
  2. 抽象类不能被直接实例化。它只能作为其它类的超类,这一点与最终类(final类)正好相反。
抽象方法:用abstract来修饰一个方法时,该方法叫做抽象方法。
  1. 抽象方法必须被重写
  2.  抽象方法只有声明,不能有实现{}。
  3.  定义了抽象方法的类必须是抽象类。
接口(interface)就是方法定义和常量值的集合。从语法上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有方法的实现。
  1.  通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。
  2.  通过接口可以指明多个类需要实现的方法。
  3.  通过接口可以了解对象的交互界面,而不需了解对象所对应的类。
  1.接口的定义:interface 2.接口意义:方法定义和实现  分离--制定规范 3.接口的实现:implements 4.解决单继承的问题   抽象类与接口异同点
  1. 相同点:都必须通过其它类实现才能使用; 
  2. 不能直接实例化  
不同点: 
  1. 抽象类是类,其中可包含变量及(抽象)方法的定义; 
  2. 接口实质并不类,其中只包含类常量及抽象方法的定义;
  3.  类只能单一继承,接口允许多重继承 
  4. 接口中只能有public修饰符,类可以是任何修饰符 
  5. 设计模式讲:继承强调是一种的关系  is-a 接口:强调功能具有  has - a
内部类         1.父类实例         2.父类实例.子类名 变量 = 父类实例.new 子类名()         父类名.this.属性名 静态内部类和非静态内部类         内部类标识符         外围类的名字+$+内部类的名字
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄