Java笔记

1.2 Java语言的特点

        Java语言的广泛应用主要得益于它的核心特点,主要包括跨平台性、面向对象特性、安全性等。

特性    描述
跨平台性    Java能够在多种操作系统上运行,这得益于JVM(Java虚拟机)。只要设备安装了对应的JVM,Java程序就可以在其上运行。
面向对象    Java是一种面向对象的编程语言。这意味着你可以创建包含属性和方法的对象,并通过对象的交互来实现复杂功能。
安全性    Java为网络编程提供了许多安全特性,包括对源代码的加密,并且在运行时检查类的
1.3 Java开发环境的搭建

        Java开发环境的搭建是Java学习的第一步,主要包括安装JDK(Java开发工具包)和配置环境变量。

步骤    描述
安装JDK    JDK是包含了JRE(Java运行环境)和开发工具(如编译器和调试器)的软件包。
配置环境变量    环境变量是让系统知道如何找到Java命令和库的方式。通常需要设置JAVA
1.4 第一个Java程序

        编写第一个Java程序时,通常从最简单的输出开始,这里我们以“Hello, World!”为例。

// "HelloWorld.java" 示例代码
public class HelloWorld {
    // 主函数,Java 程序入口点
    public static void main(String[] args) {
        // 输出字符串到控制台
        System.out.println("Hello, World!");
    }
}
步骤    描述
创建类    使用 class 关键字定义一个类,类名的首字母应大写。
编写主函数    main 方法是程序的入口,是程序开始执行的地方。
输出信息    使用 System.out.println 在控制台打印信息。
        进阶用法介绍:掌握基本的输入输出操作后,可以学习复杂的 I/O 流操作,包括文件读写,序列化和网络通信。此外,了解执行时异常处理也是进阶重要的一步。

1.5 Java程序编程规范

        遵循Java编程规范能够提高代码的可读性和可维护性。

// Java 编程规范示例代码
 
/**
 * Calculator 类用于执行基本的数学运算。
 * 类命名使用大驼峰命名法。
 */
public class Calculator {
 
    /**
     * 常量命名使用全大写字母和下划线分隔。
     */
    public static final String NAME = "Simple Calculator";
 
    /**
     * 方法命名使用小驼峰命名法,方法名应当清晰表达其功能。
     */
    public int add(int number1, int number2) {
        // 方法内的注释用于解释复杂的逻辑   
        return number1 + number2; // 返回两个数字的和
    }
}

规范类型    描述
类命名规范    使用大写字母开始,后续每个单词首字母大写。
方法命名规范    使用小写字母开始,后续每个单词首字母大写。
常量命名规范    全部使用大写字母,并在单词之间使用下划线分隔。
2.1 关键字和标识符

        在Java中,关键字是预定义的保留字,具有特殊的意义;而标识符是程序员自定义的名字,用于变量、方法、类等的命名。

// 关键字和标识符示例代码
 
public class Student {
    // 'public', 'class' 是Java关键字
 
    // 'Student', 'studentName', 'printStudentName' 是标识符
    String studentName;
 
    // 'void' 是关键字,表示函数不返回任何值
    public void printStudentName() {
        System.out.println(studentName);
    }
}
类型    描述
关键字    Java预定义的单词,如 public, static, void。
标识符    用户自定义的名称,需要遵守命名规则,不能使用关键字。
2.2 变量与常量

        变量和常量是Java中存储数据的基本单元,变量的值可以改变,而常量的值定义后不可更改。

// 变量与常量的示例代码
public class VariableAndConstant {
    // 声明一个变量
    int age = 18;
 
    // 声明一个常量,一般使用 final 关键字修饰,且常量名大写
    final String NAME = "张三";
 
