【JAVA零基础入门系列】Day12 Java类的简单应用
【JAVA零基础入门系列】(已完结)导航目录
- Day1 开发环境搭建
- Day2 Java集成开发环境IDEA
- Day3 Java基本数据类型
- Day4 变量与常量
- Day5 Java中的运算符
- Day6 Java字符串
- Day7 Java输入与输出
- Day8 Java的控制流程
- Day9 Java中的那个大数值
- Day10 Java中的数组
- Day11 Java中的类和对象
- Day12 Java类的简单应用
- Day13 Java类的继承与多态
- Day14 Java对象的克隆
- Day15 对象的比较
俗话说的好,实践出真知,所以除了理论知识掌握扎实以外,更重要的是要多加操练,这样才能掌握核心科技。
今天我们就用刚学会的类来实践一下,目标便是完成上一篇中的剁手任务。
我们的商品类已经准备好了,代码重新罗列一次,这里增加了一个重载方法,关于重载这里不过多介绍,以后会专门文章介绍,这里把它当成一个普通方法就好了,主要用来比较两个商品是否相等,如果对代码不熟悉的话可以再返回去看一下上一篇文章。
这里顺便介绍一下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
我们的类的简单应用就编写完成了,当然这个类并不完善,有些更复杂的概念还没有介绍,这里只是为了演示类的正确使用姿势而设计的,不要过于纠结于细节。
我们可以看出,测试用的主要代码其实很少,因为我们把具体实现都封装在了类里,只需要按规则使用类中的方法就可以了。这就好比盖房子,不是直接用石头木材堆出来的,而是先加工成砖瓦门窗,然后再搭建。使用这些砖瓦门窗当然要比直接使用石头木材方便得多。使用类的便利性也在于此。我们把商品跟购物车类构建好之后,如果某些地方需要修改,只需要在相应的类中进行修改即可,只要对外提供的方法没有改变,那么调用这些代码的其他代码就不需要进行修改,这样就能降低代码的耦合度。
至此,本篇就结束了,之后会介绍关于类的更多内容,欢迎大家继续关注!
【JAVA零基础入门系列】Day12 Java类的简单应用的更多相关文章
- 【JAVA零基础入门系列】Day11 Java中的类和对象
今天要说的是Java中两个非常重要的概念--类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外观特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征 ...
- 【JAVA零基础入门系列】Day13 Java类的继承与多态
继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽) 开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟 ...
- 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA
开发环境搭建好之后,还需要一个集成开发环境也就是IDE来进行编程.这里推荐的IDE是IDEA,那个老掉牙的Eclipse还是先放一边吧,(手动滑稽). IDEA的下载地址:http://www.jet ...
- 【JAVA零基础入门系列】Day4 变量与常量
这一篇主要讲解Java中的变量,什么是变量,变量的作用以及如何声明,使用变量. 那么什么是变量?对于初学者而言,可以将变量理解为盒子,这些盒子可以用来存放数据,不同类型的数据需要放在对应类型的盒子里. ...
- 【JAVA零基础入门系列】Day5 Java中的运算符
运算符,顾名思义就是用于运算的符号,比如最简单的+-*/,这些运算符可以用来进行数学运算,举个最简单的栗子: 已知长方形的长为3cm,高为4cm,求长方形的面积. 好,我们先新建一个项目,命名为Rec ...
- 【JAVA零基础入门系列】Day6 Java字符串
字符串,是我们最常用的类型,每个用双引号来表示的串都是一个字符串.Java中的字符串是一个预定义的类,跟C++ 一样叫String,而不是Char数组.至于什么叫做类,暂时不做过多介绍,在之后的篇章中 ...
- 【JAVA零基础入门系列】Day8 Java的控制流程
什么是控制流程?简单来说就是控制程序运行逻辑的,因为程序一般而言不会直接一步运行到底,而是需要加上一些判断,一些循环等等.举个栗子,就好比你准备出门买个苹果,把这个过程当成程序的话,可能需要先判断一下 ...
- 【JAVA零基础入门系列】Day9 Java中的那个大数值
什么是大数值?用脚趾头想也知道,当然是"大"的数值(233).Java中有两个用于表示大数值的类,BigInteger和BigDecimal,那到底能表示多大的数值呢?理论上,可以 ...
- 【JAVA零基础入门系列】Day10 Java中的数组
什么是数组?顾名思义,就是数据的组合,把一些相同类型的数放到一组里去. 那为什么要用数组呢?比如需要统计全班同学的成绩的时候,如果给班上50个同学的成绩信息都命名一个变量进行存储,显然不方便,而且在做 ...
随机推荐
- jquery ocupload一键上传文件应用
直接上栗子 这是官方文档栗子 var myUpload = $(element).upload({ name: 'file', action: '', enctype: 'multipart/form ...
- JVM菜鸟进阶高手之路十二(jdk9、JVM方面变化, 蹭热度)
转载请注明原创出处,谢谢! 经过 4 次跳票,历经曲折的 Java 9 正式版终于发布了!今天看着到处都是jdk9发布了,新特性说明,心想这么好的蹭热度计划能错过嘛,哈哈,所以就发了这篇文章. 目前j ...
- 封装好的图片滑动框架(AndroidImageSlider)
前言 广告轮播条的重要性不言而喻.在很多类型app中出场率都很高. 今天给大家介绍一个轮播图开源项目,这个项目把轮播图需要的ViewPager跟计时器做了封装,使用极其方便,支持gradle在线依赖. ...
- Spring Boot Document Part II(上)
Part II. Getting started 这一章内容适合刚接触Spring Boot或者"Spring"家族的初学者!随着安装指导说明,你会发现对Spring boot有一 ...
- The area 积分积分
The area Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- Java高新技术 JavaBean内省
Java高新技术 JavaBean内省 知识概要: (1)了解JavaBean内省 (2)JavaBean的简单内省操作 ...
- KMP算法的细节问题
preface: 想必,很多人都知道D.E.Knuth与V.R.Pratt和J.H.Morris同时提出所谓的狂拽酷炫屌炸天的KMP算法,在对字符串的匹配(或是字符串的查找)方面表现出比较好的效率,该 ...
- app启动页问题
今天自己做的小作品准备提交,就差一个启动页,各种百度,各种搜,结果还好最后终于出来了,和大家分享一下,这个过程中遇到的各种小问题.(注XCode版本为7.2) 1.启动页一般都是图片,因为苹果有4,4 ...
- Appium python自动化测试系列之移动自动化测试前提(一)
1.1 移动自动化测试现状 因为软件行业越来越发达,用户的接受度也在不断提高,所以对软件质量的要求也随之提高,当然这个也要分行业,但这个还是包含了大部分.因为成本.质量的变化现在对自动化测试的重视度越 ...
- MS-DOS命令dir命令详细解析
DOS命令窗口打开方式为Win+R键,打开运行命令,输入 cmd 即可:特殊情况我们要用管理员身份运行DOS,此时就可以在开始菜单-附件-DOS命令,鼠标右键单击命令提示符以管理员身份运行.如果是wi ...