Java合集

Java

:第一章学习Java基础


前言

Java是一种高级编程语言,由Sun Microsystems公司于1995年发布。Java的设计目标是“编写一次,到处运行”,这使得Java应用程序可以在任何安装了Java虚拟机(JVM)的操作系统上运行,而无需重新编译。Java是一种面向对象的语言,它支持封装、继承、多态等面向对象的特性。Java还支持自动内存管理和垃圾回收,这使得Java程序员无需关心内存的分配和释放。Java具有丰富的类库和工具,可以用于开发各种类型的应用程序,包括Web应用程序、桌面应用程序、移动应用程序等。由于Java的普及和强大功能,它已成为一种非常流行和广泛使用的编程语言


一、学习Java基本语法和数据类型

学习Java的基本语法和数据类型是学习Java编程语言的第一步。以下是一些Java的基本语法和数据类型的介绍:

基本语法:

编写Java程序的基本结构:

public class HelloWorld {
 public static void main(String[] args) {
 System.out.println("Hello, World!");
 }
}

变量和数据类型:
在Java中,变量需要先声明再使用。变量的声明包括数据类型和变量名。Java是一种强类型语言,这意味着每个变量都需要有一个特定的数据类型。Java中的基本数据类型包括:
byte:8位有符号整数
short:16位有符号整数
int:32位有符号整数
long:64位有符号整数
float:32位单精度浮点数
double:64位双精度浮点数
char:16位Unicode字符
boolean:布尔值(true或false)
控制流程:
Java中的控制流程包括条件语句和循环语句。条件语句包括if语句和switch语句。循环语句包括for循环、while循环和do-while循环。

方法:
在Java中,方法是一种组织代码的方式,可以用来执行特定的任务。方法可以有参数,并返回一个值。方法的定义包括访问修饰符、返回类型、方法名和参数列表。

类和对象
Java是一种面向对象的编程语言,类是对象的蓝图。在Java中,可以使用class关键字来定义一个类。类中可以包含属性(变量)和方法。对象是类的实例,可以使用关键字new来创建一个对象。

基本数据类型对应的类:
在Java中,每个基本数据类型都有一个对应的类。例如,int类型对应的类是Integer,double类型对应的类是Double。这些类提供了构造器、静态方法和实例方法,可以用来对基本数据类型进行操作。

总结:
Java的基本语法和数据类型是学习Java编程的基础。在学习Java的过程中,需要掌握变量和数据类型的声明和使用,控制流程的编写,方法的定义和调用,以及类和对象的概念。同时,了解基本数据类型对应的类也是非常有帮助的。

下面是一些Java基本语法和数据类型的代码示例:

变量和数据类型:


public class Variables {
 public static void main(String[] args) {
 int age = 20; // int类型变量
 double salary = 5000.0; // double类型变量
 char grade = 'A'; // char类型变量
 boolean isPass = true; // boolean类型变量
 }
}

控制流程:


public class ControlFlow {
 public static void main(String[] args) {
 int score = 80;
 if (score >= 60) {
 System.out.println("Pass");
 } else {
 System.out.println("Fail");
 }
 }
}

方法:


public class Methods {
 public static void printMessage(String message) {
 System.out.println(message);
 }
 public static void main(String[] args) {
 printMessage("Hello, World!");
 }
}

类和对象:


public class MyClass {
 private int age;
 private String name;
 public MyClass(int age, String name) {
 this.age = age;
 this.name = name;
 }
 public void printInfo() {
 System.out.println("Age: " + age + ", Name: " + name);
 }
 public static void main(String[] args) {
 MyClass obj = new MyClass(20, "John");
 obj.printInfo();
 }
}

以上代码示例分别展示了Java中变量和数据类型、控制流程、方法和类的使用方法。希望对你学习Java有所帮助。

二、学习控制流程(if语句、循环等)

Java是一种广泛使用的编程语言,掌握Java中的控制流程对于编写有效的程序非常重要。以下是一份详细的Java控制流程教学,适合纯小白入门到精通。

1. if语句