    public void updateAge() {
        // 修改变量
        age = 20;
        // 以下常量赋值会导致编译错误,因为常量不能被改变
        // NAME = "李四";
    }
}
类型    描述
变量    可变的存储单元,可以在程序执行过程中改变其值。
常量    使用 final 关键字声明,一旦赋初值后不可更改。
进阶用法介绍:

        在Java编程中,变量和常量的高级用法涉及到更深层次的理解和运用。例如,变量的作用域决定了在哪个部分的代码中可以访问到该变量,而生命周期则与变量在内存中存在的时间有关。变量的作用域可以是类级(成员变量)、方法级(局部变量)、块级(比如在if或for循环中定义的变量),或者是线程生命周期内(ThreadLocal变量)。

        装箱和拆箱是Java中特有的概念,指自动地将基本数据类型转换为相应的包装器类型(装箱),以及将包装器类型转换回基本数据类型(拆箱)。不变设计模式(Immutable Design Pattern)涉及到创建不可变的对象,确保对象一旦被创建后就不能被修改。这种模式有助于创建更加安全和简洁的代码,并容易进行多线程编程,因为不可变对象本身是线程安全的。

// 进阶变量与常量的示例代码
public class AdvancedVariableAndConstant {
 
    // 类级变量(静态变量),与类一起加载,在程序整个运行期间都存在
    private static int classVariable = 0;
 
    // 在方法中定义的局部变量,仅在方法调用时存在
    public void localVariableExample() {
        int localVariable = 1;
    }
 
    // 不变对象示例,创建后其状态不能被改变
    public final static String IMMUTABLE_STRING = "不可变字符串";
 
    // 装箱:将int基本类型转化为Integer对象类型
    int primitive = 100;
    Integer wrappedInteger = primitive; // 装箱
 
    // 拆箱:将Integer对象类型转化为int基本类型
    int unboxedInteger = wrappedInteger; // 拆箱
}

高级用法    描述
变量作用域    确定变量可以被访问的代码范围。
变量生命周期    变量从创建到销毁的过程。
装箱与拆箱    自动类型转换,基本数据类型与对象类型之间的转换。
不变设计模式    一种创建不可变对象的设计模式,用于创建线程安全和不可修改的对象。
2.3 数据类型

        Java是静态类型语言,数据类型定义了变量可以存储的数据种类和范围。

// 数据类型的示例代码
public class DataTypes {
    // 基本数据类型
    int intNum = 100;            // 整数
    float floatNum = 10.99f;     // 单精度浮点数
    double doubleNum = 3.14159;  // 双精度浮点数
    char letter = 'A';           // 字符
    boolean flag = true;         // 布尔
 
    // 对象数据类型(类)
    String text = "Hello Java";  // 字符串
}
数据类型    描述
基本数据类型    包括整数、浮点数、字符和布尔等类型,直接存储值。
对象数据类型    类的实例,通过引用来操作,例如字符串。
2.5 程序控制结构

        程序控制结构决定了程序的流程,包括分支结构如 if、else、循环结构如 for、while。

// 程序控制结构的示例代码
public class ControlStructure {
    public void checkNumber(int number) {
        // 分支结构
        if (number > 0) {
            System.out.println("数字正数");
        } else {
            System.out.println("数字非正数");
        }
 
        // 循环结构
        for (int i = 0; i < 5; i++) {
            System.out.println(i);
        }
    }
}

控制结构    描述
分支结构    根据条件执行不同的代码路径。
循环结构    重复执行一段代码直至满足退出条件。
3.1 数组概述

        数组在Java中是用来存储固定大小的同类型元素的集合。

// 数组概述示例代码
public class ArrayExample {
    public void arrayDemo() {
        // 声明一个整型数组
        int[] numbers = {10, 20, 30, 40, 50};
        // 遍历数组并打印元素
        for (int i = 0; i < numbers.length; i++) {
            System.out.println(numbers[i]);
        }
    }
}
概念    描述
数组声明    定义数组的类型和名称,可以初始化数组。
数组遍历    使用循环结构去访问数组中的每个元素。
数组长度    属性 length 用来获得数组的大小。
进阶用法介绍:

        数组的高级功能涉及多维数组的使用、数组和集合之间的转换、利用Java的集合框架进行动态数组的操作,以及对数组进行高效排序和搜索等操作。

        多维数组:在Java中,除了一维数组,还可以创建多维数组,如二维数组通常被用于表示矩阵或者表格数据。

