Java 面向对象 day1

Java 面向对象 day1

类和对象

1.定义

  1. 类: 一系列对象的的共同特征的归纳总结,是一种概念的定义叫做类,是创建对象的模板,一种自定义的数据类型;
  2. 对象: 世界上不管看得到看不到,但是真实存在的个体,叫做对象,是类的具体体现,类的实例。 “万事万物皆对象”

2.代码演示

Person String name String sex int age double height double weight eat() dringk() read() dodaima() TestPerson name="张三" sex="男" age = 28 height = 1.89 weight = 120.5 eat() dringk() read() dodaima()

创建person类

/**
 * 人类
 * 生活中的特征和行为,在Java中形成模板
 */
class Person {

    //静态特征,在java中称为属性(全局变量)
    String name;
    String sex;
    int age;
    double height;
    double weight;

    //动态行为  在Java中称之为方法
    public void eat() {
        System.out.println("吃火锅");
    }

    public void drink() {
        System.out.println("喝酒");
    }

    public void read() {
        System.out.println("读书");
    }

    public void doDaiMa() {
        System.out.println("敲代码");
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                ", height=" + height +
                ", weight=" + weight +
                '}';
    }
}

创建person类的对象

public class TestPerson {
    public static void main(String[] args) {

        //将person看为一个整体,这是可以将person作为类型使用,这个类中包含属性和方法
        Person person = new Person();//创建了一个新的人的对象(实例)
        //为其附上具体数据
        person.name = "张三"; //.的作用在引用对象中的属性进行赋值
        person.sex = "男";
        person.age = 28;
        person.height = 1.89;
        person.weight = 120.5;

        //打印对象的属性
        System.out.println(person.toString());

        //调用对象中的方法
        person.eat();
        person.drink();
        person.read();
        person.doDaiMa();
    }
}

输出结果

Person{name='张三', sex='男', age=28, height=1.89, weight=120.5}
吃火锅
喝酒
读书
敲代码

创建对象数组

public class StudentArray {
    public static void main(String[] args) {
        //定义了一个以Person类为类型的数组,长度为5,这个数组能装5个人,每个元素的初始值为null
        Person[] ps = new Person[5];

        //Java中,只有对象才可以使用属性和方法
        Person p1 = new Person();
        p1.name = "张三";
        p1.sex = "男";
        p1.age = 19;

        //将创建好的对象,放入数组中
        ps[0] = p1;

        //Java中,只有对象才可以使用属性和方法
        Person p2 = new Person();
        p2.name = "李四";
        p2.sex = "女";
        p2.age = 25;


        ps[1] = p2;

        Person p3 = new Person();
        p3.name = "王五";
        p3.sex = "男";
        p3.age = 29;

        ps[2] = p3;

        //从数组中获取对象并输出
        for (int i = 0; i < ps.length; i++) {
            if (ps[i] != null) {
                System.out.print("name:" + ps[i].name + "  ");
                System.out.print("sex:" + ps[i].sex + "  ");
                System.out.print("age:" + ps[i].age);
                System.out.println();
            }
        }
    }
}

输出结果

name:张三  sex:男  age:19
name:李四  sex:女  age:25
name:王五  sex:男  age:29

数组

1.数组的定义

public class ArrayDemo01 {
    public static void main(String[] args) {
        //数据类型[] 名称 = new 数据类型[长度]
        //1.先声明,后赋值
        int[] num1 = new int[3];
        num1[0] = 3;
        num1[1] = 1;
        num1[2] = 2;

        //2.声明数组的同时为其赋值,元素的个数就是数组的长度
        int[] num2;
        num2 = new int[]{45, 96, 72};

        //3.直接为数组赋值
        int[] num3 = {65, 959, 626};
    }
}

2.给数组赋值,并遍历数组

public class ArrayDemo02 {
    public static void main(String[] args) {

        //Scanner类:这是一个用于扫描输入文本的新的实用程序
        Scanner in = new Scanner(System.in);

        //定义数组
        int[] num = new int[5];
        for (int i = 0; i < num.length; i++) {
            System.out.println("请输入第" + (i + 1) + "个元素:");
            //接收键盘输入的数据
            num[i] = in.nextInt();
        }
        System.out.print("数组元素为:");
        //遍历数组
        for (int nums : num
        ) {
            System.out.print(nums + "  ");
        }
    }
}

3.数组的工具类

3.1 asListDemo

import java.util.Arrays;
import java.util.List;

/**
 * 将一个数组转变成一个List,注意这个List时定长的,企图添加或者删除数据都会报错
 */
