前言
Java是一种广泛用于开发各种应用程序的高级编程语言。它是由Sun Microsystems(目前为Oracle公司所拥有)于1995年推出的,并且是一种面向对象的语言。
Java的设计目标是可移植性、可靠性和安全性。它的语法类似于C++,但是省略了一些复杂的特性,使得开发更加简洁和易于理解。
Java的特点包括:
平台独立性:Java程序可以在不同的操作系统上运行,只要安装了Java虚拟机(JVM)即可。
自动内存管理:Java提供了垃圾回收机制,自动释放不再使用的内存,减少了程序员对内存管理的工作。
强大的标准库:Java提供了丰富的标准库,包含了各种常用的函数和类,方便开发者进行开发。
面向对象:Java是一种面向对象的语言,支持封装、继承和多态等特性,使得开发更加灵活和可扩展。
Java被广泛应用于各种领域,包括Web开发、移动应用开发、大数据处理、人工智能等。它是世界上最流行的编程语言之一,被众多开发者和企业广泛采用。
学习过程
window系统安装java
下载JDK
首先我们需要下载 java 开发工具包 JDK,下载地址:jdk官网,在下载页面中根据自己的系统选择对应的版本,本文以 Window 64位系统为例:
下载后 JDK 的安装根据提示进行,还有安装 JDK 的时候也会安装 JRE,一并安装就可以了。
安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为 C:\Program Files (x86)\Java\jdk1.8.0_91。
配置环境变量
具体流程请参考网上教程
Java 基本数据类型
变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。
内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。
因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。
Java 的两大数据类型:
内置数据类型
数据类型 | 描述 | 存储大小(字节) | 默认值 |
byte | 8位有符号二进制整数 | 1 | 0 |
short | 16位有符号二进制整数 | 2 | 0 |
int | 32位有符号二进制整数 | 4 | 0 |
long | 64位有符号二进制整数 | 8 | 0L 或 0l |
float | 单精度32位IEEE 754浮点数 | 4 | 0.0F或0.0f |
double | 双精度64位IEEE 754浮点数 | 8 | 0.0 或 0.0D(d可省略) |
char | 16位Unicode字符 | 2 | ‘\u0000’(空字符) |
boolean | 布尔值类型 | 不确定(依赖于JVM实现) | false |
引用数据类型
引用数据类型 | 描述 |
---|---|
类 (Class) | 自定义的数据类型,包含属性(变量)和方法(函数)。在Java中,所有的类都继承自Object类,除非明确指定了其他父类。 |
接口 (Interface) | 一种完全抽象的类,只包含抽象方法和常量。接口不能被实例化,但可以被类实现(implements)。实现接口的类必须提供接口所有抽象方法的实现。 |
数组 (Array) | 用于存储固定数量的同类型元素(可以是基本数据类型或引用数据类型)的集合。数组的大小在创建时确定,并且之后不能改变。 |
类(Class):类是Java中最基本的引用数据类型,它是由类定义实例化得到的。对象可以存储多个数据值,并且可以调用它所属类中定义的方法。
接口(Interface):接口也是一种引用数据类型,它定义了一组方法的规范,没有具体的实现。类实现接口时,必须实现接口中定义的所有方法。
数组(Array):数组是一种引用数据类型,它可以存储相同类型的多个数据值。数组的长度是固定的,一旦创建后,长度就不可改变。通过索引可以访问数组中的元素。
选择结构
在编程中,我们经常需要根据不同的条件执行不同的代码块。Java提供了多种选择结构来实现这种需求,其中最常用的是if-else和switch语句
- if-else语句
if-else语句允许我们根据一个或多个条件来执行相应的代码块。下面是一个简单的例子:public class IfElseExample { public static void main(String[] args) { int score = 85; if (score >= 90) { System.out.println("优秀!"); } else if (score >= 80) { System.out.println("良好!"); } else if (score >= 60) { System.out.println("及格!"); } else { System.out.println("不及格!"); } } }
在这个例子中,我们根据分数score的不同值来输出不同的评价。
- switch语句
switch语句是另一种选择结构,它允许我们根据一个表达式的值来执行多个不同的代码块。以下是一个switch语句的例子:public class SwitchExample { public static void main(String[] args) { char grade = 'B'; switch (grade) { case 'A': System.out.println("优秀!"); break; case 'B': System.out.println("良好!"); break; case 'C': System.out.println("及格!"); break; default: System.out.println("未知等级!"); } } }
在这个例子中,我们根据等级grade的不同值来输出不同的评价。注意,在每个case语句的末尾,我们使用break语句来跳出switch结构,以防止程序继续执行下一个case的代码块。如果省略了break语句,将会发生“穿透”(fall-through)现象,即程序会继续执行下一个case的代码块,直到遇到break语句或switch结构的末尾。
通过使用if-else和switch语句,我们可以编写出更加灵活和高效的代码来处理不同的条件和情况。
循环结构
在Java编程中,循环结构是一种非常重要的控制流语句,它允许我们重复执行一段代码,直到满足某个条件为止。Java提供了几种不同类型的循环结构,包括for循环、while循环和do-while循环。下面我们将分别介绍这些循环结构,并给出相应的示例。
for循环
for循环是Java中最常用的循环结构之一,它通常用于在知道循环次数的情况下进行循环。for循环的语法如下
for (初始化; 条件; 更新) {
// 循环体
}
示例:使用for循环打印数字1到10。
public class ForLoopExample {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
}
}
在这个例子中,我们定义了一个变量i,并将其初始化为1。然后,我们检查i是否小于或等于10,如果是,则执行循环体(打印i的值),并在每次循环结束后将i增加1。当i大于10时,循环终止。
while循环
while循环在条件为真时重复执行一段代码。它的语法如下:
初始化;
while (条件) {
// 循环体
更新;
}
注意,与for循环不同,while循环的初始化、更新和条件检查是分开进行的。
示例:使用while循环打印数字1到10。
public class WhileLoopExample {
public static void main(String[] args) {
int i = 1;
while (i <= 10) {
System.out.println(i);
i++;
}
}
}
在这个例子中,我们首先初始化变量i为1。然后,我们进入一个while循环,只要i小于或等于10,就打印i的值,并将i增加1。当i大于10时,循环终止。
do-while循环
do-while循环与while循环类似,但有一点不同:do-while循环至少会执行一次循环体,即使条件在第一次检查时就为假。它的语法如下:
初始化;
do {
// 循环体
更新;
} while (条件);
示例:使用do-while循环打印数字1到10(虽然这个例子与while循环没有本质区别,但展示了do-while的至少执行一次的特性)。
public class DoWhileLoopExample {
public static void main(String[] args) {
int i = 1;
do {
System.out.println(i);
i++;
} while (i <= 10);
}
}
在这个例子中,即使我们将i的初始值设置为大于10的数,循环体也会至少执行一次(当然,在这个特定的例子中,由于i的初始值为1,所以循环体会正常执行10次)。
通过使用这些循环结构,我们可以编写出能够重复执行特定任务的Java程序,从而实现更加复杂和高效的功能。
数组
在Java编程中,数组是一种用于存储相同类型元素的固定大小的连续内存块。数组提供了一种方便的方式来组织和管理一组相关的数据。下面我们将介绍Java中数组的基本概念和用法,并给出一个简单的示例。
数组的基本概念
元素:数组中的每一个数据项称为数组的元素。
索引:每个元素都有一个唯一的索引值,用于标识它在数组中的位置。在Java中,数组索引从0开始。
长度:数组的长度是数组中可以容纳的元素数量。一旦数组被创建,其长度就不能改变。
数组的声明和初始化
在Java中,数组的声明和初始化可以分开进行,也可以同时进行。
声明数组
int[] numbers; // 声明一个整型数组变量numbers
初始化数组
静态初始化:在声明数组的同时分配空间并初始化元素。
int[] numbers = {1, 2, 3, 4, 5}; // 静态初始化数组
动态初始化:先声明数组,再分配空间。
int[] numbers = new int[5]; // 分配一个长度为5的整型数组
numbers[0] = 1;
numbers[1] = 2;
// ... 以此类推
数组的使用示例
下面是一个简单的示例,展示了如何声明、初始化和使用数组:
public class ArrayExample {
public static void main(String[] args) {
// 静态初始化数组
int[] numbers = {10, 20, 30, 40, 50};
// 遍历数组并打印元素
for (int i = 0; i < numbers.length; i++) {
System.out.println("numbers[" + i + "] = " + numbers[i]);
}
// 修改数组元素
numbers[2] = 300;
// 再次遍历数组并打印元素
for (int i = 0; i < numbers.length; i++) {
System.out.println("numbers[" + i + "] = " + numbers[i]);
}
}
}
在这个示例中,我们首先使用静态初始化方式创建了一个整型数组numbers,并为其分配了5个初始值。然后,我们使用一个for循环遍历数组并打印每个元素的值。接着,我们修改了数组索引为2的元素的值,并再次遍历数组以验证修改是否生效。
通过数组,我们可以更方便地处理一组相同类型的数据,如排序、搜索、计算等。在实际应用中,数组是非常常用的数据结构之一。
方法
在Java中,方法是执行特定任务的代码块。它们使代码更加模块化和可重用。下面,我将为您演示如何编写一个简单的Java方法,并解释其各个部分。
方法定义
定义方法
在Java中,方法的定义通常包括以下几个部分:
访问修饰符:如 public、private、protected 或默认(不写任何修饰符)。这决定了其他类是否可以访问该方法。
返回类型:方法执行后返回的数据类型。如果方法不返回任何值,则返回类型为 void。
方法名:用于标识和调用方法的名称。
参数列表:方法执行时需要的输入数据,包括数据类型和变量名。如果方法没有参数,则参数列表为空。
方法体:包含方法执行的Java语句。
首先,我们定义一个名为greet的方法,它接受一个字符串参数name,并返回一个字符串。
public class Example {
// 定义一个名为addNumbers的方法,它接受两个整数参数并返回它们的和
public int addNumbers(int num1, int num2) {
int sum = num1 + num2;
return sum;
}
// 主方法,程序的入口点
public static void main(String[] args) {
// 接下来我们将在main方法中调用addNumbers方法
}
}
这就是如何在Java中编写一个简单的方法的基本步骤。通过编写和使用方法,您可以更好地组织您的代码,并使其更加易于理解和维护。
调用方法
创建方法所在类的对象(如果方法不是静态的)。
使用对象名(或类名,如果方法是静态的)和点符号(.)来访问方法。
提供方法所需的参数(如果方法有参数)。
处理方法的返回值(如果方法有返回值)。
以下是如何在上面的 main 方法中调用 addNumbers 方法的示例:
public class Example {
// ... 省略addNumbers方法的定义 ...
// 主方法,程序的入口点
public static void main(String[] args) {
// 创建Example类的对象
Example example = new Example();
// 调用addNumbers方法,并将结果存储在变量result中
int result = example.addNumbers(5, 3);
// 打印结果
System.out.println("The sum is: " + result);
}
}
在这个例子中,我们首先创建了 Example 类的一个对象 example。然后,我们使用 example 对象和点符号来调用 addNumbers 方法,并传入参数 5 和 3。方法的返回值(即 8)被存储在 result 变量中,并最终被打印到控制台上。
类与对象
在Java编程中,类和对象是核心概念。类是对象的蓝图或模板,而对象则是根据这个蓝图创建的具体实例。今天,我们将通过一个简单的Person类来探讨如何在Java中定义类、创建对象以及调用对象的方法。
定义Person类
首先,我们定义一个名为Person的类。这个类将包含两个关键属性:name(姓名)和age(年龄)。为了确保数据的安全性和封装性,我们将这两个属性设置为私有(private),这意味着它们只能在Person类内部被直接访问。
public class Person {
private String name; // 私有属性,存储人的姓名
private int age; // 私有属性,存储人的年龄
// 构造方法,用于创建Person对象时初始化属性
public Person(String name, int age) {
this.name = name; // 使用this关键字引用当前对象的属性
this.age = age;
}
// ... 其他方法将在后面定义 ...
}
除了属性,我们还为Person类定义了一个构造方法。构造方法是一个特殊的方法,用于创建类的新对象并初始化其属性。在Person类的构造方法中,我们接收两个参数——姓名和年龄,并使用this关键字将它们分别赋值给对象的name和age属性。
为Person类添加方法
接下来,我们为Person类添加几个方法,以丰富其功能。
// introduce方法,用于自我介绍
public void introduce() {
System.out.println("Hello, my name is " + name + " and I'm " + age + " years old.");
}
// setAge方法,用于设置年龄,并进行简单的验证
public void setAge(int newAge) {
if (newAge >= 0) {
age = newAge; // 更新年龄属性
} else {
System.out.println("Age cannot be negative."); // 年龄不能为负
}
}
// getAge方法,用于获取年龄
public int getAge() {
return age; // 返回年龄属性
}
创建Person对象并调用其方法
定义了Person类之后,我们可以在main方法中创建该类的对象,并调用其方法。
public static void main(String[] args) {
// 使用构造方法创建一个名为Alice、年龄为30的Person对象
Person person = new Person("Alice", 30);
// 调用introduce方法进行自我介绍
person.introduce(); // 输出: Hello, my name is Alice and I'm 30 years old.
// 使用setAge方法更新年龄,并进行验证
person.setAge(31); // 更新年龄为31岁,无输出表示更新成功
person.setAge(-5); // 尝试设置无效年龄,输出: Age cannot be negative.
// 再次调用introduce方法,确认年龄已更新
person.introduce(); // 输出: Hello, my name is Alice and I'm 31 years old.
// 使用getAge方法获取年龄,并打印出来
int currentAge = person.getAge();
System.out.println("Alice's current age is: " + currentAge); // 输出: Alice's current age is: 31
}
Java学习心得总结
自从我开始学习Java编程语言以来,我经历了从零基础到逐渐掌握的过程,这段旅程既充满了挑战,也带来了许多收获。以下是我对Java学习的一些心得和体会。
基础知识的重要性
Java是一门强大的编程语言,但如同其他任何技术一样,它的学习需要从基础开始。在学习初期,我深刻感受到了掌握Java基础知识的重要性。从变量、数据类型、运算符,到控制结构、函数和面向对象编程,每一步的学习都为后续的内容打下了坚实的基础。我意识到,只有扎实地掌握这些基础知识,才能在后续的学习中更加游刃有余。
总结
回顾我的Java学习历程,我深感收获颇丰。我不仅掌握了Java的基础知识和编程技巧,还学会了如何运用面向对象的思想进行编程。同时,我也认识到了实践、异常处理和持续学习的重要性。我相信,在未来的学习和工作中,我会继续深入学习Java技术,不断提高自己的编程能力和水平。