1.方法的重载
- 我们根据方法名+参数列表确定具体调用哪个方法
- 方法的重载:在同一个类中,存在方法名相同,但参数列表不同的方法
- 如果在同类中,同名方法的参数个数不同,一定构成重载
- 如果在同类中,同名方法的参数个数相同,需要查看对应位置上参数的类型,而不是参数名,与参数名无关
比如:
(int a,String b)与(int b,String a)–不构成重载
(int a,String b)与(String a,int b)–构成重载
2.冒泡排序
排序思路:要比较多轮,每轮两个相邻的元素做比较,位置不对就互换
代码思路:
通过嵌套for循环来完成
外层循环:控制的是轮数,如果有n个数,最多n-1轮
内层循环:控制的是每轮中比较的次数,每一轮的次数会递减,之前轮确定的最大值不应该参与后面轮的比较
注意:外层循环的循环变量代表的是轮数1 2 3 4…
内层循环的循环变量代表的是数组的下标[0,a.length-i)
3.简易计算器实现
package cn.tedu.review;
import java.util.Scanner;
/*本类用于实现简易计算器*/
public class TestCalc {
public static void main(String[] args) {
f0();//调用一个实现计算器的方法
}
private static void f0() {
while(true){//死循环,让用户可以一直算
//1.提示并接收用户输入的两个数
System.out.println("请您输入要计算的第1个数:");
int a = new Scanner(System.in).nextInt();
System.out.println("请您输入要计算的第2个数:");
int b = new Scanner(System.in).nextInt();
//2.提示并接收用户输入的运算符
System.out.println("请您输入要计算的运算符,支持:+ - * / :");
String s = new Scanner(System.in).nextLine();
//3.根据运算符的不同,调用不同的计算方法进行计算并输出结果
switch(s){
case "+" : f1(a,b);break;
case "-" : f2(a,b);break;
case "*" : f3(a,b);break;
case "/" : f4(a,b);break;
default: System.out.println("您输入的运算符不正确!");
}
//4.询问用户是否想继续运算
System.out.println("如果想退出,请输入1,继续请输入2");
int flag = new Scanner(System.in).nextInt();
if(flag == 1){break;}
}
}
private static void f4(int a, int b) {//将拿到的两个数a和b做除法运算并打印结果
System.out.println(a+"和"+b+"做除法的结果为:"+(a/b));
}
private static void f3(int a, int b) {//将拿到的两个数a和b做乘法运算并打印结果
System.out.println(a+"和"+b+"做乘法的结果为:"+(a*b));
}
private static void f2(int a, int b) {//将拿到的两个数a和b做减法运算并打印结果
System.out.println(a+"和"+b+"做减法的结果为:"+(a-b));
}
private static void f1(int a, int b) {//将拿到的两个数a和b做加法运算并打印结果
System.out.println(a+"和"+b+"做加法的结果为:"+(a+b));
}
}
4. 面向过程
这种编程思想强调的是过程,凡事亲力亲为
5. 面向对象
这种思想强调的是结果,Java就是一门面向对象的语言
不在意完成的过程,在意的是有对象可以帮我干活
比如:我们想吃饭,不在意是哪个厨师做的,也不在意是哪个骑手送的,只要有厨师做,有骑手派送就好了
我们可以把OOP的思维理解成一种行为习惯 思维方式
比如衣服,没有办法给出一个明确的定义,但是,只要我们看到任何一件衣服,我们就自动把它归类到衣服这个分类中,因为你在过去的生活经验中已经见过太多的衣服,积累经验
6.类
类指的是类型Type,是指一类事物,使用Java中的class关键字来描述
类是抽象的,要提取这一类事物的特征与功能
可以把类理解成设计图纸,模板
注意:类在现实世界中不是真实存在,它只是一种对象的数据类型
7. 对象
对象就是根据类创建出来的一个个独立且具体的实例
一个类可以创建出多个对象,我们通过对象唯一的地址值区分不同的对象
对象具有各种特征,并且每个对象的每个特征都可以有自己特定的值
对象具有各种行为,每个对象可以执行的操作
8. 对象创建过程分析
Phone p = new Phone();创建对象时,内存发生了什么?
1. 在栈内存中开辟一块空间,Phone类型多的引用变量p,把p压入栈底,此时p只有一个默认值null
2. 在堆内存中开辟一块空间用于存放Phone类型的对象
3. 要给这个对象进行初始化,比如:String brand = null;
4. 此对象已经准备好,所以会生成一个唯一的地址值,并将这个地址值交给栈内存中的变量p来保存
5. 如果后续想要对对象做操作,比如:p.price = 88.8; 先会找到栈中p变量保存的地址值,根据这个地址找到堆中的对象在做进一步的操作
9. 面向对象的特性
9.1 封装
1.1 为啥要用封装?
一、封装可以提高程序的安全性
二、封装可以让资源按照我们预先规定的方式来操作
1.2 属性的封装
用private修饰属性,一旦属性被private修饰,就只能在本类中使用,外界无法访问
所以为了让外界能够按照我们提供的方式来调用,需要根据属性生成公共的getXxx()与setXxx()方法
1.3方法的封装
方法的封装也是使用private来修饰方法
如果想要调用私有方法的功能,就需要在本类的公共方法里调用这个私有方法
1.4 拓展综合练习1
定义汽车类Car
定义汽车类的属性:颜色 品牌 价格 车长
定义汽车类的方法:启动功能start() 停止功能stop(),stop()要封装,先启动再停止
创建Car类的对象c,给c对象的属性赋值并查看:“暗夜紫” “BMW” 200 0.2
封装定义好的4个属性,并提供属性对应的get与set方法
使用set()与get()重新给c对象赋值并查看赋值结果 “特斯拉” “black” 200.02 3
package cn.tedu.review;
/*本类用于OOP的知识回顾*/
public class TestCar {
public static void main(String[] args) {
//4.创建汽车类的对象c
Car c = new Car();
//5.给c对象的属性赋值,并打印查看赋值的结果"宝马" "活力橙" 200000.98 3.1
// c.brand = "宝马";
// c.color = "活力橙";
// c.price = 200000.98;
// c.length = 3.1;
// System.out.println(c.length);
// System.out.println(c.price);
// System.out.println(c.brand);
// System.out.println(c.color);
//6.通过c对象调用汽车类的方法
c.start();
//c.stop();
//8.通过set方法给c对象重新赋值 "特斯拉" "石墨绿" 210000.99 2.9
c.setBrand("特斯拉");
c.setColor("石墨绿");
c.setPrice(210000.99);
c.setLength(2.9);
//9.通过get方法查看c对象的属性是否赋值成功
System.out.println(c.getBrand());
System.out.println(c.getColor());
System.out.println(c.getPrice());
System.out.println(c.getLength());
}
}
//1.定义汽车类Car,用来描述汽车这一类事物
class Car{
//2.定义汽车类的属性
//7.封装属性,并提供对应的get与set方法
private String brand;//品牌
private String color;//颜色
private double price;//价格
private double length;//车长
//3.定义汽车类的方法
public void start(){
System.out.println("汽车启动~");
stop();//在本类的公共方法里调用这个私有方法
}
//10.封装并调用stop()的功能
private void stop(){
System.out.println("汽车停止~");
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
}