【java】java基础知识

115 阅读7分钟

前言

Java 是一种广泛使用的编程语言,而 JDK 8 则是 Java 开发工具包(Java Development Kit)的一个特定版本。

JDK 是用于支持 Java 程序开发的工具集合,其中包含了 Java 编译器、运行时环境(JRE)、调试工具等一系列开发所需的组件。JDK 8 就是其中的第 8 个主要版本。

在开发 Java 应用程序时,通常需要安装相应版本的 JDK,以便能够编译和运行 Java 代码。
如果您要使用 Java 8 的新特性或遵循特定的开发要求,就需要安装 JDK 8 这个版本。

java程序开发的3步骤:
1/编写源代码
2/编译代码javac
3/执行代码java

我们写的java的文件的后缀必须是.java .java文件是 .java文件经过编译之后,得到的是.class文件(字节码文件),这样的文件机器就认识了。 java是高级语言,机器不认识,经过编译之后,变成.class字节码文件,是机器语言,这样机器就认识了,就可以执行了。

.java源代码文件名字,必须和class类的名字一样。

JDK

jdk是java开发者工具包,,只有先安装jdk,才能使用java语言。
jdk有很多的版本,最早的是jdk1.0, 后来出现jdk2.0,jdk3.0等
jdk现在已经到了jdk22版本了,发展迅猛。 


如何下载jdk?
官方网站:https://www.oracle.com/

图片.png

点击【product】按钮,

图片.png

图片.png

图片.png

安装完jdk之后,里面有两个文件很重要,java 和 javac java是执行工具,javac是编译工具。

为什么需要编译呢?这就好比我和外国人说中国话,他听不懂,我就需要把我说的中国话翻译成外语,然后他们就能听懂了。

编译的过程,就好比是翻译的过程,编译成计算机能识别的语言。

图片.png

java中函数的定义

void是一种返回值的类型,如果某个函数前面有void, 说明该方法没有返回值,但是可以有入参。 

<1>返回值类型是void

在Java开发中,`void` 后面紧跟的确实是一个函数(在Java中通常称为方法)。
`void` 关键字是Java中的一个访问修饰符,用于指定该方法【不返回任何值】。
方法(函数)是Java程序的基本构建块,它们封装了完成特定任务的代码。

当返回值类型为 `void` 时,表示该方法不返回任何值。这意味着在调用此方法后,你不能期望从该方法获取任何数据。但是,`void` 方法仍然可以执行一些操作,比如修改对象的属性、打印输出到控制台、或者执行一些计算但不需要将结果返回给调用者。
public class HelloWorld {  
  
    // 这是一个void方法,它不返回任何值  
    public void printHello() {  
        System.out.println("Hello, World!");  
    }  
  
    public static void main(String[] args) {  
        HelloWorld helloWorld = new HelloWorld();  
        helloWorld.printHello(); // 调用void方法,不接收返回值  
    }  
}
在这个例子中,`printHello` 方法是一个 `void` 方法,它不接受任何参数,也不返回任何值。
它仅仅打印一条消息到控制台。
在 `main` 方法中,我们创建了 `HelloWorld` 类的一个实例,并调用了 `printHello` 方法。

注意,由于 `printHello` 方法是 `void` 类型的,所以我们不需要(也不能)使用任何变量来接收它的返回值。

<2>有返回值(及返回值的类型不是void,而是其他的类型,比如int, double, boolean等)

在Java中,定义一个带有返回值的函数(在Java中称为方法)时,你需要在方法声明中指定返回值的类型。
这个类型可以是Java中的任何有效数据类型,包括基本数据类型(如`int`、`double`、`boolean`等)和引用数据类型(如`String`、自定义的类类型等)。
public class Example {  
 
   // 定义一个返回int类型值的方法  
   public int add(int a, int b) {  
       return a + b; // 返回两个整数的和  
   }  
 
   // 定义一个返回String类型值的方法  
   public String greet(String name) {  
       return "Hello, " + name + "!"; // 返回一个包含问候语的字符串  
   }  
 