// 多维数组示例代码
public class MultiDimensionalArray {
    public void multiArrayDemo() {
        // 声明一个二维数组
        int[][] matrix = {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}
        };
        // 访问二维数组中的元素
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                System.out.print(matrix[i][j] + " ");
            }
            System.out.println(); //新的一行
        }
    }
}

        Java集合框架:对于更复杂的数据结构操作,可以使用Java的集合框架,如 ArrayList 和 HashMap 提供了动态的、可以改变大小的数组。

// Java集合框架示例代码
import java.util.ArrayList;
import java.util.HashMap;
 
public class CollectionExample {
    public void collectionDemo() {
        // 创建ArrayList
        ArrayList<Integer> numberList = new ArrayList<>();
        numberList.add(10);
        numberList.add(20);
 
        // 创建HashMap
        HashMap<String, Integer> nameToAge = new HashMap<>();
        nameToAge.put("张三", 30);
        nameToAge.put("李四", 40);
    }
}

        数组的高级排序与搜索:使用如排序算法 Arrays.sort() 和搜索算法 Arrays.binarySearch() 可以对数组进行高效的排序和搜索。

// 数组高级排序与搜索示例代码
import java.util.Arrays;
 
public class ArrayAdvancedOperations {
    public void advancedArrayDemo() {
        // 标准数组排序
        int[] numbers = {40, 10, 20, 30};
        Arrays.sort(numbers);
 
        // 用二分搜索法在数组中搜索值,前提是数组已经排序
        int index = Arrays.binarySearch(numbers, 30);
        System.out.println("Index of 30: " + index);
    }
}
高级功能    描述
多维数组    可以用来表示多维数据结构,例如矩阵。
Java集合框架    动态数组和映射,用于在程序运行时动态存储元素。
高级排序与搜索    利用Java提供的工具类对数组进行高效的排序和搜索。
4.2 类

        类是Java面向对象程序设计的基础,是创建对象的蓝图或原型。

// 类的示例代码
public class Book {
    
    // 实例变量(属性)
    private String title;
    private String author;
    private int year;
 
    // 类构造器
    public Book(String title, String author, int year) {
        this.title = title;
        this.author = author;
        this.year = year;
    }
 
    // 实例方法
    public void displayInfo() {
        System.out.println("Book: " + title + ", Author: " + author + ", Year: " + year);
    }
}

概念    描述
类定义    包含属性和方法的模板定义。
构造器    特殊的方法,用于在创建对象时初始化对象。
实例变量    在类中定义,为每个对象实例保留其独有的状态。
实例方法    属于对象的方法,能够访问对象的状态和行为。
第五章 继承与多态

        继承允许一个类继承另一个类的属性和方法,而多态允许子类重写父类的方法。

// 继承与多态示例代码
 
// 父类
class Animal {
    public void makeSound() {
        System.out.println("Some sound");
    }
}
 
// 子类
class Dog extends Animal {
    // 重写方法(多态)
    @Override
    public void makeSound() {
        System.out.println("Bark bark");
    }
}
 
public class TestInheritance {
    public static void main(String[] args) {
        Dog myDog = new Dog();
        myDog.makeSound(); // 输出: Bark bark
    }
}

概念    描述
继承    使用 extends 关键字,子类获得父类的属性和方法。
方法重写    子类提供父类方法的特定实现。
类型转换    子类对象可以被视为是父类的实例,反之不行。
第六章 抽象类与接口

        抽象类和接口都不能实例化,用于声明类的某些行为,具体实现由子类完成。

// 抽象类与接口示例代码
 
// 抽象类
abstract class Shape {
    String color;
    
    // 抽象方法
    abstract double area();
    
    public String getColor() {
        return color;
    }
}
 
// 接口
interface Drawable {
    void draw();
}
 
// 子类
class Circle extends Shape implements Drawable {
    double radius;
 
    Circle(double radius) {
        this.radius = radius;
    }
 
    // 实现抽象方法
    @Override
    double area() {
        return Math.PI * radius * radius;
    }
 
    // 实现接口方法
    @Override
    public void draw() {
        System.out.println("Drawing Circle");
    }
}

概念    描述
抽象类    使用 abstract 关键字声明,可以包含抽象方法和具体方法。
接口    使用 interface 关键字声明,只能包含抽象方法(Java 8之前)。
实现    子类使用 extends 关键字继承抽象类,使用 implements 关键字实现接口

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值