Java基础学习与实践

目录

一、Java基础知识

 二、实践操作

1.这是学习Java的入门的第一个Java程序

代码部分 :

2.让我们试着增加点难度,做一个快递运费计算项目 

以上是该项目的要求 。

Cargo类代码部分:

Cargohandler类代码部分: 

ExpreessSystem类代码部分:

FreshCargoHandler代码部分: 

 运行代码输出结果:

Java编程学习的心得:


一、Java基础知识

  1. 数据类型和变量
    • Java提供了多种数据类型,包括基本数据类型(如整型、浮点型、字符型和布尔型)和引用数据类型(如类、接口、数组等)。
    • 变量用于存储数据,并通过变量名来访问这些数据。
  2. 运算符和表达式
    • Java提供了丰富的运算符,包括算术运算符、关系运算符、逻辑运算符等。
    • 运算符用于操作各种数据类型,进行加减乘除、比较大小、判断条件等操作。
    • 表达式是由运算符和操作数组成的,用于实现各种复杂的计算。
  3. 控制流程
    • 控制流程涉及程序在执行过程中的控制顺序。
    • Java提供了多种控制流程语句,包括条件语句(如if-else)、循环语句(如for、while、do-while)和跳转语句(如break、continue、return)。
  4. 数组和集合
    • 数组用于存储多个相同类型的数据,但长度是固定的。
    • 集合是一种可以动态增加和删除元素的数据结构,Java提供了多种集合类,如ArrayList、LinkedList、HashSet等。
  5. 类和对象
    • Java是一种面向对象的编程语言,类和对象是Java程序中最基本的概念。
    • 类是Java中最基本的组织单位,由属性和方法组成。属性用于描述对象的状态,方法用于定义对象的行为。
    • 对象是类的一个实例,通过创建对象可以访问类的属性和方法。
  6. 继承和多态
    • 继承是面向对象编程中实现代码复用的一种机制,子类可以继承父类的属性和方法,并可以在此基础上进行扩展和修改。
    • 多态是指同一类型的对象在不同的情况下可以表现出不同的行为,通过多态可以提高代码的灵活性和可扩展性。
  7. 其他重要概念
    • Java虚拟机(JVM):Java程序运行在JVM上,JVM负责将Java字节码文件(.class)加载并执行。
    • 接口:Java中的接口是一种特殊的类,它只包含方法的声明而不包含方法的实现。接口用于定义一种规范,实现该接口的类必须实现接口中定义的所有方法。
    • 访问修饰符:Java中的访问修饰符用于控制类、方法、变量等成员的访问权限,包括public、private、protected和默认(无修饰符)四种。
    • 异常处理:Java通过异常处理机制来处理程序运行时的错误和异常情况,包括try-catch-finally语句块和自定义异常类。
  8. 关键字和修饰符
    • final:修饰的实例变量必须显式指定初始值,通常和static一起使用来创建类常量。final类不能被继承,final方法不能被子类重写。
    • static:用于声明独立于对象的静态变量和静态方法。静态变量也称为类变量,无论类实例化多少对象,静态变量只有一份拷贝。
    • abstract:用于声明抽象类和抽象方法。抽象类不能实例化,抽象方法没有具体实现,需要由子类提供实现。

以上是Java基础知识的一些关键内容,掌握这些基础知识对于深入学习Java编程非常重要。

 二、实践操作

1.这是学习Java的入门的第一个Java程序

以下为运行结果: 

代码部分 :

package shenzhe_1;  
  
public class py1 {  
  
    public static void main(String[] args) {  
  
        System.out.print("(9.5*4.5-6.2*3)/(12.3-3.5)=");  
        System.out.println((9.5*4.5-6.2*3)/(12.3-3.5));  
  
    }  
  
}

这段代码的功能是:

  1. 使用 System.out.print 打印出字符串 "(9.5*4.5-6.2*3)/(12.3-3.5)=" 到控制台。
  2. 计算数学表达式 (9.5*4.5-6.2*3)/(12.3-3.5) 的值。
  3. 使用 System.out.println 打印出该数学表达式的值到控制台,并在值后添加一个换行符。

2.让我们试着增加点难度,做一个快递运费计算项目 

 

 

以上是该项目的要求 。

Cargo类代码部分:

package 快递运费计算项目;