if语句是一种条件语句,可以根据条件判断执行不同的代码块。

语法:

text
if (condition) {
    // 如果条件为true,则执行这里的代码
} else {
    // 如果条件为false,则执行这里的代码
}

示例:

int age = 20;
if (age >= 18) {
    System.out.println("成年人");
} else {
    System.out.println("未成年人");
}

上面的示例中,如果age大于等于18,则输出“成年人”,否则输出“未成年人”。

循环
循环是一种控制结构,可以让程序重复执行某些代码块。

2.1 for循环

for循环是一种常用的循环,可以根据一个范围内的数字执行代码块。

语法:

for (int i = 0; i < limit; i++) {
    // 执行代码块
}

示例:

for (int i = 0; i < 10; i++) {
    System.out.println(i);
}

上面的示例中,程序将输出0到9的数字。

2.2 while循环

while循环是一种常用的循环,可以根据一个条件重复执行代码块。

语法:

while (condition) {
    // 执行代码块
}

示例:

int i = 0;
while (i < 10) {
    System.out.println(i);
    i++;
}

上面的示例中,程序将输出0到9的数字。

2.3 do…while循环

do…while循环是一种特殊的循环,先执行一次代码块,然后根据条件重复执行代码块。

语法:

do {
    // 执行代码块
} while (condition);

示例:

int i = 0;
do {
    System.out.println(i);
    i++;
} while (i < 10);

上面的示例中,程序将输出0到9的数字。

条件运算符
条件运算符是一种特殊的运算符,可以根据条件判断返回不同的值。

语法:

boolean condition = true;
int result = condition ? value1 : value2;

示例:

int x = 10, y = 20;
int max = x > y ? x : y;

上面的示例中,根据x和y的值,将返回较大的值赋给变量max。

异常处理

在Java中,异常处理是一种重要的控制流程的方式,可以处理程序运行过程中的异常情况。

语法:

try {
    // 尝试执行的代码块
} catch (Exception e) {
    // 处理异常的代码块
} finally {
    // 无论是否发生异常,都会执行的代码块
}

示例:

try {
    int result = 10 / 0;
} catch (ArithmeticException e) {
    System.out.println("除数不能为0");
} finally {
    System.out.println("程序结束");
}

上面的示例中,如果发生除零异常,则输出“除数不能为0”,否则输出“程序结束”。

总结

以上是Java中控制流程的一些基本知识。学习Java控制流程时,要理解if语句、循环等控制结构的基本概念,并进行大量的练习。同时,要学会使用条件运算符和异常处理等高级技巧,提高程序的稳定性和可靠性。

三、学习Java中的对象和类

java中的对象和类是面向对象编程的基础,下面将介绍它们的概念和使用方法。

类(Class)

类是一种用户自定义的数据类型,它定义了一组具有共同属性和行为的对象。在Java中,所有的类都继承自一个基本类,即Object类。

一个类通常包括:

属性(Field):类中的变量。
方法(Method):类中的函数,用于实现对象的行为。
构造器(Constructor):类中的一个特殊方法,用于创建对象时初始化对象的属性。
成员(Member):类中的属性和方法的统称。

下面是一个简单的定义示例:

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void sayHello() {
        System.out.println("Hello, my name is " + name + " and I am " + age + " years old.");
    }
}
对象(Object)

对象是类的实例,它具有类中定义的属性和方法。在Java中,使用关键字new来创建一个对象。

例如,下面的代码创建了一个Person对象:

Person person = new Person("John", 30);

创建对象后,可以通过点号(.)来访问对象的属性和方法,例如:

String name = person.getName(); // 获取对象的name属性
person.setAge(31); // 修改对象的age属性
person.sayHello(); // 调用对象的sayHello方法
封装(Encapsulation)

是面向对象编程中的一个概念,指的是将对象的属性和方法绑定在一起,形成一个独立的单元。封装的目的是隐藏对象的实现细节,只对外提供有限的接口,使得对象的使用者不能直接访问对象的内部状态,只能通过调用对象的方法来操作对象。

