4-3.类与对象

类与对象

造车:

 1. 画图纸
 1. 定义车的属性信息:color,speed,seat
 2. 定义车的动作:跑
2. 拿着图纸找工厂生产车

面向对象的世界里:

​ 类:就是图纸

​ 属性:这一类事物拥有的共同属性

​ 动作:这一类事物共同能执行的功能

​ 对象:使用类创建的具体某一个东西

​ 对象能干什么?完全取决于类是如何定义的

写代码

​ 类要使用class来定义

​ 属性:成员变量来描述,直接写在类中的变量

​ 动作:成员方法,不写static就是成员方法

​ 创建对象:

​ 类 引用 = new 类();

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public class Car {
// 成员变量
String color; // 颜色
int speed; // 速度
int seat = 5; // 座位
// 成员方法
public void run(){
System.out.println("车能跑");
}
public void fly(){
System.out.println("车能飞");
}

public static void main(String[] args) {
// int a = 10;//写在方法里的变量,局部变量

// 创建对象
// int a = 10;
//String color = "呵呵";

// 在面向对象的世界里,变量是没有市场的,这种变量被称为引用
// java分为两种数据类型:1.基本数据类型 2.应用数据类型 String和我们创建的所有的类
Car c = new Car();// 创建对象 创建了一辆车,后面想用这辆车,就需要使用c来访问

// 让车去跑

//对象或引用.方法();
c.run();// . 表示调用 ."的"

c.color = "紫色";
c.speed = 120;

// c.pailiang = 1.5; //类中没有定义的内容不可以使用

System.out.println(c.color);

Car c2 = new Car();
c2.color = "灰色";
c2.speed = 180;

System.out.println(c.seat);
System.out.println(c2.seat);

System.out.println(c.color);
System.out.println(c2.color);

c.fly();

}
}

4-2.面向对象和面向过程

面向对象和面向过程

面向过程:侧重的是过程

​ 优点:简单

​ 缺点:代码量大了之后,维护性非常差

面向对象:侧重的是对象,你是上帝视角,你创建一个大象,告诉大象,进冰箱

​ 优点:可扩展性非常强,维护成本低

​ 缺点:新手上手难

3-5.方法的重载

方法的重载

重载:方法的名字相同,参数的个数或者类型不同

和返回值没有关系.

在执行的时候,程序会自动的根据你给的参数去找对应的方法,执行

方法的重载可以让我们省去取名字的烦恼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//吃
public static void chi(String fan){
System.out.println("吃"+fan);
}

public static void chi(String fan,String cai){
System.out.println("吃"+fan);
System.out.println("吃"+cai);
}

public static void main(String[] args) {
chi("大米饭");
chi("小米饭");

chi("大米饭","鱼香肉丝");
}

3-4.方法练习

方法练习

  1. 写方法,给方法传递两个整数a,b;返回a和b中比较大的那个数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    /**
    * 用来比较两个数据的大小,返回大的那个
    * @param a 第一个数
    * @param b 第二个数
    * @return 比较大的数
    */
    public static int compare(int a,int b){
    if (a>=b){
    return a;
    }else {
    return b;
    }
    }
    public static void main(String[] args) {
    int c = compare(1,2);
    System.out.println(c);
    //或者
    System.out.println(compare(1,2));
    }
  1. 写方法,把传入的数组反转并返回

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    /**
    * 接收一个数组,把数组中的数据反转,返回
    * @param arr 接收的数组
    * @return 翻转之后的数组
    */
    public static int[] reverse(int[] arr){
    //返回的是一个数组
    int[] ret = new int[arr.length];
    int index = 0;//ret数组的下标
    for (int i = arr.length-1;i >= 0;i--){//反着那数据
    ret[index] = arr[i];//正向往里面装
    index++;
    }
    return ret;
    }
    public static void main(String[] args) {
    int[] a ={1,2,3,4,5};
    int[] b = reverse(a);
    for (int i = 0; i<b.length;i++){
    System.out.print(b[i]+",");
    }
    }
三元表达式,三目运算符
  • x? y:z
  • 如果x为真,则执行y否则执行z