   public static void main(String[] args) {  
       Example example = new Example();  
 
       // 调用add方法,并接收返回的int值  
       int sum = example.add(5, 3);  
       System.out.println("Sum: " + sum); // 输出:Sum: 8  
 
       // 调用greet方法,并接收返回的String值  
       String greeting = example.greet("Alice");  
       System.out.println(greeting); // 输出:Hello, Alice!  
   }  
}
在这个例子中,`add` 方法接受两个`int`类型的参数,并返回它们的和(也是一个`int`类型的值)。
`greet` 方法接受一个`String`类型的参数(名字),并返回一个包含问候语和该名字的`String`类型的值。

注意,在方法体中,你需要使用`return`语句来返回指定的值。
`return`语句后面跟的是要返回的值,该值的类型必须与方法声明中指定的返回类型相匹配。

如果方法声明了返回类型(除了`void`),那么在方法体中必须至少有一个`return`语句,除非方法在遇到`return`语句之前就已经通过抛出异常来终止了。

src文件夹

在Java项目中,`src` 通常不是一个标准的Java文件夹,但它是一个广泛使用的约定,代表“source”(源代码)的缩写。

在大多数Java开发环境中,特别是使用IDE(如IntelliJ IDEA、Eclipse等)时,`src` 文件夹被用作存放Java源代码文件(即`.java`文件)的地方。

static

在Java中,`static` 关键字是一个非常重要的修饰符,它可以用在变量、方法、代码块以及内部类上。

当你在函数(方法)前使用 `static` 关键字时,这表示该方法是一个静态方法。

静态方法有以下特点和意义:
  1. 属于类而非实例:静态方法属于类本身,而不是类的某个特定实例。因此,你可以不创建类的实例就直接通过类名来调用静态方法。这在进行一些工具类方法的定义时非常有用,因为你可以在不创建对象的情况下直接使用这些方法。
  2. 不能访问非静态成员:静态方法不能直接访问类的非静态成员(变量和方法),因为非静态成员属于类的特定实例,而静态方法属于类本身。如果静态方法需要访问非静态成员,它必须首先通过某种方式(如创建类的实例)来获得对非静态成员的访问权限。
  3. 隐藏(覆盖)的概念不同:静态方法不能被覆盖,但是可以被隐藏。这与实例方法不同,实例方法可以被子类覆盖。当你在子类中定义一个与父类中同名的静态方法时,这并不是覆盖父类的方法,而是隐藏了父类的那个静态方法。
  4. 加载时机:静态方法随着类的加载而加载到JVM的方法区中,因此在调用静态方法时,实际上是在调用类的字节码中的方法表里的内容。这意味着静态方法的执行不依赖于对象的创建。
  5. 内存分配:静态方法属于类,因此在内存中只会被加载一次,无论创建了多少个类的实例,静态方法都只有一份拷贝。
  6. 使用场景:静态方法通常用于实现一些辅助性的功能,这些功能不依赖于类的实例状态,比如数学计算、文件操作等。

src 文件夹的上下文中,src 文件夹用于存放Java项目的源代码文件,包括.java文件。在这些.java文件中,你可以定义类、接口、枚举等,并在其中使用static关键字来修饰方法、变量等。但需要注意的是,static的使用与src文件夹本身没有直接关系,static是Java语言中的一个特性,用于定义类的静态成员。

在Java中,调用一个方法时是否需要带上类的名字,取决于这个方法是静态的(static)还是非静态的(non-static)。

  1. 对于静态方法

    • 你可以通过类名直接调用静态方法,而无需创建类的实例。
    • 语法:类名.静态方法名(参数);
  2. 对于非静态方法

    • 你需要通过创建类的实例(即对象)来调用非静态方法。
    • 语法:类实例名.非静态方法名(参数);

这里有一个简单的例子来说明这两种情况:

public class MyClass {  
    // 静态方法  
    public static void staticMethod() {  
        System.out.println("调用静态方法");  
    }  
  
    // 非静态方法  
    public void nonStaticMethod() {  
        System.out.println("调用非静态方法");  
    }  
    
    // 调用
    public static void main(String[] args) {  
        // 通过类名直接调用静态方法  
        MyClass.staticMethod();  
  
        // 需要先创建类的实例来调用非静态方法  
        MyClass myObject = new MyClass();  
        myObject.nonStaticMethod();  
    }  
}