public class Cargo {
	long no,phone,receiverPhone;
	String name,receiverAddress,
    receiverName;
	  double weight,charge;
	
	
}

Cargohandler类代码部分: 

package 快递运费计算项目;

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

public class Cargohandler {
    Cargo cargo;
    int area;

    public Cargohandler() {
        cargo = new Cargo();
    }

    public void inputData(long no, String name, long phone, String receiverAddress, String receiverName, long receiverPhone, double weight) {
        cargo.no = no;
        cargo.name = name;
        cargo.phone = phone;
        cargo.receiverAddress = receiverAddress;
        cargo.receiverName = receiverName;
        cargo.receiverPhone = receiverPhone;
        cargo.weight = weight;
        computeCharge(weight, receiverAddress);
    }

    public void computeCharge(double weight, String receiverAddress) {
        List<String> parts = Arrays.asList(
                "广西", "广东", // 0 -1
                "安徽", "湖南", "江苏", "浙江", "上海", "江西", "贵州", "湖北", "山西", "福建", "河南", "云南", "重庆", "四川", // 2-15
                "北京", "天津", "陕西", "河北", "山东", "海南", // 16-21
                "青海", "宁夏", "甘肃", "辽宁", "吉林", "黑龙江", "内蒙古", // 22-28
                "西藏", "新疆" // 29-30
        );
        int partsChoice = parts.indexOf(receiverAddress);
        if (partsChoice == 0 || partsChoice == 1) {
            if (weight > 1) {
                cargo.charge = 10 + (weight - 1) * 5;
            } else {
                cargo.charge = 10;
            }
        } else if (partsChoice >= 2 && partsChoice <= 15) {
            if (weight > 1) {
                cargo.charge = 12 + (weight - 1) * 8;
            } else {
                cargo.charge = 12;
            }
        } else if (partsChoice >= 16 && partsChoice <= 21) {
            if (weight > 1) {
                cargo.charge = 15 + (weight - 1) * 10;
            } else {
                cargo.charge = 15;
            }
        } else if (partsChoice >= 22 && partsChoice <= 28) {
            if (weight > 1) {
                cargo.charge = 18 + (weight - 1) * 12;
            } else {
                cargo.charge = 18;
            }
        } else if (partsChoice >= 29 && partsChoice <= 30) {
            if (weight > 1) {
                cargo.charge = 30 + (weight - 1) * 25;
            } else {
                cargo.charge = 30;
            }
        }
    }

    public void showMessage() {
        System.out.println(
                "货物编号:" + cargo.no + "\n" +
                "货物寄件人:" + cargo.name + "\n" +
                "货物收货人:" + cargo.receiverName + "\n" +
                "货物重量:" + cargo.weight + "\n" +
                "货物运费:" + cargo.charge
        );
    }

    public void showCharge() {
        System.out.println("运费为:" + cargo.charge);
    }
}


ExpreessSystem类代码部分:

 

package 快递运费计算项目;

import java.util.Scanner;

public class ExpreessSystem {
    private Cargohandler cargoHandler;
    private FreshCargoHandler freshCargoHandler;
    private static final int PASSWORD = 1234;
    private String password;
    private boolean flag;
    private int n;
    private int type;
    private int house;

    public ExpreessSystem() {
        this.cargoHandler = new Cargohandler();
        this.freshCargoHandler = new FreshCargoHandler();
    }

    public void login() {
        Scanner scanner = new Scanner(System.in);
        flag = false;
        n = 0;

        while (n < 3 && !flag) {
            System.out.print("请输入操作密码: ");
            password = scanner.nextLine();

            if (password.equals(String.valueOf(PASSWORD))) {
                flag = true;
                System.out.println("密码正确,欢迎使用本系统!");
            } else {
                n++;
                System.out.println("密码输入错误,请重新输入!");
            }
        }

        if (!flag) {
            System.out.println("三次密码输入错误,程序退出: 0");
            System.exit(0);
        }

        
    }

