Java语言基础知识
一、Java程序结构
下面是一个简单的Java程序结构示例:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
这个程序由一个名为HelloWorld的类组成,其中包含了一个名为main的静态方法。main方法是Java程序的入口点,程序运行时会首先执行main方法。
Java程序的基本结构包括以下几个部分:
包声明(Package Declarations):在Java程序的顶部,可以声明程序所在的包。例如,package com.example.myapp;
导入声明(Import Declarations):在包声明之后,可以导入需要的类或者包。例如,import java.util.*;
类声明(Class Declarations):Java程序从主类开始执行,主类通常是包含main方法的类。例如:
public class MainClass {
public static void main(String[] args) {
// main method code goes here
}
}
在上述代码中,public class MainClass是类声明,public static void main(String[] args)是主方法。
变量和方法声明(Variable and Method Declarations):在类体中可以声明变量和方法。例如:
public class MainClass {
int num; // variable declaration
public void printNum() { // method declaration
System.out.println(num);
}
}
主方法(Main Method):Java程序的执行从主方法开始。主方法必须是public static void,并且接受一个字符串数组作为参数。例如:
public static void main(String[] args) {
// main method code goes here
}
程序体(Program Body):程序体包含在主方法中执行的代码。例如:
public static void main(String[] args) {
System.out.println("Hello, World!"); // program body code goes here
}
结束语句(Ending Statement):在主方法结束之后,Java程序结束。
注释(Comments):在Java程序中可以添加注释来解释代码。单行注释以//开始,多行注释以/*开始并以*/结束。
二、Java数据类型
下面是一个简单的Java数据类型示例:
int a = 10; // 基本数据类型
String b = "Hello, World!"; // 引用数据类型
数据类型是编程语言中用来定义变量或函数的数据结构和存储方式。在Java中,数据类型分为基本数据类型和引用数据类型。
基本数据类型包括整数型(byte、short、int、long)、浮点型(float、double)、布尔型(boolean)和字符型(char)。这些类型用于存储基本数据,如整数、浮点数、布尔值和字符。
整数型:整数型数据可以用于存储整数值,如byte(-128到127)、short(-32768到32767)、int(-2147483648到2147483647)、long(-9223372036854775808到9223372036854775808)。
浮点型:浮点型数据可以用于存储带有小数点的数值,如float(3.4E-38到3.4E+38)、double(1.7E-308到1.7E+308)。
布尔型:布尔型数据可以用于存储真或假的值,即true或false。
字符型:字符型数据可以用于存储字符,如'a'、'b'、'c'等。
引用数据类型包括类、接口和数组。这些类型用于存储对象的引用,可以用来创建更复杂的数据结构。
类:类是一种自定义的数据类型,它允许你定义一组属性和方法来创建一个对象。类中的属性和方法一起构成了对象的状态和行为。
接口:接口是一种引用类型,它定义了一组抽象方法,这些方法可以被实现类继承和实现。接口常用于定义对象的行为。
数组:数组是一种引用类型,它允许你存储多个同类型的元素。数组在Java中是特殊的对象,可以用来存储固定大小的同类型数据。
以上是Java中关于数据类型的详细解释。理解数据类型是编程的基础,可以帮助你更好地理解程序中数据的存储和操作方式。
这里使用了整数类型int和字符串类型String。在Java中,基本数据类型和引用数据类型是不同的,基本数据类型直接存储值,而引用数据类型存储的是对象的引用。
三、Java运算符
下面是一个简单的Java运算符示例:
int x = 10;
int y = 5;
int sum = x + y; // 算术运算符
boolean isEqual = x == y; // 比较运算符
这里使用了加法运算符和比较运算符。算术运算符包括加法、减法、乘法、除法和取模等;比较运算符包括等于、不等于、大于、小于和大于等于等。
四、Java控制语句
下面是一个简单的Java控制语句示例:
int x = 10;
if (x > 5) { // 条件语句
System.out.println("x is greater than 5");
} else {
System.out.println("x is less than or equal to 5");
}
五、Java函数和方法
下面是一个简单的Java函数和方法示例:
public class Calculator {
public int add(int a, int b) { // 方法:add
return a + b;
}
public static void main(String[] args) {
Calculator calculator = new Calculator();
int result = calculator.add(5, 3); // 调用add方法并传入参数
System.out.println("Result: " + result); // 输出结果
}
}
这里我们定义了一个Calculator类,其中包含了一个名为add的方法。在main方法中,我们创建了Calculator类的实例,并调用了add方法来执行加法运算。
六、Java类和对象
下面是一个简单的Java类和对象示例:
public class Person {
String name;
int age;
public Person(String name, int age) { // 构造函数
this.name = name;
this.age = age;
}
}
public class Main {
public static void main(String[] args) {
Person person = new Person("John", 30); // 创建Person类的实例
System.out.println("Name: " + person.name); // 输出对象的属性name
System.out.println("Age: " + person.age); // 输出对象的属性age
}
}
这里我们定义了一个Person类,其中包含了name和age两个属性,并定义了一个构造函数来初始化对象的属性。在Main类的main方法中,我们创建了Person类的实例,并输出了对象的属性name和age。
七、Java继承和多态
下面是一个简单的Java继承和多态示例:
public class Animal {
String name;
public Animal(String name) { // Animal类的构造函数
this.name = name;
}
}
public class Dog extends Animal { // Dog类继承了Animal类
String breed;
public Dog(String name, String breed) { // Dog类的构造函数
super(name); // 调用父类Animal的构造函数
this.breed = breed;
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Animal("Cat"); // Animal类的实例化对象animal,实际是Cat类的实例化对象,因为Animal类是抽象类,不能实例化对象。所以这个animal变量其实是指向Cat类的实例化对象。所以这里的类型是Animal。但是因为实际对象是Cat,所以也可以调用Cat类特有的方法。这就是多态。
扫描器
以下是一个使用Java扫描器的代码块,用于查找指定目录下的所有Java文件:
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
public class JavaScanner {
public static void main(String[] args) {
String path = "C:/myproject/src/main/java"; // 替换为你要扫描的目录路径
List<String> fileList = new ArrayList<>();
File dir = new File(path);
if (dir.exists()) {
File[] files = dir.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
fileList.addAll(scanDir(file));
} else if (file.getName().endsWith(".java")) {
fileList.add(file.getAbsolutePath());
}
}
}
} else {
System.out.println("目录不存在:" + path);
}
System.out.println("找到的Java文件数量:" + fileList.size());
for (String filePath : fileList) {
System.out.println(filePath);
}
}
private static List<String> scanDir(File dir) {
List<String> fileList = new ArrayList<>();
File[] files = dir.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
fileList.addAll(scanDir(file)); // 递归扫描子目录
} else if (file.getName().endsWith(".java")) {
fileList.add(file.getAbsolutePath());
}
}
} else {
System.out.println("目录不存在:" + dir.getAbsolutePath());
}
return fileList;
}
}