在Java中,封装是通过定义类和对象来实现的。一个类可以包含多个属性和方法,这些属性和方法可以被封装起来,形成一个独立的对象。对象的属性可以被设置为私有(private),这样其他对象就不能直接访问这些属性,只能通过调用公有(public)的方法来操作这些属性。

例如,下面是一个Java类的示例代码,它封装了一个名为“person”的对象的属性和方法:

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

在这个示例中,Person类包含两个私有属性name和age,以及四个公有方法getName、getAge、setName和setAge。这些方法可以被其他对象调用来访问和修改Person对象的属性。

通过封装,我们可以将对象的状态和行为绑定在一起,形成一个独立的单元。这样可以减少程序中的耦合度,提高代码的可维护性和可读性。

继承(Inheritance)

继承是一种机制,允许一个类(子类)继承另一个类(父类)的属性和方法。子类继承父类后,可以重写父类的方法,也可以添加自己的方法和属性。

例如,下面的代码定义了一个子类Student,它继承自父类Person:

public class Student extends Person {
    private String school;

    public Student(String name, int age, String school) {
        super(name, age);
        this.school = school;
    }

    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }

    public void sayHello() {
        System.out.println("Hello, my name is " + name + " and I am " + age + " years old. I study at " + school + ".");
    }
}

在这个例子中,Student类继承了Person类的属性和方法,并添加了自己的属性和方法。通过继承,Student类可以共享Person类的代码,同时也可以扩展自己的功能。

多态(Polymorphism)

多态是一种机制,允许不同类的对象对相同的消息做出不同的响应。在Java中,多态可以通过接口(Interface)和抽象类(Abstract Class)来实现。

例如,下面的代码定义了一个接口Animal,它包含一个名为makeSound的方法:

public interface Animal {
    void makeSound();
}

然后,我们定义两个实现该接口的类Dog和Cat:

public class Dog implements Animal {
    @Override
    public void makeSound() {
        System.out.println("汪汪!");
    }
}

public class Cat implements Animal {
    @Override
    public void makeSound() {
        System.out.println("喵喵!");
    }
}

现在,我们可以创建一个Animal类型的变量,并通过它来调用makeSound方法:

Animal animal = new Dog();
animal.makeSound(); // 输出:汪汪!

animal = new Cat();
animal.makeSound(); // 输出:喵喵!

通过多态,我们可以将不同类的对象赋值给同一个类型的变量,并通过该变量调用它们的方法,从而实现代码的复用和灵活性。

总结:
以上就是Java中对象和类的基础知识。要学习更高级的主题,如接口、抽象类、集合框架、线程等,可以参考相关的Java教程和文档。

四、学习Java的继承、多态和接口

继承、多态和接口是Java中面向对象编程的三个重要概念,下面分别介绍一下这三个概念:

继承

继承是一种机制,允许一个类(称为子类)继承另一个类(称为父类)的特征和行为。在Java中,一个子类可以继承父类的成员变量和成员方法,从而避免重复编写代码。继承是通过关键字extends实现的。例如:


public class Animal {
    protected String name;
    protected int age;
    
    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public void eat() {
        System.out.println("Animal is eating");
    }
}

public class Dog extends Animal {
    public Dog(String name, int age) {
        super(name, age);
    }
    
    public void bark() {
        System.out.println("Dog is barking");
    }
}

在这个例子中,Dog类继承了Animal类的成员变量和成员方法,同时还可以有自己的特有方法,比如bark()方法。

多态

多态是指同一个操作作用于不同的对象上时,可以产生不同的效果。在Java中,多态是通过方法重写实现的。当一个子类继承了一个父类,并且重写了父类的方法,那么子类的对象就可以通过父类的引用调用这个方法,从而实现不同的行为。例如:

public class Animal {
    protected String name;
    protected int age;
    
    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public void eat() {
        System.out.println("Animal is eating");
    }
    
    public void makeSound() {
        System.out.println("Animal is making sound");
    }
}

public class Dog extends Animal {
    public Dog(String name, int age) {
        super(name, age);
    }
    
