01、封装之Private
一、封装:是指隐藏对象的属性和实现细节,仅对外提供·公共访问方式
二、引言
1、现在数据的赋值是没有问题的,但是不符合常理。这样的数据其实是不真实的。那么,我们要保证数据的真实性,怎么办呢?那么就必须对数据进行校验。要想做校验,就必须有逻辑结构语句。要想写逻辑结构语句,就必须定义方法。
2、但是,现在即使我们写了方法,别人还是可以通过:对象.成员变量直接使用。1所以,我们应该先解决根本问题,让外界不能直接通过 对象名,成员变量访问数据。怎么办呢?Java就提供了一个修饰符 Private。
三、privte:
是一个关键字,表示私有的意义,可用于修饰成员变量和成员方法,被他修饰完毕之后的内容,在其它类中不呢直接被访问。
注:private仅仅是封装的一种体现,因为类,函数等其实也是一个封装的体现
02、构造器概述和使用
一、构造器格式及特点:
A:方法名必须和类名保持一致
B:没有返回值类型
C:没有具体返回值
二、构造器的作用
给对象进行初始化
三、注意事项:
A:如果没有给出构造方法,那么程序会默认给出一个无参构造器
B:如果给了,系统将不再自动给出,一般情况下我们会自己再写一个无参构造器
C:构造方法的重载
1.在同一个类中
2.方法名相同
3.参数列表不同(顺序,数据类型,数量)
4.只有返回值类型不同,不能构成方法重载
03、this关键字的概述和应用
一、this的概述
this代表其所在方法所属对象的引用。换言之:this代表本类对象的引用
二、this的应用场景
区分局部变量和成员变量
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
调用本类的其他构造方法
public class Student {
private String name;
private int age;
private String grade;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public Student(String name, int age, String grade) {
this(name, age);
this.grade = grade;
}
}
作为方法的返回值
public class Calculator {
private int result;
public Calculator add(int num) {
result += num;
return this;
}
public Calculator subtract(int num) {
result -= num;
return this;
}
public int getResult() {
return result;
}
}
作为参数传递给其他方法
public class Shape {
private int x;
private int y;
public Shape(int x, int y) {
this.x = x;
this.y = y;
}
public void moveTo(int newX, int newY) {
move(newX - x, newY - y);
}
private void move(int deltaX, int deltaY) {
x += deltaX;
y += deltaY;
}
}
04、代码块儿的概述
一、概念
就是用{}括起来的代码
二、
A:局部代码块
概念:定义在方法中的代码块儿,叫局部代码块儿
作用:让变量尽可能早的从内存中消失,提高效率
B:构造代码块
概念:定义在方法代码块儿中,叫构造代码块儿
作用:把所有构造方法中的共同的内容定义在构造代码块中
总结:构造代码块先执行,然后再执行构造函数
05、对象的初视化过程
Person p=new Person();在内存中是怎么执行的?
做了如下几件事:
A:把Person.class文件加载到内存。(类加载器)
B:在栈内开辟一个变量空间。给P使用。
C:new Person()就会在堆内存开辟空间,
D:方法进方法区,有类名做标记。并且,同时成员变量进堆内存并给出了默认初始化值。(name:null age:0)
E:对成员变量进行显示初始化
F:如果有构造代码块,可以在构造代码块中对成员变量赋值,
G:执行构造方法中对成员变量的赋值,
H:到此为止,对象初始化完毕,
I:把堆内存对象的首地址值赋值给栈内存的p变量
06、static关键字概述
如果都是“中国”这个字符串,你每次创建对象都来一个。那么,如果你有10000个对象,哪就有10000个“中国”占用内存空间。
而明明我们知道,他们都是“中国”的。假如,我们能够,让他们使用的国籍是相同的,也就是说,将来只存储一个“中国”,该有多好呢?
针对这种情况,java提供了一个关键字叫:static他可以修饰成员变量和成员方法。
07、static关键字的特点
A:随着类的加载而加载
B:优先于对象存在
C:为什么要使用静态呢?
如果某个内容是被所有对象共享,那么,改内容就应该用静态修饰,没有被静态修饰的内容,其实是属于对象的特殊描述。
08、static的注意事项
A:在静态方法中,是没有this关键字的。
因为静态是随着类的加载而加载的,而this是对象创建才存在的
B:静态方法只能访问静态成员变量和静态成员方法
C:静态的内容可以用类名调用,也可以用对象名调用,但是一般推荐使用类名调用
09、Math类功能的使用
Math中我们需要掌握的功能:
一、成员常量
Math.E
Math.PI
二、成员方法
A:绝对值:Math.abs(参数类型 形式参数)
B:天花板数:Math.celi(12.3);//结果是13.0
C:地板数:Math.floor(12.3);
D:四舍五入:Math.round(12.6);
E:随机数:Math.random();
F:两个数中的最大值:Math.max(12,53);
G:两个数中的最小值:Math.min(11,66);
H:三个数中的最大值:Math.max(Math.max(11,33),120);