2、JAVA是一门儿面向对象的计算机语言——“万物皆对象”
3. 面向对象的理解必须结合面向过程
4.面向过程,即是计划的制定者又是计划的执行者 面向对象,只是指挥角色,具体实现细节不需要关心。 面向对象基于面向过程
5、面向对象好还是面向过程能搞好? 具体情况具体分析。 如果执行流程比较简单——面向过程 如果执行流程比较复杂——面向对象
6、软件开发领域: 面向过程(简单程序:贪吃蛇,扫雷。。。)——>面向 对象(复杂程序:OA,Bos......)
7、现在的程序都是复杂的工程,而JAVA正是面向对象的。
8.先有类还是先有对象? 人的思维来讲:应该是先有具体的对象再有类 但是在JAVA中,语法结构上是先有类再有对象
9、先一枝独秀(重点突破)再遍地开花(整体掌握)
10、栈内存有个特点:先进后出(最先进栈的最后出去)
11、我自己的想法儿:先要建立一个类,然后再创建具体的对象,然后再把对象添加进集合(举例) package edu.practice;
import java.util.ArrayList;
/* * 定义一个方法:将集合中成绩等于60的学生返回 * * 如果集合中没有 返回一个默认的学生(姓名:小明,年龄:38,分数:100), * 并在main方法中打印该学生的信息 * * 集合中存储的学生: * 姓名:周星驰 年龄:58 成绩:98 * 姓名:李连杰 年龄:56 成绩:98 * 姓名:刘德华 年龄:60 成绩:98 * * 分析: * 定义方法 * 参数 ArrayList<学生> list 返回值 学生 * 遍历结合,依次获取每个学生 * 拿着学生的分数与60分比较 * 如果等于 把当前的学生返回 * 如果没有等于60的同学 * 就创建一个学生对象 给学生对象赋值 将这个学生对象返回 * * */ public class Practice02 { public static void main(String[] args) { ArrayList<Student> list = new ArrayList<Student>();
// 姓名:周星驰 年龄:58 成绩:98 Student zhouxingchi = new Student(); zhouxingchi.name = "周星驰"; zhouxingchi.age = 58; zhouxingchi.score = 98;
// 姓名:李连杰 年龄:56 成绩:98 Student lilianjie = new Student(); lilianjie.name = "李连杰"; lilianjie.age = 56; lilianjie.score = 98;
// 姓名:刘德华 年龄:60 成绩:98 Student liudehua = new Student(); liudehua.name = "刘德华"; liudehua.age = 60; liudehua.score = 98;
list.add(zhouxingchi); list.add(lilianjie); list.add(liudehua);
Student zhegeS = getStudent(list); System.out.println("学生姓名:" + zhegeS.name + "-_-" + "学生年龄:" + "-_-" + zhegeS.age + "-_-" + "学生演技评分:" + zhegeS.score);
}
public static Student getStudent(ArrayList<Student> list) { // 遍历集合,依次获取每个学生 for (int i = 0; i < list.size(); i++) { Student zhegeS = list.get(i); // 拿着学生的分数与98分比较 if (45 == zhegeS.score) { return zhegeS; }
} // 如果没有等于60的同学 // 创建一个学生对象,给学生对象赋值 将这个学生对象返回 Student xiaoming = new Student();
xiaoming.name = "路人甲"; xiaoming.age = 38; xiaoming.score = 61; return xiaoming;
}
}
12、创建对象的格式: 类名 对象名 = new 类名();
13、通过已有的对象调用该对象的功能。格式:对象.对象属性;可以对该对象的属性赋值。
14、发现:事物其实就是由特点(属性)和行为(功能)组成的。
可以简单理解:属性就是数值,其实就是变量;行为就是功能,就是方法。功能的实现需要方法,功能的实现需要方法,功能的实现需要方法。。。
15、类是用于描述事物的,类中可以定义事物的属性和行为
对象是通过描述的这个类,使用new关键字创建出来,通过对象就可以调用该对象具体的属性和功能了。
16、局部变量和成员变量的区别: 区别一:定义的位置不同定义在类中的变量是成员变量
定义在方法中或者{}语句里面的变量是局部变量
区别二:在内存中的位置不同
成员变量存储在对内存的对象中
局部变量存储在栈内存的方法中
区别三:声明周期不同
成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失
局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失
区别四:初始化不同
成员变量因为在堆内存中,所有默认的初始化值
局部变量没有默认的初始化值,必须手动的给其赋值才可以使用。
17、一般对成员属性的访问动作:赋值(设置 set),取值(获取 get),因此对私有的变量访问的方式可以提供对应的 setXxx或者getXxx的方法。
18、为啥学到面向对象,get xxx set xxx方法对外提供访问方式,方法格式就没有static 了?
19、package it.cast;
import java.util.ArrayList;import java.util.Random;import java.util.Scanner;
/* * 当前版本V0.1 * 捋清业务逻辑,准备数据 * 1.键盘录入三个学生信息 * 2.打印所有学生信息 * 3.随机选出一名学生自我介绍:说出自己姓名年龄 * * 准备数据: * 1.抽取一个描类Student * 2.将录入的数据组织成学生对象,存储进集合 * * 版本V0.2:键盘录入学生信息,并且存储进集合 * 版本V0.3:打印当前所有学生信息 * * */public class MainApp3 { public static void main(String[] args) { // 创建一个集合对象 ArrayList<Student> xuesheng = new ArrayList<Student>(); // 往集合添加数据 addStudent(xuesheng); // 输出所有学生信息 printStudent(xuesheng); // 随机选择一个学生自我介绍 randomName(xuesheng); }
public static void randomName(ArrayList<Student> xuesheng) { Random ran = new Random(); // 生成随机数 int index = ran.nextInt(xuesheng.size());// [0,size) // 根据随机数获取对象 Student tongxue = xuesheng.get(index); // 调用say方法 System.out.println("===================="); tongxue.say(); }
public static void printStudent(ArrayList<Student> xuesheng) { System.out.println("===============学生信息=============="); // 循环取出每一个学生对想 for (int i = 0; i < xuesheng.size(); i++) { // 把获取到的学生对象用一个变量接收 Student tongxue = xuesheng.get(i); System.out.println("姓名:" + tongxue.getName() + "年龄:" + tongxue.getAge()); } }
public static void addStudent(ArrayList<Student> xuesheng) { Scanner sc = new Scanner(System.in); for (int i = 0; i < 3; i++) { // 创建一个新的Student对象 Student tongxue = new Student();
System.out.println("请你输入第" + (i + 1) + "个学生的姓名:"); String name = sc.next(); tongxue.setName(name);
System.out.println("请您输入第" + (i + 1) + "个学生的年龄:"); int age = sc.nextInt(); tongxue.setAge(age);
// 最后一定要添加到xuesheng集合 xuesheng.add(tongxue);
}
}
}
20、向集合中添加调用set方法(放进去用set) 获取集合中的数据调用get方法(拿出来用get)
21、抽取一个描述类Student 并不是指从集合中或者是数组中或者是其他存储器中,而是,自己写的一条定义Student的类
22、有时候一定要打破惯性的思维,不要上来就for循环for循环for循环。。。 还有 i 的用途是多变的。
23.、对象名 . 方法名:对象通过方法获取属性
24、Random r = new Random();int num = list.size();int index = r.nextInt(list.size());三合一int index = new Random().nextInt(list.size());================================Random r = new Random();int num = list.size();int index = r.nextInt(list.size());三合一int index = new Random().nextInt(list.size());================================Random r = new Random();int num = list.size();int index = r.nextInt(list.size());三合一int index = new Random().nextInt(list.size()); ================================================================
面向对象: 1、JAVA是一门面向对象的计算机语言——“万物皆对象”
2、面向过程与面向对象
3、面向对象编程(oop) a:创建类 b:根据类创建对象 c:调用功能
4、类和对象(对象名 . 方法名时,方法所在的栈空间与对象名对应的对象) a:类:具有相似属性或行为的事物统称(抽象的) b:对象:是具体的事物,老婆是抽象的吗? 5、局部变量和成员变量的区别(方法参数为局部变量) A:局部变量:方法中的变量 成员变量:类中方法外的变量 即定义的位置不同。 B:局部变量存储在栈中 成员变量存储在堆中 即在内存中的位置不同。 C:局部变量随着所属大括号结束而释放 成员变量随着对象的消失而消失,作用在整个类中 即生命周期不同。 D:局部变量:必须初始化完成才能使用 成员变量有初始化值 即初始化不同
6、参数传递(内存图)
7、封装(面向对象的三大特征之一:封装、继承、多态)
8、封装的实现:(私有仅仅是封装的体现形式)遵循JavaBeam规范 A:私有化属性 B:提供set和get方法,进行赋值和获取
9、this关键字(this是指当前对象,即谁调用的这个方法) a:成员变量和局部变量可以重名,调用时,调用局部变量(方法中的变量) 如果要使用成员变量(类中方法外的变量)就加this关键字。 b:内存(内存图)