    @Override
    public void eat() {
        System.out.println("Dog is eating");
    }
    
    @Override
    public void makeSound() {
        System.out.println("Dog is barking");
    }
}

public class Cat extends Animal {
    public Cat(String name, int age) {
        super(name, age);
    }
    
    @Override
    public void eat() {
        System.out.println("Cat is eating");
    }
    
    @Override
    public void makeSound() {
        System.out.println("Cat is meowing");
    }
}

在这个例子中,Dog和Cat类都继承了Animal类,并且重写了eat()和makeSound()方法,从而实现了不同的行为。我们可以创建一个Animal类型的数组,然后往里面添加Dog和Cat类型的对象,最后通过循环调用它们的eat()和makeSound()方法,就可以看到多态的效果。

接口

接口是一种抽象的类型,它定义了一组需要被实现的方法。在Java中,接口使用关键字interface来定义。接口中的方法默认是抽象的(即没有方法体),但是可以通过default关键字来添加默认实现。接口也可以包含常量和静态方法。例如:

public interface Animal {
    void eat();
    void makeSound();
}

public class Dog implements Animal {
    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    @Override
    public void eat() {
        System.out.println("Dog is eating");
    }
    
    @Override
    public void makeSound() {
        System.out.println("Dog is barking");
    }
}

public class Cat implements Animal {
    public Cat(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    @Override
    public void eat() {
        System.out.println("Cat is eating");
    }
    
    @Override
    public void makeSound() {
        System.out.println("Cat is meowing");
    }
}

在这个例子中,Animal接口定义了一组需要被实现的方法,而Dog和Cat类都实现了这个接口,并且提供了具体的实现。通过接口,我们可以让不同的类具有相同的行为,从而实现代码的复用和模块化。

总结:
继承、多态和接口是Java中面向对象编程的三个重要概念,它们可以帮助我们设计出结构清晰、可复用、可维护的代码。在实际编程中,这三个概念经常会被结合使用,从而实现更加复杂和灵活的系统。

五、学习Java的集合框架和异常处理

Java集合框架和异常处理是Java编程中非常重要的两个知识点。下面,我将为你介绍一下这两个知识点的基本内容和学习方法。

集合框架

Java集合框架是一个用于处理集合类的框架,它提供了一系列的接口和实现类来帮助我们更方便地处理数据集合。Java集合框架的主要接口有Set, List, Map等,它们分别表示一组互不相同的元素、一个有序的元素序列和一组键值对。Java集合框架的主要实现类有ArrayList, LinkedList, HashSet, HashMap等。

学习方法

  1. 理解集合框架的基本概念和接口。可以通过阅读Java文档或相关书籍来了解这些内容。 学习常用的实现类,例如ArrayList,
  2. LinkedList, HashSet, HashMap等。可以通过阅读Java文档或相关书籍,并结合实际例子来加深理解。
  3. 了解集合框架中的常用方法,例如添加、删除、遍历等。可以通过阅读Java文档或相关书籍,并结合实际例子来加深理解。
  4. 了解集合框架中的高级特性,例如集合的排序、搜索等。可以通过阅读Java文档或相关书籍,并结合实际例子来加深理解。

异常处理

Java异常处理是一种处理程序中错误和异常情况的方法。在Java中,异常是通过throw语句抛出的,可以通过try、catch、finally语句来捕获和处理异常。

学习方法

