1、重要的是思想,当前先掌握语法;真正的掌握要等到做项目的
时候。
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:内存(内存图)