JAVA基础整理(一)

一:面向对象与面向过程

  笼统说,一个流程简单一个复杂,面向过程比如开车上路,能够简单罗列出几个动做:上车,系安全带,点火,出发;向过程比如造出一辆汽车,确定不能从焊铁作起,第一步是收集所须要的各个部分(对象),经过必定的规律与逻辑去操做对象完成最终的结果。java

  对象是实际的东西,类是对象的模板,对对象的抽象,对象就按照类所规定的模板去造成实际的对象。算法

面向对象三大原则:

封装:

  由于咱们不想向外部暴露咱们的数据,由于若是咱们的数据对外暴露的话,咱们的数据若是在某个被他人调用的地方被修改咱们是不可知的,因此有个封装。你按我对外提供的接口进行操做,保证你不会对我对象内部的结构进行破坏。数组

继承与多态:

多态,就是多种形态。多态大体有两种状况:安全

​ 第一,假如,一个动物类,动物有一个run方法,咱们用这个类描述动物的运动,而后有个猫,处于面向对象的相关联思想,猫继承自动物,而后猫不满意这个方法,重写了一个,猫的run的时候有一个叫的动做,不一样对象,同一动做,最终执行的效果不一样。ide

​ 第二:有一个猫,这个猫的run是有参数的,调用了猫的run方法,猫开始跑,每小时20迈,而后咱们再调用run方法,传了一个鱼给猫,猫吃了鱼就更有动力,而后每小时30迈开始跑。同一个对象,同一个行为,传递的消息不一样,最终执行的效果不一样。函数

  继承与多态要一块儿理解,继承是基础,多态是扩展。由于对象之间会有重复的代码,因此咱们有了继承,就像现实生活中子女继承父母的资源同样,但这种方法只能解决有关联对象间的代码重复问题。若是对象之间无关,解决代码重复,咱们须要依赖AOP。线程

多态是在继承的基础上实现的,多态实现的三个必要条件:
继承
方法重写(override)
父类引用指向子类对象,例如:Human human = new Man() ,new Man() 是一个子类对象,用一个父类引用human来指向子类对象。code

二:内存管理分析(初步)

栈内存,堆内存,方法区(隶属于堆里,可是有必要单独拉出来谈)对象

栈内存:

基本数据类型 ,结构大体为:变量名 :变量值 这样的表格形式继承

栈是线程私有的,连续的,不一样线程之间没法共享数据。

速度快

堆内存:

堆是线程间共享的,区域比栈大,速度慢,不连续的

存储对象(在栈里对象存储的是一个地址,例如 张三:0X0001)对象张三具体的信息要去0X0001这块内存块里找。

方法区:

存储不变的东西:

类加载信息,静态变量,字符串常量。也就是不依赖具体对象的信息。

三:垃圾回收算法入门(引用计数,引用可达,通用分代垃圾回收)这部分深刻要去看一遍《深刻理解java虚拟机》

引用计数法:

  每一个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时能够回收。此方法简单,没法解决对象相互循环引用 的问题。(例如,)

引用可达:

  从GC Roots开始向下搜索,搜索所走过的路径称为引用链。当一个对象到GC Roots没有任何引用链相连时,则证实此对象是不可用的。不可达对象。

通用分代垃圾回收:(基础时只须要知道有这几种方法便可)

四:内存分析静态变量,静态方法,静态初始化块

  静态变量与方法不须要具体的对象就能够调用(用类名调用),静态初始化块new后就会调用了。

五:重写Override返回值类型问题

方法的重写(override)要遵循两同两小一大的原则:(子类方法相对于父类方法)

1)两同
1.1)方法名相同
1.2)方法参数列表相同
2)两小
2.1)返回类型若为引用类型必须小于或等于父类的,若为基本类型或者void则必须相同
2.2)抛出的异常必须小于等于父类的
3)一大
子类方法的访问权限要大于等于父类的

六:javabean规则(一种类的规范)

这个Java类必须具备一个无参的构造函数
属性必须私有化。
私有化的属性必须经过public类型的方法暴露给其它程序,而且方法的命名也必须遵照必定的命名规范。

七:数组的定义,foreach的使用

for(int val:a)
{

System.out.println(val);

}

相关文章
相关标签/搜索