java基础知识(上)

第一章: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=%安装路径%Javajdk
       path=%JAVA_HOME%in
       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.属性名
静态内部类和非静态内部类
       
内部类标识符
        外围类的名字+$+内部类的名字
原文地址:https://www.cnblogs.com/pengao/p/10849163.html