    public void showMenu() {
        Scanner scanner = new Scanner(System.in);
        int choice;

        do {
            System.out.println("\n---快递运费费用计算程序---");
            System.out.println("1. 选择货物类型");
            System.out.println("2. 货物数据录入");
            System.out.println("3. 计算运费");
            System.out.println("4. 货物信息显示");
            System.out.println("0. 退出程序");
            System.out.print("输入你的选择(0-4):");

            choice = scanner.nextInt();

            System.out.println();

            switch (choice) {
                case 0:
                    System.out.println("退出程序。");
                    break;
                case 1:
                    Scanner sc1 = new Scanner(System.in);
                    System.out.print("1. 无需保鲜\n2. 需要保鲜\n请选择货物类型:");
                    int sc6 = sc1.nextInt();
                    if (sc6 != 1 && sc6 != 2) {
                        System.out.print("输入错误");
                        showMenu();
                        break;
                    } else {
                        type = sc6;
                        showMenu();
                        break;
                    }
                case 2:
                    if (type == 1) {
                        Scanner sc2 = new Scanner(System.in);
                        System.out.print("请输入货物编号:");
                        long no = sc2.nextLong();
                        System.out.print("请输入寄件人姓名:");
                        String name = sc2.next();
                        System.out.print("请输入寄件人电话:");
                        long phone = sc2.nextLong();
                        System.out.print("请输入收件地址:");
                        String receiverAddress = sc2.next();
                        System.out.print("请输入收件人姓名:");
                        String receiverName = sc2.next();
                        System.out.print("请输入收件人电话:");
                        long receiverPhone = sc2.nextLong();
                        System.out.print("请输入货物重量:");
                        double weight = sc2.nextDouble();
                        cargoHandler.inputData(no, name, phone, receiverAddress, receiverName, receiverPhone, weight);
                    } else {
                        Scanner sc2 = new Scanner(System.in);
                        System.out.print("请输入货物编号:");
                        long no = sc2.nextLong();
                        System.out.print("请输入寄件人姓名:");
                        String name = sc2.next();
                        System.out.print("请输入寄件人电话:");
                        long phone = sc2.nextLong();
                        System.out.print("请输入收件地址:");
                        String receiverAddress = sc2.next();
                        System.out.print("请输入收件人姓名:");
                        String receiverName = sc2.next();
                        System.out.print("请输入收件人电话:");
                        long receiverPhone = sc2.nextLong();
                        System.out.print("请输入寄送区域(1-5):");
                        double weight = sc2.nextDouble();
                        System.out.print("请输入货物重量:");
                        int house = sc2.nextInt();
                        
                        
                        freshCargoHandler.inputData(no, name, phone, receiverAddress, receiverName, receiverPhone, weight, house);
                    }
                    showMenu();
                    break;
                case 3:
                    if (type == 1) {
                        cargoHandler.computeCharge(cargoHandler.cargo.weight, cargoHandler.cargo.receiverAddress);
                        cargoHandler.showCharge();
                    } else {
                        freshCargoHandler.computeCharge(freshCargoHandler.cargo.weight, freshCargoHandler.cargo.receiverName, house);
                        freshCargoHandler.showCharge();
                    }
                    showMenu();
                    break;
                case 4:
                    if (type == 1) {
                        cargoHandler.showMessage();
                    } else {
                        freshCargoHandler.showMessage();
                    }
                    showMenu();
                    break;
                default:
                    System.out.println("输入错误,请重新输入。");
                    break;
            }
        } while (choice < 0 || choice > 4);

        scanner.close();
    }

    public static void main(String[] args) {
        ExpreessSystem expressSystem = new ExpreessSystem();
        expressSystem.login();
        expressSystem.showMenu();
    }
}


FreshCargoHandler代码部分: 

package 快递运费计算项目;

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

public class FreshCargoHandler extends Cargohandler{
    int house;

    public FreshCargoHandler(){
        cargo = new Cargo();
    }

    public void inputData(long no, String name, long phone, String receiverAddress, String receiverName, long receiverPhone, double weight, int house) {
        super.inputData(no, name, phone, receiverAddress, receiverName, receiverPhone, weight);
        computeCharge(weight, receiverAddress, house);
    }

