java学习一课一得

前言

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 的两大数据类型:

内置数据类型

数据类型描述存储大小(字节)默认值
byte8位有符号二进制整数1

0

short16位有符号二进制整数20
int32位有符号二进制整数40
long64位有符号二进制整数80L 或 0l
float单精度32位IEEE 754浮点数40.0F或0.0f
double双精度64位IEEE 754浮点数80.0 或 0.0D(d可省略)
char16位Unicode字符2‘\u0000’(空字符)
boolean布尔值类型不确定(依赖于JVM实现)false

引用数据类型

引用数据类型描述
类 (Class)自定义的数据类型,包含属性(变量)和方法(函数)。在Java中,所有的类都继承自Object类,除非明确指定了其他父类。
接口 (Interface)一种完全抽象的类,只包含抽象方法和常量。接口不能被实例化,但可以被类实现(implements)。实现接口的类必须提供接口所有抽象方法的实现。
数组 (Array)用于存储固定数量的同类型元素(可以是基本数据类型或引用数据类型)的集合。数组的大小在创建时确定,并且之后不能改变。

类(Class):类是Java中最基本的引用数据类型,它是由类定义实例化得到的。对象可以存储多个数据值,并且可以调用它所属类中定义的方法。

接口(Interface):接口也是一种引用数据类型,它定义了一组方法的规范,没有具体的实现。类实现接口时,必须实现接口中定义的所有方法。

数组(Array):数组是一种引用数据类型,它可以存储相同类型的多个数据值。数组的长度是固定的,一旦创建后,长度就不可改变。通过索引可以访问数组中的元素。

选择结构

在编程中,我们经常需要根据不同的条件执行不同的代码块。Java提供了多种选择结构来实现这种需求,其中最常用的是if-else和switch语句

  1. 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的不同值来输出不同的评价。

  2. 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技术,不断提高自己的编程能力和水平。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值