1. 回顾
1)函数(方法)
定义函数的格式以及调用方式:
权限修饰符 返回值类型 函数名(参数列表)
{
// 方法体(执行语句);
// return 语句;
}
如果有返回值
-- 赋值调用, 输出调用
-- 可以单独调用,但一般没有意义.
如果没有返回值
-- 只能单独调用
2)数组
定义:存储多个同一种类型的元素的集合(容器)
特点:
1) 长度固定
2) 可以存储基本数据类型,也可以存储引用数据类型.
3) 只能存储同一种数据类型
定义格式:
int[] arr1 = new int[10];
int[] arr2 = new int[]{10,20,30};
int[] arr3 = {40,50,60};
三个功能:
int[] arr = {5, 26, 15, 47, 13, 39};
遍历
for(int x = 0; x < arr.length; x++){
int everyElement = arr[x];
}
找最值
思路:
1)定义变量,记录一个最值,默认选取了第一个
2)然后遍历数组,拿数组中的每一个元素与记录的值比较,如果发现遍历到的比记录的值大,记录的值就改变成遍历到的这个值.
3)遍历完成,记录的就是最大的那个值了,将这个值返回即可.
注意:
能确定下面两个问题吗?
能确定传递进来的数组不是null吗?
能确定传递进来的数组不是空数组吗?
所以为了程序的健壮性,要先判断. 因为方法有int类型返回值,目前我们不好处理.等学完异常处理,就好办了.
但我们目前可采取下面的解决方案:
解决方案:
我们不找最值了,我们找最值出现的索引. 那么如果这个索引是5,那么最值不就是arr[5] 吗.
这时,我们可以先做判断了, 并且把null和空数组的情况返回 -1 来处理.
public static int getMaxIndex(int[] arr){
if(arr == null || arr.length == 0){
return -1;
}
else
{
// 再做正常的找最值的代码
}
}
找指定值的索引:
遍历数组,依次拿遍历到的元素与指定值进行比较 一旦匹配,返回指定值的索引. 如果遍历完,没有,返回-1
2. 参数传递问题
Java中参数传递问题:
基本类型:形式参数的改变对实际参数没有影响。
引用类型:形式参数的改变直接影响实际参数。
-- 但是字符串特殊.
Java中只有值传递,引用类型传递的是地址值。
3. 面向对象思想
面向过程:面向过程是以函数为基础,完成各种操作。
C语言
面向过程:面向过程是以函数为基础,完成各种操作。强调的是过程。
面向对象:面向对象是以对象为基础,完成各种操作。强调的是对象,结果。
面向对象是基于面向过程的。
4. 面向对象思想特点
面向对象的思想特点:
1:是一种更符合人们思考习惯的思想
2:可以将复杂的事情简单化
3:将程序员从执行者转换成了指挥者
以后做任何事情:
找对象。让这个对象做事情。去哪找?向JDK(JVM)要,因为JDK集成了大量的对象,马上就要学了。
如果你用到了JDK没有提供的对象的时候怎么办?自己造对象,然后用。用完了还可以给别人用。
5.
什么是符合面向对象的思想
1) 分析系统有哪些对象 -- 名词提取法
2) 明确各个对象可以做什么
3) 明确各个对象之间的关系.
6. 类与对象的关系
类:Java中最基本的单位。是属性和行为的集合。是一个抽象的概念。
对象:就是类的具体的存在,体现。
java中描述事物通过类的形式体现,类是具体事物的抽象,概念上的定义。比方说人,是整个概念.
对象就是事物的具体实实在在的个体,比方说魏忠贤.
7. 定义学生类
class Student
{
String name;
int age;
public void sleep()
{
System.out.println("学生睡觉");
}
public void eat()
{
System.out.println("学生吃饭");
}
}
// 使用
1) 创建对象
Student stu = new Student();
2) 使用成员变量
stu.name = "刘亦菲";
System.out.println(stu.name);
3) 使用成员方法
stu.sleep();
练习:
手机类: Phone
属性:品牌(brand)、价格(price)、颜色(color)
行为:打电话(call)、发短信(sendMessage)、玩游戏(playGame)
8. 关于敲代码的重要提醒
在入门阶段就开始养成良好的编码习惯.
去看刘意老师代码的格式,照着来.
9. 什么时候定义成员变量
事物的属性是事物的一部分,这个属性对应的变量才能被定义为成员变量。在java中,成员变量其实就是这个类的属性。
其他情况,都应该将变量定义成局部变量。
当然,你如果不按照这个标准做也没有太大问题,只是不符合面向对象的思想特点。
10. 局部变量和成员变量
成员变量和局部变量的区别?
A:定义位置区别
成员变量 在类中,方法外
局部变量 在方法中,或者方法的形式参数
B:初始化值的区别
成员变量 有默认初始化值
局部变量 没有默认初始化值,想先定义,赋值,才能使用
C:存储位置区别
成员变量 存储在堆中,随着对象的存在而存在,随着对象的消失而消失。
局部变量 存储在栈中,随着方法的调用而存在,随着方法调用完毕而消失。
在使用变量的时候:
首先在局部范围找,有就使用。
接着在成员方法找,有就使用。
如果在成员位置没有,就报错。
使用过程中,遵循一个原则:就近原则。
11. 匿名对象
概念:没有名字的对象就是匿名对象,除了没有名字之外,其他的与之前学习的对象一模一样。
特点:匿名对象,就想帮助你的陌生人一样,帮你一次以后你就再也找不到他人了。
应用场景:
1:当对对象方法仅进行一次调用的时
2:匿名对象可以作为实际参数进行传递
分析:
Student s = new Student(); // 创建对象,并且起了个名字叫s
s.show(); // 用对象调用方法
// 匿名对象写法 -- new Student()就是一个对象了, 是对象, 就可以调用这个对象具有的方法.
new Student().show();
// 作为实际参数传递
// 举例: 我定义了一个方法接收一个学生类型的参数
public void hello(Student s){
s.show();
}
// 普通方式 调用
// Student stu = new Student(); // 先创建学生对象, 然后将学生对象传递进方法
// hello(stu);
// 使用匿名对象的方式传递
hello(new Student());
12.
重点:
1)
面向对象的思想理解
面向对象的思想特点
怎样分析问题符合面向对象的思想
以上理解性的东西认真的读几遍,换成自己的话能解释出来.
2)
一个学生类的定义以及测试使用,必须能敲出来.
它的内存图,能理解.最好能自己动手画一画.
3)
成员变量和局部变量的定义 以及 区别. 要能理解并且能正确使用.
4)
匿名内部类,暂时先理解,看到别人使用了能看懂.以后代码敲多了大家自然就会用了.
|