java学习第六天

本文介绍了Java中的两种编程思想——面向过程和面向对象,对比了它们在解决问题上的不同方式。接着深入讲解了类和对象的概念,包括属性、行为、构造方法以及POJO。还展示了如何创建和使用对象,以及局部变量和成员变量的区别。此外,还提供了学生类和猜数游戏的示例代码,进一步阐述面向对象编程的应用。
摘要由CSDN通过智能技术生成

java学习第六天

两种编程思想

面向过程的编程

例如:c语言,代码写在文件中,没有类的概念,程序的组成靠函数。

编程思路按业务逻辑顺序的写代码。依次调用函数来实现功能。

重点关注业务的过程和步骤

面向对象编程

Object Oriented Programming(OOP),面向对象编程。

面向对象编程语言中都有类的概念,代码的组织靠类(代码的最小组织单位是类)面向对象编程中执行一个功能的代码叫方法(method)。

编程的思路调用不同功能的类的方法来实现业务功能。

重点关注业务需要由哪些功能的类来组成。

举例:比较两种思想的不同之处。

打扫教师的卫生:

*面向过程:*思考打扫教室的卫生的步骤,椅子放到桌子上—> 扫地上垃圾—> 拖地 —> 椅子放下来—> 擦窗户—> 擦玻璃

​ 安排任务:谁做什么

*面向对象:*思考打扫教室卫生有哪些任务:地面、桌椅、门窗

​ 安排:谁适合做对应的任务。地面的劳动强度较大,就派强壮的同学去做;擦桌子需要细心,派女同学去做;门窗比较高,派高个子同学去做。

​ 找的人具备业务能力,不需要教他,安排下去就不用管了。

总结

  • 面向过程:亲力亲为,侧重于分析和处理
  • 面向对象:所有的事情交给相应的对象(具备能力)去完成,侧重于分析完成任务需要哪些(什么样)对象。

类和对象

类(class)

具有相同属性和行为的对象的集合,它是一个抽象的概念,不指向任何具体的实物。

**属性:**描述对象的特征,在程序中,体现成员变量。

**行为:**对象具有的动作或能力,在程序中,体现在方法。

例如:下列这些都是类

猫、 学生 、 桌子 、 树 …

类的定义

程序中用关键字class来定义一个类。

语法结构:[修饰符] class 类名{

​ //属性(成员变量)

​ // 行为(方法)

}

public class Car {
    //定义属性(成员变量)
    String byd;//汽车的品牌
    String color;//汽车的颜色
    int seat;//座位数
    int price;//价格

    //定义方法(行为)
    static void go(){
        System.out.println("比亚迪在跑");
    }

    static void stop(){
        System.out.println("比亚迪停了");
    }

    static void fiy(){
        System.out.println("比亚迪飞了");
    }

对象(object)

对象是类的一个具体的实例,是类的具体表现。

创建对象的语法:

类名 对象名 = new 类名(参数);(参数可以没有)

  • 读写属性

    对象名.属性名

  • 调用方法

    对象名.方法名(参数); (参数可以没有)

//创建一个Car类的对象(实例化)
        Car car = new Car();
        //设置对象的属性
        car.brand = "长安";
        car.color = "黑色";
        car.seat = 5;
        car.price = 156000;
        System.out.println(car.brand+car.price+ car.color+car.seat);

        //执行对象的行为(调用对象的方法)
        Car.go();
        Car.stop();
        Car.fly();
    }

类和对象的关系

类是对象的集合,是抽象概念;对象是类的具体实例。

通过new 关键字创建(实例化)对象

成员变量和局部变量的区别

成员变量

定义在类中的变量,称为成员变量(属性)。

与数组元素一样,有默认值,所以成员变量可以不初始化直接使用。

作用域是整个类。

对象被垃圾回收时,成员变量就消失。

//定义属性(成员变量)
    String brand;//汽车的品牌
    String color;//汽车的颜色
    int seat;//座位数
    int price;//价格

成员变量的默认值(与数组元素的默认值相同)

数据类型默认值
整型0
浮点型0.0
布尔型 Booleanfalse
字符型不可见字符(‘\u0000’)
引用类型null

局部变量

定义在方法中的变量,称为局部变量。

