【JAVA零基础入门系列】Day12 Java类的简单应用

简介:   【JAVA零基础入门系列】(已完结)导航目录Day1 开发环境搭建Day2 Java集成开发环境IDEADay3 Java基本数据类型Day4 变量与常量Day5 Java中的运算符Day6 Java字符串Day7 Java输入与输出Day8 Java的控制流程Day9 Ja...

  【JAVA零基础入门系列】(已完结)导航目录

  俗话说的好,实践出真知,所以除了理论知识掌握扎实以外,更重要的是要多加操练,这样才能掌握核心科技。

  今天我们就用刚学会的类来实践一下,目标便是完成上一篇中的剁手任务。

  我们的商品类已经准备好了,代码重新罗列一次,这里增加了一个重载方法,关于重载这里不过多介绍,以后会专门文章介绍,这里把它当成一个普通方法就好了,主要用来比较两个商品是否相等,如果对代码不熟悉的话可以再返回去看一下上一篇文章。

  这里顺便介绍一下Java注释的正确使用姿势。注释是插在源代码中间用于对代码进行说明的文字,不会被编译和执行。代码不仅仅是用来编译的,更是用来阅读的,因此写上足够多的注释是有必要的,这样可以保证自己在以后回过头来看自己写的破代码的时候写的是什么鬼,如果将自己写代码的思路也记录下来的话,那就更方便自己以后的对比提升了。

  Java中的注释方法主要有三种:

  1.单行注释,使用//

  2.多行注释,使用/* 代码 */

  3.文档注释,使用/** 代码 */ 这种格式是为了便于javadoc程序自动生成文档。这里先不做介绍,之后会又专门一篇来做讲解。

/*GOODS类
主要用于记录商品信息,并提供商品信息的访问方法
*/
public
class Goods{
  //实例域,用于存储商品信息
private String title=""; private double price=0.0; private String link = "";
  
  //构造器1
public Goods(String aTitle,double aPrice,String aLink){ title = aTitle; price = aPrice; link = aLink; }   //构造器2 public Goods(String aTitle,double aPrice){ title = aTitle; price = aPrice; link = "www.baidu.com"; }   //构造器3 public Goods(double aPrice){ price = aPrice; title = "Goods"; link = "www.baidu.com"; }   //取商品标题 public String getTitle(){ return title; }   //取商品价格 public double getPrice(){ return price; }   //取商品链接 public String getLink() { return link; }   //设置商品标题 public void setTitle(String aTitle){ title = aTitle; }   //设置商品价格 public void setPrice(double aPrice){ price = aPrice; }   //设置商品链接 public void setLink(String aLink){ link = aLink; }   //输出商品信息 public void print(){ System.out.println("title:"+title+" price:"+price+" link:"+link); }

  //重载equals判断方法
  @Override
  public boolean equals(Object obj) {
   return super.equals(obj);
  }
}

  这样一注释,这个类的功能就很清晰了,人家一看就知道你要做什么瞎操作了,当然,如果每次使用类都要上类的源码查看的话,也确实不方便,所以才有了Javadoc这样的工具,这里因为还没有介绍,所以先不使用。

  接下来,我们需要一个购物车来存放商品。因为只需要管理一个购物车,所以预算类就先不写了,不然也有些太小题大做了。

package pers.frank.test;

/**
 * Cart类
 * 购物车类用于管理商品和预算信息
 * 提供添加商品,获取预算,修改预算等方法
 */
public class Cart {
    //实例域
    Goods[] goodsList = new Goods[20];//商品列表,因为还没有介绍列表跟集合,所以先使用数组存储,先假设你不会买超过20件商品
    int goodsNum = 0;//商品数量
    double budget = 0.0;//预算
    double totalPrices = 0.0;//当前商品总价

    //构造函数
    public Cart(double aBudget){
        budget = aBudget;
    }

    //获取商品总价
    public double getTotalPrices() {
        return totalPrices;
    }

    //获取预算
    public double getBudget() {
        return budget;
    }

    //修改预算
    public void setBudget(double aBudget) {
        budget = aBudget;
    }

