06.10_面向对象(成员变量和局部变量的区别)(掌握)
- A:在类中的位置不同
- 成员变量:在类中方法外
- 局部变量:在方法定义中或者方法声明上
- B:在内存中的位置不同
- 成员变量:在堆内存(成员变量属于对象,对象进堆内存)
- 局部变量:在栈内存(局部变量属于方法,方法进栈内存)
- C:生命周期不同
- 成员变量:随着对象的创建而存在,随着对象的消失而消失
- 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
D:初始化值不同
- 成员变量:有默认初始化值
- 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
注意事项:
- 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
- 基本数据类型变量包括哪些:byte,short,int,long,float,double,boolean,char
- 引用数据类型变量包括哪些:数组,类,接口,枚举
06.12_面向对象(匿名对象的概述和应用)(掌握)
- A:什么是匿名对象
- 没有名字的对象
- B:匿名对象应用场景
- a:调用方法,仅仅只调用一次的时候。
- 那么,这种匿名调用有什么好处吗?
- 节省代码
- 注意:调用多次的时候,不适合。匿名对象调用完毕就是垃圾。可以被垃圾回收器回收。
- 那么,这种匿名调用有什么好处吗?
- b:匿名对象可以作为实际参数传递
- a:调用方法,仅仅只调用一次的时候。
- C:案例演示
- 匿名对象应用场景
06.13_面向对象(封装的概述)(掌握)
A:封装概述
- 是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
B:封装好处
- 隐藏实现细节,提供公共的访问方式
- 提高了代码的复用性
- 提高安全性。
- C:封装原则
- 将不需要对外提供的内容都隐藏起来。
- 把属性隐藏,提供公共方法对其访问。
06.14_面向对象(private关键字的概述和特点)(掌握)
- A:人类赋值年龄的问题
- B:private关键字特点
- a:是一个权限修饰符
- b:可以修饰成员变量和成员方法
- c:被其修饰的成员只能在本类中被访问
- C:案例演示
- 封装和private的应用:
- A:把成员变量用private修饰
- B:提供对应的getXxx()和setXxx()方法
- private仅仅是封装的一种体现形式,不能说封装就是私有
06.15_面向对象(this关键字的概述和应用)(掌握)
- A:this关键字特点
- 代表当前对象的引用
- B:案例演示
- this的应用场景
- 用来区分成员变量和局部变量重名
07.09_面向对象(static关键字及内存图)(了解)
A:案例演示
- 通过一个案例引入static关键字。
- 人类:Person。每个人都有国籍,中国。
B:画图演示
创建对象内存图
- 带有static的内存图
- 带有static的内存图
07.10_面向对象(static关键字的特点)(掌握)
- A:static关键字的特点
- a:随着类的加载而加载
- b:优先于对象存在
- c:被类的所有对象共享
- 举例:咱们班级的学生应该共用同一个班级编号。
- 其实这个特点也是在告诉我们什么时候使用静态?
- 如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。
- 举例:
- 饮水机(用静态修饰)
- 水杯(不能用静态修饰)
- 共性用静态,特性用非静态
- d:可以通过类名调用
- 其实它本身也可以通过对象名调用。
- 推荐使用类名调用。
- 静态修饰的内容一般我们称其为:与类相关的,类成员
- B:案例演示
- static关键字的特点
07.11_面向对象(static的注意事项)(掌握)
- A:static的注意事项
- a:在静态方法中是没有this关键字的
- 如何理解呢?
- 静态是随着类的加载而加载,this是随着对象的创建而存在。
- 静态比对象先存在。
- 如何理解呢?
- b:静态方法只能访问静态的成员变量和静态的成员方法
- 静态方法:
- 成员变量:只能访问静态变量
- 成员方法:只能访问静态成员方法
- 非静态方法:
- 成员变量:可以是静态的,也可以是非静态的
- 成员方法:可是是静态的成员方法,也可以是非静态的成员方法。
- 简单记:
- 静态只能访问静态。
- 静态方法:
- a:在静态方法中是没有this关键字的
- B:案例演示
- static的注意事项
07.12_面向对象(静态变量和成员变量的区别)(掌握)
- 静态变量也叫类变量 成员变量也叫对象变量
- A:所属不同
- 静态变量属于类,所以也称为为类变量
- 成员变量属于对象,所以也称为实例变量(对象变量)
- B:内存中位置不同
- 静态变量存储于方法区的静态区
- 成员变量存储于堆内存
- C:内存出现时间不同
- 静态变量随着类的加载而加载,随着类的消失而消失
- 成员变量随着对象的创建而存在,随着对象的消失而消失
- D:调用不同
- 静态变量可以通过类名调用,也可以通过对象调用
- 成员变量只能通过对 象名调用
07.17_面向对象(学习Math类的随机数功能)(了解)
C:获取随机数的方法
* public static double random():返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
* D:我要获取一个1-100之间的随机数,肿么办?
* int number = (int)(Math.random()*100)+1;
/**
* 获得一个给定范围的随机整数
* @param minNum 给定的范围最小值
* @param maxNum 给定的范围最大值
* @return 在此范围内的随机整数
*/
public static int getRandomNum(int minNum, int maxNum) {
Random random = new Random();
return (Math.abs(random.nextInt()) % (maxNum - minNum + 1))+ minNum;
}
/**
* 生成指定长度的随机字符串
* @param length 指定长度
* @return 随机字符串
*/
private static String generateLenString(int length) {
char[] cResult = new char[length];
int i = 0;
while (i < length) {
i = i % length;
int f = (int) (Math.random() * 3 % 3);
if (f == 0)
cResult[i] = (char) ('A' + Math.random() * 26);
else if (f == 1)
cResult[i] = (char) ('a' + Math.random() * 26);
else
cResult[i] = (char) ('0' + Math.random() * 10);
i++;
}
return new String(cResult);
}
/**
* 生成指定长度范围的字符串
* @param length
* @return
*/
private static String generateLenString(int minLength,int maxLength) {
if(minLength>maxLength)
return "";
int length=getRandomNum(minLength,maxLength); //生成随机长度
char[] cResult = new char[length]; //存放结果
int i = 0; //i记录当前生成字符串的长度
while (i < length) {
i = i % length;
int f = (int) ( Math.random() * 3 % 3);
if (f == 0)
cResult[i] = (char) ('A' + Math.random() * 26);
else if (f == 1)
cResult[i] = (char) ('a' + Math.random() * 26);
else
cResult[i] = (char) ('0' + Math.random() * 10);
i++;
}
return new String(cResult);
}