3-3.方法的参数

方法的参数

参数:在方法执行的时候,给方法传递的信息

public static 返回值类型 方法名(形参){

​ 方法体

}

方法名(实参);//调用方法

  • 形参:接收数据
  • 实参:传递信息

在方法中可以有多个参数

1
2
3
4
5
6
7
public static void gem(int zhi,String color){
System.out.println(zhi+"只"+"邓"+color+"棋");
}
public static void main(String[] args) {
gem(1,"紫");
gem(2,"蓝");
}

注意:

  1. 参数的个数必须匹配
  2. 参数的数据类型要匹配

3-2.方法的返回值

方法的返回值

  • 返回值:执行方法之后得到的结果

public static 返回值类型 方法名(){

​ 方法体

​ //需要使用return进行返回

​ return“返回值内容”;//返回值类型和返回值必须匹配

}

1
2
3
4
5
6
7
8
9
10
11
12
public static String buy(){//注意返回值类型
System.out.println("我要去买烟了");
//需要使用return进行返回
return "中华香烟";//返回值类型和返回值必须匹配
}
public static void main(String[] args) {
buy();//没有接受返回值
//返回值返回给调用方

String yan = buy();//接受返回值
System.out.println("得到的返回值是"+yan);
}

注意:

1.返回值类型和返回值必须匹配

2.如果写了返回值类型,必须要有返回值

3.如果写了返回值,必须要写返回值类型

4.没有返回值,返回值类型要写void,方法体里可以不写return,或者return后面不跟返回值

5.return之后不可以再写代码了

以上5点都要遵守

2-21.练习题

练习题

1
2
3
4
5
6
7
8
9
10
//第一题第一问//有一个笼子,笼子里有m只鸡,n只兔子,问,一共有多少只脚
Scanner a = new Scanner(System.in);
Scanner b = new Scanner(System.in);
System.out.println("输入鸡的数量");
int ji = a.nextInt();
System.out.println("输入兔的数量");
int tu = b.nextInt();

System.out.println("一共有有"+((ji*2)+(tu*4))+"只脚");
//第一题//
1
2
3
4
5
6
7
8
9
10
11
//难点  //第一题第二问//让用户输入脚的数量,然后程序去帮用户分析出可能会有多少只鸡,多少只兔子
Scanner scanner = new Scanner(System.in);
System.out.println("请输入有多少只脚");
int jiao = scanner.nextInt();
for(int ji = 0;ji <= jiao/2;ji++){//鸡
int tujiao = jiao - ji*2;
if (tujiao % 4 == 0){
System.out.println("有鸡"+ji+"只,有兔子"+tujiao/4+"只");
}
}
//第一题//
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//第二题//水仙花数是指一个三位数,他的每个位上的数字3次幕之和等于它本身(例如:1^3+5^3+3^3 = 153)
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个三位数");
int a = scanner.nextInt();
if(a >= 100 && a <= 999) {
//获取百位数
int bai = a / 100;
int shi = (a % 100) / 10;
int ge = (a % 100) % 10;
if (a == bai * bai * bai + shi * shi * shi + ge * ge * ge) {
System.out.println("是水仙花数");
} else {
System.out.println("不是水仙花数");
}
}else {
System.out.println("输入不规范!请输入三位数");
}
//第二题//

2-20.数组练习题

数组练习题

1
2
3
4
5
6
7
8
9
10
//第一题//寻找数组中最大的数
int[] arr = {12,41,24,223,123};
int max = arr[0];
for (int i = 0;i < arr.length;i++){
if (arr[i]>max){
max = arr[i];
}
}
System.out.println(max);
//第一题//
1
2
3
4
5
6
7
8
//第二题//计算数组中所有数据的和
int[] arr = {1,3,6,4,2,4};
int sum = 0;
for (int i = 0;i < arr.length;i++){
sum += arr[i];
}
System.out.println(sum);
//第二题//
  • © 2020 DrunkCat
  • TEST & TEXT
    • PV:
    • UV:

请我喝杯咖啡吧~

支付宝
微信