public class asListDemo {
    public static void main(String[] args) {
        Integer[] arrint = new Integer[]{156,99,75,62,47,53};
        List<Integer> li = Arrays.asList(arrint);
        System.out.println(li);
    }

3.2 binarySearchDemo

import java.util.Arrays;

/**
 * 通过二分查找法对己排序的数组进行查找
 */
public class binarySearchDemo {
    public static void main(String[] args) {
        String str[] = {"s2","s4","s1","s3"};
        Arrays.sort(str);
        System.out.println(Arrays.toString(str));
        //ans:返回的值为查询的目标在数组中的下标
        int ans = Arrays.binarySearch(str,"s1");
        System.out.println(ans);
    }
}

3.3 copyOfDemo

import java.util.Arrays;

/**
 * 数组拷贝
 */
public class copyOfDemo {
    public static void main(String[] args) {
        String str[] = {"s2","s4","s1","s3"};
        String str2[] = Arrays.copyOf(str,str.length);
        System.out.println(Arrays.toString(str2));
    }
}

3.4 copyOfRangeDemo

import java.util.Arrays;

/**
 * 数组拷贝,指定一定的范围
 */
public class copyOfRangeDemo {
    public static void main(String[] args) {
        String str[] = {"s2","s4","s1","s3"};
        String str2[] = Arrays.copyOfRange(str,1,3);//[1,3)
        System.out.println(Arrays.toString(str2));
    }
}

3.5 fillDemo

import java.util.Arrays;

/**
 * 给数组赋值。填充数组之用。
 */
public class fillDemo {
    public static void main(String[] args) {
        String str[] = {"s2","s4","s1","s3",null};
        System.out.println(Arrays.toString(str));
        Arrays.fill(str,"s5");
        System.out.println(Arrays.toString(str));
    }
}

3.6 sortDemo

import java.util.Arrays;

/**
 * 数组排序
 */
public class sortDemo {
    public static void main(String[] args) {
        //基础类型
        int a[] = new int[]{15,86,45,35,93,96,31};
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));

        //String类型(Object)
        String str[] = {"s2","s4","s1","s3"};
        Arrays.sort(str);
        System.out.println(Arrays.toString(str));
    }
}

常见的排序法

1.冒泡排序法

代码

public class MaoPao {
    /**
     * 冒泡排序法
     * @param args
     */
    public static void main(String[] args) {
        //1.准备需要排序的数组
        int arr[] = {56, 86, 18, 38, 95, 75, 32, 85};

        System.out.print("冒泡排序前的数据为:");
        for (int arrs1 : arr
        ) {
            System.out.print(arrs1 + " ");
        }
        System.out.println();

        //2.准备一个中间变量,用于交换数据
        int temp = 0;
        for (int i = 0; i < arr.length - 1; i++) {  //冒泡排序法,循环的轮数为数组长度-1
            for (int j = 0; j < arr.length - i - 1; j++) {  //随着轮数的增加,比较的次数在递减
                //相邻的数据进行比较
                //前一个数据与后一个数据进行比较,比较后交换
                if (arr[j] > arr[j + 1]) {  //当前一个数据大于后一个时,替换,末尾为最大数
                    temp = arr[j + 1];
                    arr[j + 1] = arr[j];
                    arr[j] = temp;
                }
            }
            System.out.print("第" + (i + 1) + "次冒泡排序后的结果为:");
            for (int arrs2 : arr
            ) {
                System.out.print(arrs2 + " ");
            }
            System.out.println();

        }
        System.out.print("冒泡排序后的最终结果为:");
        for (int arrs : arr
        ) {
            System.out.print(arrs + " ");
        }
    }
}

执行结果

冒泡排序前的数据为:56 86 18 38 95 75 32 851次冒泡排序后的结果为:56 18 38 86 75 32 85 952次冒泡排序后的结果为:18 38 56 75 32 85 86 953次冒泡排序后的结果为:18 38 56 32 75 85 86 954次冒泡排序后的结果为:18 38 32 56 75 85 86 955次冒泡排序后的结果为:18 32 38 56 75 85 86 956次冒泡排序后的结果为:18 32 38 56 75 85 86 957次冒泡排序后的结果为:18 32 38 56 75 85 86 95 
冒泡排序后的最终结果为:18 32 38 56 75 85 86 95 

2.插入排序法

public class InsertSort {

