目录
一、Java基础知识
- 数据类型和变量:
- Java提供了多种数据类型,包括基本数据类型(如整型、浮点型、字符型和布尔型)和引用数据类型(如类、接口、数组等)。
- 变量用于存储数据,并通过变量名来访问这些数据。
- 运算符和表达式:
- Java提供了丰富的运算符,包括算术运算符、关系运算符、逻辑运算符等。
- 运算符用于操作各种数据类型,进行加减乘除、比较大小、判断条件等操作。
- 表达式是由运算符和操作数组成的,用于实现各种复杂的计算。
- 控制流程:
- 控制流程涉及程序在执行过程中的控制顺序。
- Java提供了多种控制流程语句,包括条件语句(如if-else)、循环语句(如for、while、do-while)和跳转语句(如break、continue、return)。
- 数组和集合:
- 数组用于存储多个相同类型的数据,但长度是固定的。
- 集合是一种可以动态增加和删除元素的数据结构,Java提供了多种集合类,如ArrayList、LinkedList、HashSet等。
- 类和对象:
- Java是一种面向对象的编程语言,类和对象是Java程序中最基本的概念。
- 类是Java中最基本的组织单位,由属性和方法组成。属性用于描述对象的状态,方法用于定义对象的行为。
- 对象是类的一个实例,通过创建对象可以访问类的属性和方法。
- 继承和多态:
- 继承是面向对象编程中实现代码复用的一种机制,子类可以继承父类的属性和方法,并可以在此基础上进行扩展和修改。
- 多态是指同一类型的对象在不同的情况下可以表现出不同的行为,通过多态可以提高代码的灵活性和可扩展性。
- 其他重要概念:
- Java虚拟机(JVM):Java程序运行在JVM上,JVM负责将Java字节码文件(.class)加载并执行。
- 接口:Java中的接口是一种特殊的类,它只包含方法的声明而不包含方法的实现。接口用于定义一种规范,实现该接口的类必须实现接口中定义的所有方法。
- 访问修饰符:Java中的访问修饰符用于控制类、方法、变量等成员的访问权限,包括public、private、protected和默认(无修饰符)四种。
- 异常处理:Java通过异常处理机制来处理程序运行时的错误和异常情况,包括try-catch-finally语句块和自定义异常类。
- 关键字和修饰符:
- 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));
}
}
这段代码的功能是:
- 使用
System.out.print
打印出字符串"(9.5*4.5-6.2*3)/(12.3-3.5)="
到控制台。 - 计算数学表达式
(9.5*4.5-6.2*3)/(12.3-3.5)
的值。 - 使用
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的心得,希望大家都可以通过这篇博文有所收获。