  1. 理解异常处理的基本概念和语法。可以通过阅读Java文档或相关书籍来了解这些内容。
  2. 学习如何抛出异常。可以通过阅读Java文档或相关书籍,并结合实际例子来加深理解。
  3. 学习如何捕获和处理异常。可以通过阅读Java文档或相关书籍,并结合实际例子来加深理解。
  4. 了解异常处理中的高级特性,例如自定义异常、异常链等。可以通过阅读Java文档或相关书籍,并结合实际例子来加深理解。

总结
Java集合框架和异常处理是Java编程中非常重要的两个知识点。通过以上学习方法,你可以更好地掌握这些内容,并在实际编程中应用它们。
下面我为你提供一些Java集合框架和异常处理的示例代码。

集合框架示例
import java.util.ArrayList;
import java.util.List;

public class CollectionExample {
    public static void main(String[] args) {
        // 创建一个ArrayList对象
        List<String> list = new ArrayList<>();
        
        // 添加元素到列表中
        list.add("apple");
        list.add("banana");
        list.add("cherry");
        
        // 获取列表中的元素
        String fruit = list.get(0);
        System.out.println(fruit); // 输出:apple
        
        // 删除列表中的元素
        list.remove(1); // 删除索引为1的元素
        System.out.println(list); // 输出:[apple, cherry]
        
        // 遍历列表中的元素
        for (String item : list) {
            System.out.println(item); // 输出:apple
                                     // 输出:cherry
        }
    }
}
异常处理示例
public class ExceptionExample {
    public static void main(String[] args) {
        try {
            // 尝试执行可能会抛出异常的代码
            int result = 10 / 0;
            System.out.println(result); // 输出:0
        } catch (ArithmeticException e) {
            // 捕获并处理异常
            System.out.println("除数不能为0!");
        } finally {
            // 无论是否发生异常,都会执行的代码
            System.out.println("程序结束!");
        }
    }
}

以上示例代码分别展示了Java集合框架和异常处理的基本用法。同学们可以运行这些代码来更好地理解它们的用法。

Java集合框架中的常用方法包括添加、删除、遍历等。下面我为你介绍一下这些方法的用法。

添加元素

Java集合框架中的常用方法包括添加元素。不同的实现类可能会有不同的方法,但是基本的添加方法是add()。例如,对于ArrayList对象,你可以使用add()方法来添加元素到列表中。示例如下:

import java.util.ArrayList;
import java.util.List;

public class CollectionExample {
    public static void main(String[] args) {
        // 创建一个ArrayList对象
        List<String> list = new ArrayList<>();
        
        // 添加元素到列表中
        list.add("apple");
        list.add("banana");
        list.add("cherry");
    }
}
删除元素

Java集合框架中的常用方法包括删除元素。不同的实现类可能会有不同的方法,但是基本的删除方法是remove()。例如,对于ArrayList对象,你可以使用remove()方法来删除列表中的元素。示例如下:

import java.util.ArrayList;
import java.util.List;

public class CollectionExample {
    public static void main(String[] args) {
        // 创建一个ArrayList对象
        List<String> list = new ArrayList<>();
        
        // 添加元素到列表中
        list.add("apple");
        list.add("banana");
        list.add("cherry");
        
        // 删除列表中的元素
        list.remove(1); // 删除索引为1的元素
    }
}
遍历元素

Java集合框架中的常用方法包括遍历元素。不同的实现类可能会有不同的方法,但是基本的遍历方法是forEach(), iterator()等。例如,对于ArrayList对象,你可以使用forEach()方法来遍历列表中的元素。示例如下:

import java.util.ArrayList;
import java.util.List;

public class CollectionExample {
    public static void main(String[] args) {
        // 创建一个ArrayList对象
        List<String> list = new ArrayList<>();
        
        // 添加元素到列表中
        list.add("apple");
        list.add("banana");
        list.add("cherry");
        
        // 遍历列表中的元素
        list.forEach(item -> System.out.println(item));
    }
}

总结
以上是Java集合框架中常用的添加、删除、遍历等方法的示例代码。你可以根据实际需要选择合适的方法。

扩展

常用的实现类ArrayList, LinkedList, HashSet, HashMap等

Java集合框架中常用的实现类包括ArrayList, LinkedList, HashSet, HashMap等。下面我为你介绍一下这些实现类的基本特点和使用方法。