    /**
     * 插入排序法
     * @param args
     */
    public static void main(String[] args) {
        int arr[] = {56, 86, 18, 38, 95, 75, 32, 85};
        System.out.print("排序前的数据值为:");
        for (int i : arr
        ) {
            System.out.print(i+" ");
        }
        System.out.println();
        for (int i = 1; i < arr.length; i++) {
            //定义插入数据
            int insertVal = arr[i];
            //定义数据对应的下标
            int index = i - 1;
            //寻找最小的数据
            //insertVal为后一个元素   arr[index]为前一个元素
            while (index >= 0 && insertVal < arr[index]) {
                arr[index + 1] = arr[index];
                index--;
            }
            //当元素大于前一个值时,直接赋值在前一个值的后一个元素
            arr[index + 1] = insertVal;
        }
        System.out.print("插入排序的结果为:");
        for (int i : arr
        ) {
            System.out.print(i+" ");
        }
    }
}

3.选择排序法

public class SelectSort {
    /**
     * 选择排序法:每次将循环的第一个元素获取出来,到剩余元素中进行比较,找到最大或最小值,替换到每次循环
     * 		      的第一个元素中
     */
    public static void main(String[] args) {
        //1.准备需要排序的数组
        int arr[] = {56, 86, 18, 38, 95, 75, 32, 85};

        System.out.print("选择排序前的数据为:");
        for (int i : arr) {
            System.out.print(i + " ");
        }
        System.out.println();
        int temp = 0;
        for (int i = 0; i < arr.length; i++) {
            //选择区域的第一个元素
            int minIndex = i;
            int minVal = arr[i];
            //寻找选择区域中的最小值
            for (int j = i + 1; j < arr.length; j++) {
                if (minVal > arr[j]) {
                    minVal = arr[j];  //记录最小值
                    minIndex = j;     //记录最小值下标

                }
            }
            temp = arr[i];
            arr[i] = minVal;
            arr[minIndex] = temp;
        }
        System.out.print("选择排序后的结果为:");
        for (int i : arr) {
            System.out.print(i + " ");
        }
    }
}

作业

通过代码实现一个简易的商城,数据缓存,不包含数据库内容

MyShop.java

import java.util.Scanner;

public class MyShop {
    public static void main(String[] args) {

        //商品1
        shop s1 = new shop();
        s1.shopId = 1;
        s1.shopName = "TCL彩电    ";
        s1.shopPrice = 2100;
        s1.shopNum = 20;
        s1.shopAddress = "中国";
        s1.buyNum = 0;

        //商品2
        shop s2 = new shop();
        s2.shopId = 2;
        s2.shopName = "飞利浦油烟机";
        s2.shopPrice = 3600;
        s2.shopNum = 5;
        s2.shopAddress = "德国";
        s2.buyNum = 0;



        Scanner sc = new Scanner(System.in);
        System.out.println("----------------登录注册----------------");
        System.out.println("                 1.登录                 ");
        System.out.println("                 2.注册                 ");
        System.out.println("----------------------------------------");
        System.out.print("请选择:");
        int num1 = sc.nextInt();
        System.out.println();
        switch (num1) {
            case 1:
                break;
            case 2:
                MyShop myShop = new MyShop();
                myShop.register(s1,s2);
                break;
            default:

        }

    }

    public void view(shop s1,shop s2) {
        System.out.println("======================大利嘉商城=========================");
        System.out.println("编号      名称           单价       数量    原产地");
        System.out.println(s1.toString());
        System.out.println(s2.toString());
        System.out.println("========================================================");
        System.out.print("请选择你要购买的商品:");
    }



    public void register(shop s1,shop s2) {
        Scanner in = new Scanner(System.in);
        System.out.print("请输入用户名:");
        String uName = in.next();
        System.out.print("请输入密码:");
        String uPwd = in.next();
        System.out.print("请输入余额宝金额:");
        int uMoney = in.nextInt();
        System.out.println("注册成功!");
        int sum = 0;
        boolean flag = true;
        while (flag) {
            MyShop ms2 = new MyShop();
            ms2.view(s1,s2);
            int num2 = in.nextInt();
            switch (num2) {
                case 1:
                    sum += 2100;
                    s1.buyNum++;
                    s1.shopNum--;
                    System.out.println("您刚才选择了TCL彩电,请问您要购买的数量:1");
                    System.out.print("请问您要继续购物吗?");
                    String check1 = in.next();
                    char check2 = check1.toCharArray()[0];
                    switch (check2) {
                        case 'y':
                            break;
                        case 'n':
                            ms2.view2(s1,s2,sum, uMoney);
                            flag = false;
                            break;
                    }
                    break;
                case 2:
                    sum += 3600;
                    s2.buyNum++;
                    s2.shopNum--;
                    System.out.println("您刚才选择了飞利浦油烟机,请问您要购买的数量:1");
                    System.out.print("请问您要继续购物吗?");
                    String check3 = in.next();
                    char check4 = check3.toCharArray()[0];
                    switch (check4) {
                        case 'y':
                            break;
                        case 'n':
                            ms2.view2(s1,s2,sum, uMoney);
                            flag = false;
                            break;
                    }
                    break;
            }
        }

    }

