Java入门第一阶段---面向对象的知识

第三章
1.流程控制语句
顺序结构,先执行A再执行B                选择结构, 如果....则...                 循环结构,如果...则再继续...
任何软件和程序本质都是由    变量   选择语句  循环语句   组成
选择结构
if单选择结构    if-else 双选择结构    if -else if-else多选择结构    switch结构
java.lang包中的Math类提供了一些用于数学计算的方法
Math.random()该方法用于产生一个0-1区间的double类型的随机数,但不包括1
if 语句加{},不然容易出错
if-else双选择结构,逻辑更加严密
switch多值的时候判断   jdk1.7以后switch(里面可以是字符串了)
循环结构 (当型、直到型)
while 先判断后执行       do  while 先执行后判断
for循环     
1.执行初始化语句:i=1    2.判断i<=100    3.执行循环体    4.步进迭代:i++5.回到第二步继续判断
break 用于强行退出循环,不执行循环中剩余的语句
continue 跳出本次循环,进入下次循环
带标签的break和continue     跳转
2.方法(带名字的语句块)
方法就是一段用来完成特定功能的代码片段,类似于其它语言的函数
形式参数:在方法定义的时候写的
实参:在调用方法的时候写的
返回值:方法在执行完毕后返还给调用它的环境的数据
返回值类型:事先约定的返回值的数据类型,无返回值,必须显示指定为void
方法重载overload
重载的方法,实际是完全不同的方法,只是名称相同而已,
构成重载的条件
方法名相同,形参个数不同,形参类型不同,形参顺序不同 都可以构成重载
只有参数名不同,不构成重载
只有返回值的返回类型不同,不构成重载
3.递归
自己调用自己
递归头(什么时候结束)和递归体(什么时候调用自己)递归特别耗时耗空间

