这个系列是对javaSE课程代码的回顾,所有Demo都是亲自动手实现的,并做了小小的change,为了方便自己理解和后期复习,代码里加了大量的注释。现对所有知识点的代码进行复习整理,进一步理解、完善代码,对注释进行补充。其中重要的知识点会单独说明,但主要以代码为主。
说明:博客是对学习内容的巩固,很多注释是为了自己理解,所以不会很专业。
------------------------------------------------------ArrayList------------------------------------------------
package cn.tjpu.javase04.ArrayList; import java.util.ArrayList; /** * ArrayList用法,<>中填入的是泛型参数,即数据类型 * ArrayList是一种集合数据类型,可以装入任意多个数据且长度可变 * size():ArrayList长度; add(值):添加数据 ;get(索引):读数据 ;remove(索引):移除数据 */ public class ArrayListDemo01 { public static void main(String[] args) { // 创建一个用来装整数数据的ArrayList对象 ArrayList<Integer> arylt = new ArrayList<Integer>(); // 向arraylist中添加数据 arylt.add(3); arylt.add(4); arylt.add(7); arylt.add(1); // 从arraylist中读取数据 int a = arylt.get(2); int b = arylt.get(0); System.out.println(a + "," + b); System.out.println("------------------------------"); // 遍历arraylist,按照角标顺序打印 for (int i = 0; i < arylt.size(); i++) { System.out.println(arylt.get(i)); } System.out.println("------------------------------"); // 移除arraylist中数据 arylt.remove(1); for (int i = 0; i < arylt.size(); i++) { System.out.println(arylt.get(i)); } System.out.println("------------------------------"); // 更改list中指定位置的数据 arylt.set(2, arylt.get(0)); // 可直接打印list System.out.println(arylt); } }
------------------------------------------------------各种方法定义------------------------------------------------
package cn.tjipu.javase04.function; /** * 定义不同方法的类 */ public class NumberPair { public int a; public int b; //无参有返回值的方法 public int GetSum() { int sum = this.a + this.b; return sum; } // 没有返回值的方法 public void say() { System.out.println("我吃了"); } // 有参没有返回值的方法,同名方法,参数列表不一样,叫方法的重载 public void say(String name) { System.out.println(name + "吃了"); } // 带多个参数但没有返回值的方法 public void say(String name1, String name2) { System.out.println(name1 + "和" + name2 + "都吃了"); } // 有参且有返回值的方法 public int Sum(int a, int b) { return a + b; } }
package cn.tjipu.javase04.function; /** * 不同方法的测试 */ public class FunctionDemo1 { public static void main(String[] args) { NumberPair pair = new NumberPair(); //给成员变量赋值 pair.a = 10; pair.b = 33; /* //方法未封装,直接在主程序中计算 int sum=pair.a+pair.b; System.out.println(sum); */ // 在类中定义方法,用实例化的对象调用方法计算 System.out.println(pair.GetSum()); // 调没有返回值的方法 pair.say(); // 调用有参数,但没有返回值的方法 pair.say("小明"); pair.say("小明", "小红"); // 调用有参且有返回值的方法 int sum = pair.Sum(10, 2); System.out.println(sum); } }
------------------------------------------------静态方法、list排序--------------------------------------------
package cn.tjipu.javase04.function; import java.util.ArrayList; /** * list处理工具类(都是静态方法) * 静态方法 : * 和具体对象没有任何关系的方法(没有用到类的成员变量)可以定义为静态方法--类的方法 * 静态方法直可以用类名来调用 */ public class ListUtils { /** * 该方法是对传入的list排序 */ public static void sort(ArrayList<Integer> list){ for(int i=0;i<list.size()-1;i++){ for(int j=0;j<list.size()-1-i;j++){ if(list.get(j)>list.get(j+1)){ //先把list中第j和j+1位置的内容取出来 int tmp=list.get(j);//把j的值赋给tmp //再利用set方法将调换过的值放到指定列表的位置 list.set(j, list.get(j+1));//把j+1的值赋给j list.set(j+1, tmp);// 把tmp的值赋给j+1 } } } } /** * 该方法是从传入的list中找最大值(找最大值需要一个临时变量) */ public static int getMax(ArrayList<Integer> list){ int tmp=list.get(0); for(int i=1;i<list.size();i++){ if(list.get(i)>tmp){ tmp=list.get(i); } } return tmp; } /** * 该方法是从传入的list中找最小值(改变判断语句中的符号) */ public static int getMin(ArrayList<Integer> list){ int tmp=list.get(0); for(int i=1;i<list.size();i++){ if(list.get(i)<tmp){ tmp=list.get(i); } } return tmp; } /** * 该方法是求传入的list的数据平均值 */ public static float getAvg(ArrayList<Integer> list){ int sum=0; for(int i=0;i<list.size();i++){ sum+=list.get(i); } return ((float)sum/list.size()); } }
package cn.tjipu.javase04.function; import java.util.ArrayList; /** * 测试list处理工具类 ,直接用类调用方法 */ public class ListUtilsTest { public static void main(String[] args) { // 造一些ArrayList的数据 ArrayList<Integer> list = new ArrayList<Integer>(); list.add(3); list.add(4); list.add(1); list.add(9); list.add(5); // 测试list排序,方法无返回值,执行完方法list覆盖原有顺序,遍历打印即排好的顺序 ListUtils.sort(list); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } System.out.println(list); // 测试最大值 int max = ListUtils.getMax(list); System.out.println("max is:" + max); // 测试最小值 int min = ListUtils.getMin(list); System.out.println("min is:" + min); // 测试平均值 float avg = ListUtils.getAvg(list); System.out.println("avg is:" + avg); } }
------------------------------------------------------订单管理------------------------------------------------
package cn.tjipu.javase04.ProductOder; /** * 用户类 */ public class User { public String userId; public String userName; public String vipLeval; //空参构造方法 public User() { } //带参构造方法 public User(String userId, String userName, String vipLeval) { this.userId = userId; this.userName = userName; this.vipLeval = vipLeval; } }
package cn.tjipu.javase04.ProductOder; /** * 商品类 */ public class Product { public String pId; public String pName; public float price; public int Number; public Product() { } public Product(String pId, String pName, float price, int Number) { this.pId = pId; this.pName = pName; this.price = price; this.Number = Number; } public String toString() { String tmp = this.pId + "," + this.pName + "," + this.price + "," + this.Number; return tmp; } public float GetAmount() { return this.price * this.Number; } }
package cn.tjipu.javase04.ProductOder; import java.util.ArrayList; /** * 订单类 */ public class Order { // 订单id public String oderId; // 订单所属用户(用户对象) public User user; // 订单所包含的商品(不定数量个商品对象) public ArrayList<Product> prods; // 订单总金额 public float amountFee; // 订单应付金额 public float topayFee; // 计算订单总金额的方法 public void setamountFee() { float sum = 0; for (int i = 0; i < this.prods.size(); i++) { sum += this.prods.get(i).price * this.prods.get(i).Number; } this.amountFee = sum; } // 计算打折后实际应付的金额 public void settopayFee() { float tmp = this.amountFee;// 已取得上一个方法的值,赋给一个临时变量方便后续计算 // 根据总金额打折 if (this.amountFee > 1000 && this.amountFee <= 2000) { tmp = this.amountFee * 0.98f;// 根据总金额打折后的实际金额 } if (this.amountFee > 2000 && this.amountFee <= 3000) { tmp = this.amountFee * 0.95f; } if (this.amountFee >= 3000) { tmp = this.amountFee * 0.90f; } // 根据vip等级打折(在总金额折后的基础上) if (user.vipLeval.equals("黄金vip")) { tmp = this.amountFee * 0.98f;// 根据vip等级打折后的实际金额 } if (user.vipLeval.equals("钻石vip")) { tmp = this.amountFee * 0.96f; } if (user.vipLeval.equals("至尊vip")) { tmp = this.amountFee * 0.92f; } // 把计算出来的结果赋值给toPayFee成员变量 this.topayFee = tmp; } }
package cn.tjipu.javase04.ProductOder; /** * 订单管理测试 */ import java.util.ArrayList; public class OrderTest { public static void main(String[] args) { // 创建一个订单 Order o1 = new Order(); o1.oderId = "001"; // 创建订单所属用户对象 User zs = new User("111", "张三", "黄金vip");// 先创建一个用户对象 o1.user = zs; // 创建商品列表 ArrayList<Product> prod = new ArrayList<Product>(); // 造一些商品数据 // 1.使用无参构造方法 Product pt1 = new Product(); pt1.pId = "101"; pt1.pName = "牛奶"; pt1.price = 5.5f; pt1.Number = 2; // 2.使用有参构造方法(可以直接给对象初始化) Product pt2 = new Product("102", "面包", 3.5f, 3); Product pt3 = new Product("103", "火腿", 1.5f, 5); // 将商品数据加入到商品列表中 prod.add(pt1); prod.add(pt2); prod.add(pt3); // 创建订单所包含商品 o1.prods = prod; // 用实例化的order对象调用方法setAmountFee()来计算总金额并给对象上的属性amountFee赋值 o1.setamountFee(); // 用实例化的order对象调用方法setToPayFee()来应付金额并给对象上的属性toPayFee赋值 o1.settopayFee(); // 调用成员变量打印 System.out.println("总金额:" + o1.amountFee); System.out.println("应付金额:" + o1.topayFee); } }