    public void view2(shop s1,shop s2,int sum, int umoney) {
        Scanner sc2 = new Scanner(System.in);
        System.out.println("您的购买清单");

        //购买清单
        System.out.println("======================大利嘉商城=========================");
        System.out.println("编号      名称           单价       数量    原产地");
        System.out.println(s1.toString2());
        System.out.println(s2.toString2());
        System.out.println("========================================================");
        System.out.print("请选择你要购买的商品:");


        System.out.println("本次购物您共消费:¥" + sum + "  请问你要现在支付吗?");
        String check5 = sc2.next();
        char check6 = check5.toCharArray()[0];
        switch (check6) {
            case 'y':
                if (umoney > sum) {
                    System.out.println("恭喜付款成功,您还剩:¥" + (umoney - sum));
                } else {
                    System.out.print("你的余额宝余额不足,请问你要充值吗?");
                    String check7 = sc2.next();
                    char check8 = check7.toCharArray()[0];
                    switch (check6) {
                        case 'y':
                            System.out.print("请输入充值金额:");
                            int conMoney = sc2.nextInt();
                            umoney += conMoney;
                            System.out.println("确认付款吗?");
                            String queren = sc2.next();
                            if (queren.equals("y")) {
                                System.out.println("恭喜付款成功,您还剩:¥" + (umoney - sum));
                                break;
                            }
                        case 'n':
                            System.out.println("付款失败!");
                            break;
                    }
                }
                break;
            case 'n':
                System.out.println("付款失败!");
                break;
        }
    }
}

shop.java

class shop {

    int shopId;
    String shopName;
    int shopPrice;
    int shopNum;
    String shopAddress;
    int buyNum;

    public shop() {
    }

    public shop(int shopId, String shopName, int shopPrice, int shopNum, String shopAddress, int buyNum) {
        this.shopId = shopId;
        this.shopName = shopName;
        this.shopPrice = shopPrice;
        this.shopNum = shopNum;
        this.shopAddress = shopAddress;
        this.buyNum = buyNum;
    }

    @Override
    public String toString() {
        return " "+shopId +
                "\t\t" + shopName +
                "\t\t" + shopPrice +
                "\t\t" + shopNum +
                "\t\t" + shopAddress;
    }

    public String toString2() {
        return " "+shopId +
                "\t\t" + shopName +
                "\t\t" + shopPrice +
                "\t\t" + buyNum +
                "\t\t" + shopAddress;
    }
}

运行演示

----------------登录注册----------------
                 1.登录                 
                 2.注册                 
----------------------------------------
请选择:2

请输入用户名:admin
请输入密码:123456
请输入余额宝金额:2000
注册成功!
======================大利嘉商城=========================
编号      名称           单价       数量    原产地
 1		TCL彩电    		2100		20		中国
 2		飞利浦油烟机		3600		5		德国
========================================================
请选择你要购买的商品:2
您刚才选择了飞利浦油烟机,请问您要购买的数量:1
请问您要继续购物吗?y
======================大利嘉商城=========================
编号      名称           单价       数量    原产地
 1		TCL彩电    		2100		20		中国
 2		飞利浦油烟机		3600		4		德国
========================================================
请选择你要购买的商品:1
您刚才选择了TCL彩电,请问您要购买的数量:1
请问您要继续购物吗?n
您的购买清单
======================大利嘉商城=========================
编号      名称           单价       数量    原产地
 1		TCL彩电    		2100		1		中国
 2		飞利浦油烟机		3600		1		德国
========================================================
请选择你要购买的商品:本次购物您共消费:5700  请问你要现在支付吗?
y
你的余额宝余额不足,请问你要充值吗?y
请输入充值金额:5000
确认付款吗?
y
恭喜付款成功,您还剩:1300

Process finished with exit code 0


总结

以上就是今天要讲的内容,本文仅仅简单介绍了面向对象的使用,数组的方法,常用排序法的理解。
通过作业对今日所学内容进行了总结和复习。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值