第四章
1.面向过程和面向对象都是对软件分析、设计、开发的一种思想。
面向过程:简单问题,按步骤实现,不需要协作的事务
面向对象:复杂问题,需要很多协作才能完成
对象进化论(量变引起质变)
数据无管理时代-----------------数组管理和企业部门制------------------对象和企业项目制
企业初期只有两个人            人多了,需要管理,同类型数据放一起        项目组,五脏俱全,不同类型
2.对象object或者instance(实例)和类class              实例和对象是一回事
类可以理解为对象的模板,或者类是对象的抽象,
属性(成员变量)    方法(行为特征,功能实现)
类与类之间可以相互调用
3.面向对象的内存分析
Java虚拟机的内存可以分为三个区域:栈stack、堆heap、方法区method area  方法区在堆里面
栈的特点:
方法执行的内存模型,每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)
JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实参、局部变量等)
栈属于线程私有,不能实现线程间的共享
栈的存储特性是,先进后出,后进先出
栈是由系统自动分配,速度快,栈是一个连续的内存空间
堆的特点:
堆用于存储创建好的对象和数组(数组也是对象)
JVM只有一个堆,被所有线程共享
堆是不连续的内存空间,分配灵活,速度慢
方法区(又叫静态区):
JVM只有一个方法区,被所有线程共享
方法区实际也是堆,只是用于存储类、常量相关的信息
用来存放程序中永远不变或唯一的内容。(类信息,class对象、静态变量、字符串常量等)
4.构造方法
构造器也叫做构造方法constructor,用于对象的初始化
要用new关键词调用    
构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能在构造器里使用
return返回某个值
如果我们没有定义构造器,则编译器会自动定义一个无参拿的构造函数,如果已经定义则编译器不会自动添加
构造器的方法名必须和类名一致
5.垃圾回收
垃圾回收机制,Garbage Collection     C++,没有,Java有
发现无用对象,回收无用对象占用的内存空间。
垃圾回收相关算法,1,引用计数法      2,引用可达法(根搜索算法)
分代垃圾回收机制
年轻代,年老代,持久代              JVM将堆内存划分为Eden、Survivor、Tenured/old
年轻代在Eden和Survivor          Minor GC清理年轻代     
年老代在Tenured和Old            Major GC清理年老代
持久代在方法区                       full  GC清理年轻代和年老代  成本高,对系统性能有影响
垃圾回收过程:新建对象都是在Eden层——Eden满了后,触发Minor GC,清理无用对象,复制剩下
的对象放入Survivor1中,并清理Eden——Eden再次满后,将S1不能清空的对象复制到S2,同时将Eden
中不能清理的复制到S1中,保证Eden和S1均被清空——重复多次(默认15次)还在Survivor中的对象
复制到年老区(Old层)——当old区满了后,会触发一次完整的垃圾回收full GC。
6.对象创建过程4步
分配对象空间,并将对象成员变量初始化为0或者空——执行属性值的显式初始化——执行构造方法
——返回对象的地址给相关的变量
this的本质就是“创建好的对象的地址”由于在构造方法调用前,对象已经创建,因此在构造方法中也
可以使用this代表“当前对象”    
构造方法的调用必须放第一行           this不能用于static方法中,static中也不能调用普通方法,因为static
方法存储在方法区,方法区没有对象,堆里才有对象
7.static 关键字
在类中,用static声明的成员变量为静态成员变量,也称为类变量。类变量的生命周期和类相同,在整个
应用程序执行期间都有效
static修饰的成员变量和方法,从属于类,普通变量和方法从属于对象
静态方法可以调用静态的属性,但是不可以调用非静态的属性和方法
8.静态初始化块
构造方法是对象的初始化,     静态初始化块是类的初始化
静态初始化块执行顺序,1.上溯到Object类,先执行Object的静态初始化块,再向下执行子类的静态初始化
块,直到我们的类的静态初始化块为止
构造方法顺序和上面顺序一样
9.参数传值机制
Java中,方法中所有参数都是“值传递”,也就是“传递的是值的副本”因此,复印件改变不会影响原件
基本数据类型参数的传值
传递的是值的副本,副本改变不影响原件
引用类型参数的传值
传递的是值的副本,但是引用类型指的是”对象的地址“,因此,副本和原参数都指向同一个地址,改变
副本指向地址对象的值,也就意味着原参数指向的对象的值发生了变化
记得补70开始的代码
10.包机制是Java中管理类的重要手段。开发中,我们会遇到大量同名的类,通过包,我们容易解决类重名
的问题,也可以实现对类的有效管理。包对于类,相当于文件夹对文件的作用。
通常是类的第一句话非注释性语句。
包名:和域名倒着写,再加上模块名,便于内部管理
JDK中的主要包 
java.lang  核心包,无需导入
java.awt   画窗口包,游戏窗口等
java.net    网络包    
java.io      io流包
java.util    常用工具包
11.import
导入所有包,会降低编译速度,不会影响运行速度,影响不大
导入多个包里有同名类,直接用原始方法,直接说明是哪个包的,这是极端情况
12.静态导入
静态导入,jdk1.5以后的版本加入的功能
13.面向对象的三大特征:继承、封装、多态。
继承的使用要点
父类也称作超类,基类,派生类
JAVA中只有单继承,没有像C++那样的多继承,多继承会引起混乱,JAVA中只有一个直接父类
JAVA的接口可以多继承
子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法),但不见得可以直接访问(比如父类私有属性和方法)
如果定义一个类,没有调用extends,则他的父类是:java. lang. Object
ctrl +t,可以查看类的继承结构
instance of 是二元运算符,左边是对象,右边是类,当对象是右边类或者子类所创建对象时,返回TRUE,否则返回FALSE
14.方法的重写/覆盖override
子类通过重写父类的方法,可以用自身的行为替换父类的行为
重写三要点
方法名,参数列表相同
返回值类型和声明异常类型,子类≤父类
访问权限子类≥父类
object类是所有JAVA类的根基类,也意味着所有的JAVA对象都拥有object类的属性和方法
toString方法
==代表比较双方是否相同,如果是基本类型,则表示值相等,如果是引用类型,则表示地址相等即是同一个对象
equal,提供定义“对象内容相等”的逻辑
15.super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性
16.super()永远位于构造方法的第一句,不管写不写都存在,有个追溯的过程,一直追溯到object类
17.封装的特点:提高代码安全性       提高代码的复用性     “高内聚”封装细节,便于修改内部代码   提高可维护性
低耦合  简化外部的使用,便于调用者的使用,便于扩展和协作
public  权限最大   整个项目都可以访问
protected  同一个包内以及其他包内的子类可以访问
dedault   同一个包内可以访问
private  只能自己的类里可以访问
对于类的属性一般都用private
提供相应的get/set方法来访问相关属性,这些方法通常用public修饰的,以提供对属性的赋值和读取操
作,注意:Boolean类型变量的get方法是is开头
一些只用于辅助本类的方法可以用private修饰,希望其他类调用的方法用public修饰
18.多态
多态指的是同一个方法调用,由于对象不同可能会有不同的行为。现实生活中,同一个方法,具体实现会
完全不同
多态是方法的多态,不是属性的多态
多态存在的3个必要条件:继承、方法重写、父类引用指向子类对象
父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了
19.final修饰变量,变量不可以被改变,修饰方法,方法不可以被重写,但是可以重载,修饰类,类不可
被继承


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值