    //添加商品,预算足够则返回真,不够则返回假
    public boolean addGoods(Goods aGoods){
        //先判断预算
        if(totalPrices + aGoods.getPrice() > budget){
            return false;
        }
        //预算足够则添加
        //遍历数组,寻找元素为null的位置
        int i = 0;
        for(; i < goodsList.length; i++){
            if(goodsList[i] == null) {
                goodsList[i] = aGoods;
                break;
            }
        }
        if(i == goodsList.length)
            return false;
        totalPrices = totalPrices + aGoods.getPrice();
        goodsNum++;
        return true;
    }
//遍历输出购物车中的商品信息
    public void showGoodsList(){
        System.out.println("购物车内商品数量:" + goodsNum + " 商品总价:" + totalPrices);
        for( Goods a: goodsList){
            if (a == null) continue;
            a.print();
        }
    }
}

  这里的代码没有太多需要介绍的东西,注释里已经写的很详细了。关于数据描述和使用的类已经构建好了,接下来只需要使用它们就可以了。

public class Test{
    public static void main(String[] args) {
        double budget = 20000;//预算
        Cart myCart = new Cart(budget);//实例化一个购物车对象
        //创建商品对象数组
        Goods[] goodsList = new Goods[3];
        goodsList[0] = new Goods("goodsA",10000,"link1");
        goodsList[1] = new Goods("goodsB",6000,"link2");
        goodsList[2] = new Goods("goodsC",6000,"link3");

        //循环添加商品
        for (int i = 0; i < goodsList.length; i++){
            if (myCart.addGoods(goodsList[i]) == true){
                //添加成功
                System.out.println("商品添加成功!标题:" + goodsList[i].getTitle() + " 价格:" + goodsList[i].getPrice() + " 链接:"+ goodsList[i].getLink());
            }else {
                //添加失败
                System.out.println("商品添加失败!当前预算:" + myCart.getBudget() + " 当前商品总价:"+ myCart.getTotalPrices()+" 要添加的商品价格:" + goodsList[i].getPrice());
                break;
            }
        }

        //打印购物车内所有商品信息
        myCart.showGoodsList();
    }
}

  输出如下:

商品添加成功!标题:goodsA 价格:10000.0 链接:link1
商品添加成功!标题:goodsB 价格:6000.0 链接:link2
商品添加失败!当前预算:20000.0 当前商品总价:16000.0 要添加的商品价格:6000.0
购物车内商品数量:2 商品总价:16000.0
title:goodsA price:10000.0 link:link1
title:goodsB price:6000.0 link:link2

  我们的类的简单应用就编写完成了,当然这个类并不完善,有些更复杂的概念还没有介绍,这里只是为了演示类的正确使用姿势而设计的,不要过于纠结于细节。

  我们可以看出,测试用的主要代码其实很少,因为我们把具体实现都封装在了类里,只需要按规则使用类中的方法就可以了。这就好比盖房子,不是直接用石头木材堆出来的,而是先加工成砖瓦门窗,然后再搭建。使用这些砖瓦门窗当然要比直接使用石头木材方便得多。使用类的便利性也在于此。我们把商品跟购物车类构建好之后,如果某些地方需要修改,只需要在相应的类中进行修改即可,只要对外提供的方法没有改变,那么调用这些代码的其他代码就不需要进行修改,这样就能降低代码的耦合度。

  至此,本篇就结束了,之后会介绍关于类的更多内容,欢迎大家继续关注!

真正重要的东西,用眼睛是看不见的。
相关文章
|
16天前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
|
7天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
|
25天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
24天前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
43 17
|
16天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
18天前
|
SQL Java 数据库连接
从理论到实践:Hibernate与JPA在Java项目中的实际应用
本文介绍了Java持久层框架Hibernate和JPA的基本概念及其在具体项目中的应用。通过一个在线书店系统的实例,展示了如何使用@Entity注解定义实体类、通过Spring Data JPA定义仓库接口、在服务层调用方法进行数据库操作,以及使用JPQL编写自定义查询和管理事务。这些技术不仅简化了数据库操作,还显著提升了开发效率。
30 3
|
20天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
70 4
|
21天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
41 2
|
25天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
28天前
|
SQL 监控 Java
技术前沿:Java连接池技术的最新发展与应用
本文探讨了Java连接池技术的最新发展与应用,包括高性能与低延迟、智能化管理和监控、扩展性与兼容性等方面。同时,结合最佳实践,介绍了如何选择合适的连接池库、合理配置参数、使用监控工具及优化数据库操作,为开发者提供了一份详尽的技术指南。
31 7
下一篇
无影云桌面