    public void computeCharge(double weight, String receiverAddress, int house) {
        List<String> parts = Arrays.asList(
                "广西", "广东", // 0-1
                "安徽", "湖南", "江苏", "浙江", "上海", "江西", "贵州", "湖北", "山西", "福建", "河南", "云南", "重庆", "四川", // 2-15
                "北京", "天津", "陕西", "河北", "山东", "海南", // 16-21
                "青海", "宁夏", "甘肃", "辽宁", "吉林", "黑龙江", "内蒙古", // 22-28
                "西藏", "新疆" // 29-30
        );
        int partsChoice = parts.indexOf(receiverAddress);
        if (partsChoice == 0 || partsChoice == 1) {
            if (weight > 1) {
                cargo.charge = 10 + (weight - 1) * 5 + house * 10;
            } else {
                cargo.charge = 10;
            }
        } else if (partsChoice >= 2 && partsChoice <= 15) {
            if (weight > 1) {
                cargo.charge = 12 + (weight - 1) * 8 + house * 10;
            } else {
                cargo.charge = 12;
            }
        } else if (partsChoice >= 16 && partsChoice <= 21) {
            if (weight > 1) {
                cargo.charge = 15 + (weight - 1) * 10 + house * 10;
            } else {
                cargo.charge = 15;
            }
        } else if (partsChoice >= 22 && partsChoice <= 28) {
            if (weight > 1) {
                cargo.charge = 18 + (weight - 1) * 12 + house * 10;
            } else {
                cargo.charge = 18;
            }
        } else if (partsChoice >= 29 && partsChoice <= 30) {
            if (weight > 1) {
                cargo.charge = 30 + (weight - 1) * 25 + house * 10;
            } else {
                cargo.charge = 30;
            }
        }
    }

    public void showMessage() {
        super.showMessage();
    }

    public void showCharge() {
        super.showCharge();
    }
}


 运行代码输出结果:


Java编程学习的心得:

记得那个阳光明媚的下午,我第一次接触到了Java这门编程语言,在学习Java的过程中,说实话,刚开始学习Java的时候,我简直是一头雾水。那些复杂的语法、繁琐的类和方法,让我感觉像是在读天书,但是,我并没有放弃,而是选择了迎难而上,主要是那么多要记住的专业术语和复杂的逻辑,看得我头都大了。但是后来慢慢地,我发现Java其实还挺有意思的,刚开始学习Java的时候,我就被它给难住了。虽然刚开始学的时候有点吃力,但是每次搞懂一个知识点,那种成就感就很好!但是有时候我会被一些难题困住,但是正是这种挑战让我更加投入地去学习。每次解决问题后,我都感觉自己对Java的理解有更近了一步,但是学习Java也不只是看书和听课,更重要的是自己动手去操作(实操)。我也试着用Java写了一些小程序,虽然一开始总是报错,我翻阅了无数的教材、教程和论坛,尝试着理解那些难懂的代码和概念。但是后来就慢慢地越来越熟练了,每当我解决了一个问题,或者编写出了一个能够正常运行的小程序时,那种成就感就会让我忘记所有的疲惫和困难。然后就是Java的语法也很严谨,这让我一开始写代码的时候总是小心翼翼,生怕哪里写错了,但随着时间的推移,我渐渐习惯了这种严谨性,也更能体会到它带来的好处。在学习的过程中,我也逐渐发现了Java的魅力所在。它不仅仅是一种编程语言,更是一种解决问题的思维方式。我学会了将复杂的问题拆分成若干个简单的小问题,然后用Java去逐一解决。这种思维方式让我在面对困难时更加从容和自信。我特别喜欢Java那种面向对象的编程方式,因为它让我学会了如何将现实世界中的事物抽象为代码中的对象,这种方式真的很有趣,每当我用Java去实现一个功能时,我都会先思考一下这个功能在现实世界中是如何运作的,然后再去考虑如何用代码去实现它。当然,学习Java也不是一帆风顺的。有时候,我会遇到一些难以解决的问题,甚至有时候会感到有些沮丧。但是,我始终相信只要坚持下去,就一定能够克服这些困难。我会不断地去查找资料、请教他人、尝试不同的方法,直到找到解决问题的办法。在这个过程中,我也结识了很多志同道合的朋友。我们一起讨论问题、分享经验、互相鼓励。这些经历不仅让我学到了很多知识,更让我感受到了团队合作的力量,现在回想起来,学习Java真的是一段非常宝贵的经历。它让我学会了如何思考问题、如何解决问题、如何与他人合作。我相信这些能力在今后的工作和生活中都会发挥重要的作用,最后我想说的是,学习Java并不是一件容易的事情,但只要你坚持下去并用心去学就一定能够掌握它。不要害怕困难和挑战,因为正是这些困难和挑战让你变得更加强大和优秀!这就是我学习Java的心得,希望大家都可以通过这篇博文有所收获。

  • 21
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值