局部变量没有默认值,所以必须要先初始化,再使用。

局部变量的作用域在它所在的大括号{}内有效。

方法执行完成后,局部变量就消失。

public static void main(String[] args) {
        int i = 1;
        String j = "张三"
练习:
1、创建一个学生类Student

​ 属性:姓名、年龄、性别

​ 行为:学习、考试、休息

 String name;
    String six;
    int age;

    static void stud(){
        System.out.println("正在学习。。。");
    }
    static void exam(){
        System.out.println("正在考试中。。。");
    }
    static void rest(){
        System.out.println("正在休息。。。");
    }
2、猜数游戏

随机产生一个数字(1-100),控制台输入一个数字,判断是否猜中,猜中就结束。如果比随机数大就提示(猜的数字比随机数大),反之。

import java.util.Random;
import java.util.Scanner;

public class Game {

    //创建一个获取随机数的方法,返回类型为int
    static int ranNum() {
        Random random = new Random();
        //返回获取的随机数。随机数的范围:(0-99)+1 => (1-100)
        return random.nextInt(100) + 1;
    }

    //创建一个用户输入整数的方法,类型与随机数保持一致
    static int user() {
        Scanner scanner = new Scanner(System.in);
        //返回用户输入的数
        return scanner.nextInt();
    }
    //创建一个判断方法,接收并判断随机数与用户输入的数。
    static void judge(){
        //调用生成随机数的方法,永一个变量
        int j = Game.ranNum();
        //调用用户输入整数的方法
        System.out.println("请输入一个0-100的整数");
        int k = Game.user();
        while (j != k) {
            if (j > k) System.out.println("猜小了,请继续猜");
            else System.out.println("猜大了,请继续猜");
            //继续输入
            k = Game.user();
        }
        System.out.println("恭喜你,猜对了!这个数是:" + j);
    }

    //主函数调用方法
    public static void main(String[] args) {
        Game.judge();
    }
}

构造方法

构造方法是类里面一个特殊的方法:

  • 方法名与类名相同
  • 无返回值(没有返回类型,即使是void)
  • 可以有参数,也可以没有参数。
  • 如果一个类,没有写构造方法,默认提供一个无参数的构造方法
  • 一个类可以有多个构造方法。每个构造方法的参数个数可以不一样。
  • 一旦一个类写了构造方法,默认的无参构造方法不在生效。
  • 构造方法不能通过对象直接调用,在创建对象(实例化)的时候自动调用。

默认无参构造方法如下:

public class Car {
    //定义属性(成员变量)
    String brand;//汽车的品牌
    String color;//汽车的颜色
    int seat;//座位数
    int price;//价格

    public Car() {
        
    }
    //无参数构造方法去new对象
    Car car = new Car();

有参构造方法

public Car(String brand, String color, int seat, int price) {
        //this代表当前对象
        this.brand = brand;
        this.color = color;
        this.seat = seat;
        this.price = price;
    }
//有参数的构造方法去new对象
Car car1 = new Car("奔驰","白色",5,19000);
  • IDEA中创建构造方法

    代码空白的地方,单机右键=> generate

在这里插入图片描述

=> constructor

在这里插入图片描述

=>

在这里插入图片描述

POJO

POJO(plan Ordinary java Object)简单类java类,也叫java Bean。

 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 int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

package和import

package

java中的包,用于区分同名的类,相当于Windows系统中的目录(文件夹)

为了避免package相同,一般用公司的域名作为package,例如:华清远见的域名是hqyj.com。包名就写为com.hqyj

package放到类文件的第一行,语法:package xxx.xxx

package都是用小写,中间永点号分割,每个点号分隔开的一段,磁盘上就会生成对应的文件夹。

import

在使用一个别的包下面的类的时候,需要用import关键字导入包

import语句写在package之后,在class定义之前

import语句一次可以导入一个类,或者用通配符 * 导入多个类

//导入java.util包下的Scanner类
import java.util.Scanner;
//批量导入java.util包下的所有类
import java.util.*;

在IDEA中,如果new对象时用了代码补全功能,他会自动帮我们导入包。有同名的类时,要让我们选择导入哪个包下的类

如果使用java.lang这个包下的类,不需要导入,直接可以使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值