1. 面向过程强调的是功能行为
面向对象是将功能封装进对象,强调具备了功能的对象。面向对象是基于面向过程的
完成需求时:
先要去找具有所需的功能的对象来用
如果该对象不存在,那么创建一个具有所需功能的对象
这样简化开发并提高复用
2. 如何更好的让我们的程序是面向对象的呢?请参照如下步骤
1)分析存在哪些类(或者对象) UML统一建模语言 名词提取法
2)分析每个类可以做什么
3)分析类与类之间的关系
3. 我们学习的编程语言,都是为了把现实世界的事物给描述出来
通过编程语言来模拟现实世界的操作
现实世界的事物:外在的属性描述和内在的功能、行为
注意:只有当变量是类的外在特征的时候,才可以定义为成员变量
而且如果多个范围都适合定义变量(如矩形的长,宽,周长,面积)
建议定义小范围的成员变量
开发的过程,其实就是不断的创建对象,使用对象,指挥对象做事情
设计的过程,其实就是在管理和维护对象之间的关系
面向对象的特征:封装(encapsulation) 继承(inheritance) 多态(polymorphism)
4. java语言的最基本的单位是类。我们应该用一个类来描述现实世界的一个事物
把事物用类体现出来 类:成员变量(字段、属性)和成员方法(函数)
5. 局部变量和成员变量的区别
1)在类中的位置区别
局部变量:方法中
成员变量:在类中,方法外
2)在内存中的区别
局部变量:在栈中
成员变量:在堆中
3)生命周期的区别
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
成员变量:随着对象的创建而存在,随着对象的消失而消失
4)初始化值的区别
局部变量:没有初始化值,使用前必须先声明,再赋值
成员变量:都有默认初始值
6. 匿名对象
用法
1)当对对象的方法仅进行一次调用的时候 new Demo().show();
//匿名对象使用完毕后,就是垃圾了;因此比较节省内存空间
2)匿名对象可以作为实际参数(引用参数)进行传递
7. 一个方法中的变量,首先在局部位置找,如果没有再在成员位置找,如果再没有,就报错
8. 给age赋值了一个负数,这是有问题的
用if语句,在所提供的类中进行判断,考虑可以使用成员方法进行
9. 封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式
把属性都隐藏,提供公共方法对其访问,提高数据安全性
10. 访问修饰符 public private 默认的(default)
11. 写一个类的时候,把所有的成员变量用private修饰,并提供对应的getXxx()和setXxx()方法
12. 构造方法 建议无参数构造方法永远自己给出
13. this代表其所在函数所属对象的引用(this代表本类对象的引用)
this应用场景
1)用于解决局部变量隐藏成员变量
2)通过this调用本类的其他构造方法(如一个带两个参数的构造方法调用带一个参数的构造方法)
this(name)相当于类名.name 这个就要调用前面1个参数的构造函数this.name = name
对this的调用还要是构造器中的第一个语句
14. 这种写法是基本要求 JavaBean
成员变量私有; 无参数构造方法; 公共的get/set方法
15. 我们的每一个对象都有一个国家的成员变量,而且值都是中国。那么在堆内存中就要把“中国”存储很多次。
浪费了空间 针对这种情况,使用static关键字 可以修饰成员变量,也可以修饰成员方法
静态的使用场景:某个成员是被所有对象共享的时候,该成员就可以被静态修饰
16. 静态成员具备以下特点
1)随着类的加载而加载
2)优先于对象存在
3)被所有对象所共享
4)可以直接被类名调用
17. 静态方法只能访问静态变量(因为静态对象是随着类的加载而加载的,并没有对象,没有this的概念)
先进内存的不能访问后进内存的
非静态方法可以访问静态变量,也可访问非静态变量
静态(变量和方法)只能访问静态(变量和方法)非静态都可以访问
18. 主方法是静态的:public static void main(String[] args)
public: main是被jvm调用的,所以,它的方法权限必须足够大
static: main是被jvm调用的,为了方便,不创建对象,直接通过类名调用
void:空的意思,因为我们把结果返回给jvm是没有意义的
main: 习惯写法,是程序的入口
String[] args: 这是一个字符串数组。在早期是为了接受键盘录入数据的
在使用java命令的时候,在后面给出值就可以了
然后main就能把这些值组装起来存储到字符串数组中 现在不用了,我们用Scanner类
19. 制作帮助文档
1)帮助我们知道别人提供给我们的class里面到底有什么
2)我们不会把.java文件给用户,而是会把.class文件给用户,这个时候,就要制作帮助文件
A: 把你写的类加入文档注释
B: 用javadoc工具进行解析即可 javadoc -d doc -version -author ArrayTools.java
20. 学习和使用API(应用程序编程接口)的步骤
JDK6的中文帮助文件 在查看时,要注意类及方法出现的版本
1)了解API是什么?Application Programming Interface(JDK提供给我们的说明书)
2)看到一个关于Math类的描述信息
首先看包 如果是java.lang包下的类是可以直接使用的
如果是其他包下的类是必须要导入包的
3)简单的看一下描述 之后应该找构造方法
4)没有构造方法的情况:
第一种:通过一个静态方法返回该类的对象
第二种:它的成员变量和成员方法都是静态的
21. Math类
//得到1到100的随机数
int i = (int)(Math.random()*100+1);
System.out.println(i);
Math类要掌握的内容:
成员变量: 自然对数 public static final double E
圆周率 public static final double PI
成员方法: 随机数: public static double random()
绝对值: public static int abs(int a)
向上取整: public static double ceil(double a)
向下取整: public static double floor(double a)
最大值: public static int max(int a, int b)
最小值: public static int min(int a, int b)
求次幂: public static double pow(double a, double b)
四舍五入: public static int round(double a)
//四舍五入基本原理 -->int result = (int)(num+0.5/1); 加上0.5
正平方根: public static double sqrt(double a)
22. 代码块:用{}括起来的代码
局部代码块:在方法中用{}括起来的代码 作用是限定变量的生命周期,及时释放内存
构造代码块:在成员位置用{}括起来的 在每个构造方法执行前执行 作用是把多个构造方法中相同的代码抽取出来
静态代码块:在成员位置用{}括起来的,被static修饰的 随着类的加载而加载 对类中的数据进行一次初始化
三个代码块的执行顺序 静态代码块 > 构造代码块 > 局部代码块
一般来说 是不会使用代码块的