  1. ArrayList
  2. ArrayList是Java集合框架中常用的一个实现类,它是一个动态数组,可以存储任意类型的元素。
  3. ArrayList的性能特点是:增删元素的时间复杂度为O(1),查找元素的时间复杂度为O(n)。

使用方法:

import java.util.ArrayList;
import java.util.List;

public class CollectionExample {
    public static void main(String[] args) {
        // 创建一个ArrayList对象
        List<String> list = new ArrayList<>();
        
        // 添加元素到列表中
        list.add("apple");
        list.add("banana");
        list.add("cherry");
        
        // 获取列表中的元素
        String fruit = list.get(0);
        System.out.println(fruit); // 输出:apple
        
        // 删除列表中的元素
        list.remove(1); // 删除索引为1的元素
        System.out.println(list); // 输出:[apple, cherry]
        
        // 遍历列表中的元素
        for (String item : list) {
            System.out.println(item); // 输出:apple
                                     // 输出:cherry
        }
    }
}
  1. LinkedList
  2. LinkedList是Java集合框架中另一个常用的实现类,它是一个双向链表,可以存储任意类型的元素。
  3. LinkedList的性能特点是:增删元素的时间复杂度为O(1),查找元素的时间复杂度为O(n)。

使用方法:

import java.util.LinkedList;
import java.util.List;

public class CollectionExample {
    public static void main(String[] args) {
        // 创建一个LinkedList对象
        List<String> list = new LinkedList<>();
        
        // 添加元素到列表中
        list.add("apple");
        list.add("banana");
        list.add("cherry");
        
        // 获取列表中的元素
        String fruit = list.get(0);
        System.out.println(fruit); // 输出:apple
        
        // 删除列表中的元素
        list.remove(1); // 删除索引为1的元素
        System.out.println(list); // 输出:[apple, cherry]
        
        // 遍历列表中的元素
        for (String item : list) {
            System.out.println(item); // 输出:apple
                                     // 输出:cherry
        }
    }
}
  1. HashSet
  2. HashSet是Java集合框架中常用的实现类,它是一个基于哈希表的集合类,可以存储任意类型的元素。
  3. HashSet的性能特点是:添加、删除、判断元素是否存在的时间复杂度为O(1)。

使用方法:

import java.util.HashSet;
import java.util.Set;

public class CollectionExample {
    public static void main(String[] args) {
        // 创建一个HashSet对象
        Set<String> set = new HashSet<>();
        
        // 添加元素到集合中
        set.add("apple");
        set.add("banana");
        set.add("cherry");
        
        // 判断集合中是否存在某个元素
        boolean contains = set.contains("banana");
        System.out.println(contains); // 输出:true
        
        // 删除集合中的元素
        set.remove("banana"); // 删除元素
        System.out.println(set); // 输出:[apple, cherry]
        
        // 遍历集合中的元素
        for (String item : set) {
            System.out.println(item); // 输出:apple
                                     // 输出:cherry
        }
    }
}
  1. HashMap
  2. HashMap是Java集合框架中常用的实现类,它是一个基于哈希表的键值对集合类,可以存储任意类型的键和值。
  3. HashMap的性能特点是:添加、删除、获取元素的时间复杂度为O(1)。

使用方法:

import java.util.HashMap;
import java.util.Map;

public class CollectionExample {
    public static void main(String[] args) {
        // 创建一个HashMap对象
        Map<String, String> map = new HashMap<>();
        
        // 添加元素到映射中
        map.put("name", "John");
        map.put("age", "30");
        map.put("gender", "Male");
        
        // 获取映射中的元素
        String name = map.get("name");
        System.out.println(name); // 输出:John
        
        // 删除映射中的元素
        map.remove("age"); // 删除元素
        System.out.println(map); // 输出:{name=John, gender=Male}
        
        // 遍历映射中的元素
        for (Map.Entry<String, String> entry : map.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
            // 输出:name: John
            // 输出:gender: Male
        }
    }
}

以上是Java集合框架中常用的实现类的基本特点和使用方法。你可以根据实际需要选择合适实现类。

总结

Java基础需要掌握Java的基本语法和数据类型,控制流程,对象和类,继承、多态和接口,以及Java的集合框架和异常处理等知识点。在学习过程中,需要通过编写代码和练习来巩固所学的知识。

  • 36
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值