Java基础-巩固-比较遗忘的知识点
2017-01-14 14:08
190 查看
有了好的坚实的基础,才能盖好整个大楼;
人就是这样 越是没有实力越爱说大话 世界上只有没有实力的人 才整天希望别人赞赏 –卡卡西
栈 存储 局部变量
堆 存储 new 的对象
方法区 本地方法区和寄存器(供cpu使用)
格式
int [][] arr= new arr[m]
m表示这个二维数据有多少个一维数据
n表示这个元素里 有多少个元素
举例
int[][] arr = new int[3][2];
这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2]
每个一维数组有2个元素,可以通过arr[m]
来获取
表示获取第m+1个一维数组的第n+1个元素
特点:
- 更符合我们思想习惯的思想
- 将复杂事情简单化
- 将我们执行者变为指挥者
那么,我们就针对面向对象思想举几个例子吧。
1.买电脑:
面向过程:我要了解电脑–了解我自己的需求–找对应的参数信息–去中关村买电脑–讨价还价–买回电脑
面向对象:我知道我要买电脑 – 计算机老师去给我买 – 老师就买回来了
2.洗衣服:
面向过程:把衣服脱下–找一个盆–放点洗衣粉–加点水–把衣服扔进去–搓一搓–清洗衣服–拧干–晾起来
面向对象:把衣服脱下–打开全自动洗衣机–扔进去–一键即可–晾起来
列举了上面两个例子,我们可以看出,运用面向对象的思想可以很方便的解决我们的问题,同时我们也可以把面向对象思想的使用规则做以总结,让我们更符合面向对象思想
- A.首先分析有哪些类
- B.分析哪些类有什么功能
- C.最后分析类与类之间的关系
练习:把大象装进冰箱。
- 类与对象的关系
2.类:是一组相关的属性和行为的集合
属性 事物的基本描述
行为 事物的功能
对象 类的具体实现
3.成员变量和局部变量的区别
在类中的位置不同
成员变量——类中方法外
局部变量——方法内或者方法声明上
在内存中的位置不同
成员变量——堆内存
局部变量——栈内存
生命周期不同
成员变量——随着对象的存在而存在,随着对象的消失而消失
局部变量——随着方法的调用而存在,随着方法的调用完毕而消失
4.封装(Encapsulation),继承,多态 (三大属性)
封装的概述:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:隐藏实现细节,提供公共的访问方式
提高了代码的复用性
提高安全性
原则:
将不需要对外提供的内容都隐藏起来
把属性隐藏,提供公共方法对其访问
5.抽象类与接口的区别
成员区别
抽象类
成员变量 可以常量 也可以是变量
构造方法 有
成员方法:可抽象 可非抽象
-接口
-只能是常量
-只可以抽象
设计理念的区别
- 抽象类
被继承体现是“is a ”的关系
抽象类中定义是该继承体系的共性功能
-接口
-被实现的是“is a”的关系
-接口中定义是该继承体系扩展功能
我们来举例说明:
- 猫是猫,狗是狗,猫和狗都是动物。
- 水在不同环境下的状态不同(液体,固体,气态)。
那么使用多态的前提是什么呢?
要有继承关系。
有方法的重写。
3.要有父类引用指向子类对象。
输出结果:
多态的好处和弊端:
提高了代码的维护性(继承保证)
提高了代码的扩展性(由多态保证)
坏处
不能使用子类的特有功能。 (多态中的转型 可以访问)
- Fu f = new Zi();
- 父类引用指向子类对象
向下转型
- Zi z = (Zi)f;//要求该f必须是能够转换为Zi的。
举例:在类A中定义了一个类B,类B就是内部类。
特点:
内部类可以直接访问外部类的成员,包括私有。
外部类要访问内部类的成员,必须创建对象。
内部类位置 :
成员位置:在成员位置定义的类,被称为成员内部类。
局部位置:在局部位置定义的类,被称为局部内部类。
如果像访问内部类对象,要这样 创建
成员内部的常见修饰符
private 为了保证数据的安全性
static 为了让数据访问更方便
被静态修饰的成员内部类只能访问外部类的静态成员
人就是这样 越是没有实力越爱说大话 世界上只有没有实力的人 才整天希望别人赞赏 –卡卡西
1.Java中数组的内存分配
Java程序在运行时,需要在内存中分配存储空间。为了提高运算效率,对空间进行了不同区域的划分,在每一片区域都有特定的处理数据的方式和内存管理方式。栈 存储 局部变量
堆 存储 new 的对象
方法区 本地方法区和寄存器(供cpu使用)
2.二维数组
概述:一个元素为一维数据的数据格式
int [][] arr= new arr[m]
m表示这个二维数据有多少个一维数据
n表示这个元素里 有多少个元素
举例
int[][] arr = new int[3][2];
这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2]
每个一维数组有2个元素,可以通过arr[m]
来获取
表示获取第m+1个一维数组的第n+1个元素
3.面向对象思想
1.概述:面向对象是面向过程的编程思想特点:
- 更符合我们思想习惯的思想
- 将复杂事情简单化
- 将我们执行者变为指挥者
那么,我们就针对面向对象思想举几个例子吧。
1.买电脑:
面向过程:我要了解电脑–了解我自己的需求–找对应的参数信息–去中关村买电脑–讨价还价–买回电脑
面向对象:我知道我要买电脑 – 计算机老师去给我买 – 老师就买回来了
2.洗衣服:
面向过程:把衣服脱下–找一个盆–放点洗衣粉–加点水–把衣服扔进去–搓一搓–清洗衣服–拧干–晾起来
面向对象:把衣服脱下–打开全自动洗衣机–扔进去–一键即可–晾起来
列举了上面两个例子,我们可以看出,运用面向对象的思想可以很方便的解决我们的问题,同时我们也可以把面向对象思想的使用规则做以总结,让我们更符合面向对象思想
- A.首先分析有哪些类
- B.分析哪些类有什么功能
- C.最后分析类与类之间的关系
练习:把大象装进冰箱。
- 类与对象的关系
2.类:是一组相关的属性和行为的集合
属性 事物的基本描述
行为 事物的功能
对象 类的具体实现
3.成员变量和局部变量的区别
在类中的位置不同
成员变量——类中方法外
局部变量——方法内或者方法声明上
在内存中的位置不同
成员变量——堆内存
局部变量——栈内存
生命周期不同
成员变量——随着对象的存在而存在,随着对象的消失而消失
局部变量——随着方法的调用而存在,随着方法的调用完毕而消失
4.封装(Encapsulation),继承,多态 (三大属性)
封装的概述:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:隐藏实现细节,提供公共的访问方式
提高了代码的复用性
提高安全性
原则:
将不需要对外提供的内容都隐藏起来
把属性隐藏,提供公共方法对其访问
5.抽象类与接口的区别
成员区别
抽象类
成员变量 可以常量 也可以是变量
构造方法 有
成员方法:可抽象 可非抽象
-接口
-只能是常量
-只可以抽象
设计理念的区别
- 抽象类
被继承体现是“is a ”的关系
抽象类中定义是该继承体系的共性功能
-接口
-被实现的是“is a”的关系
-接口中定义是该继承体系扩展功能
4.多态 (三大属性之一)
概述:某一个事物,在不同时刻表现出来的不同状态。我们来举例说明:
- 猫是猫,狗是狗,猫和狗都是动物。
- 水在不同环境下的状态不同(液体,固体,气态)。
那么使用多态的前提是什么呢?
要有继承关系。
有方法的重写。
3.要有父类引用指向子类对象。
父 f = new 子(); 下面我们用代码来体现 //父 f = new 子(); Fu f = new Zi(); System.out.println(f.num); //找不到符号 //System.out.println(f.num2); f.show(); //f.method(); f.function();
输出结果:
100 show Zi function Fu
多态的好处和弊端:
提高了代码的维护性(继承保证)
提高了代码的扩展性(由多态保证)
坏处
不能使用子类的特有功能。 (多态中的转型 可以访问)
多态中的转型
向上转型- Fu f = new Zi();
- 父类引用指向子类对象
向下转型
- Zi z = (Zi)f;//要求该f必须是能够转换为Zi的。
5.内部类
概述:把类定义在其他类的内部,这个类就被称为内部类。举例:在类A中定义了一个类B,类B就是内部类。
特点:
内部类可以直接访问外部类的成员,包括私有。
外部类要访问内部类的成员,必须创建对象。
内部类位置 :
成员位置:在成员位置定义的类,被称为成员内部类。
局部位置:在局部位置定义的类,被称为局部内部类。
如果像访问内部类对象,要这样 创建
//格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象; Outer.Inner oi = new Outer().new Inner(); //Inner io = new Innner();//这样是访问不到的
成员内部的常见修饰符
private 为了保证数据的安全性
static 为了让数据访问更方便
被静态修饰的成员内部类只能访问外部类的静态成员
//成员内部类被静态修饰后的访问方式是: Outer.Inner.show2();
相关文章推荐
- java基础,自己遗忘的知识点
- java基础巩固系列(五):ArrayList与HashSet的比较,以及HashCode分析
- Android-基础 重新巩固提示 -较遗忘的知识点
- java基础巩固系列(六):java中equals()方法与==的比较
- JAVA基础知识点:内存、比较和Final
- java基础巩固系列(十):String、StringBuffer、StringBuilder的使用与比较
- java基础----面向对象2(也是比较重要的零散知识点)
- JAVA基础方面知识点
- 【转】Java基础:equals与"=="操作符的比较
- 一个比较综合的Java语言基础试题
- 暑期java基础巩固训练营正式发布
- java基础总结知识点
- JAVA基础:Servlet技术及其与CGI的比较
- 暑假java基础巩固训练营最新通知
- java基础巩固训练营 简介
- java基础巩固训练营【第一轮】(二)JAVA基础
- java面试题------基础知识点的“汇总
- 一个比较综合的Java语言基础试题
- 比较 .NET 和 Java-Java基础-Java-编程开发
- Java中对HashMap的深度分析与比较-Java基础-Java-编程开发