当前位置:首页 > 后端开发 > 正文

java怎么使用

安装JDK后,用文本编辑器写 Java代码(如 public class Main { public static void main(String[] args) {} }),通过 javac编译成.class文件

Java运行环境搭建

1 JDK安装与配置

核心步骤

| 操作系统 | 下载链接 | 关键操作 |

|—————-|——————————|————————————————————————–|

| Windows | Oracle官网/OpenJDK | ① 下载安装包 → ② 设置JAVA_HOME环境变量 → ③ 将%JAVA_HOME%bin加入Path |

| macOS/Linux | Homebrew (brew install java)| 自动完成路径配置 |

| Ubuntu/Debian | sudo apt install openjdk-17| 命令行直接安装 |

验证安装:终端输入java -version应显示版本号,javac命令可执行编译。

2 集成开发环境(IDE)选择

工具 特点 适用场景
IntelliJ IDEA 智能提示强,插件生态丰富 企业级项目开发
Eclipse 开源免费,支持多种语言 教学场景/轻量级项目
VS Code + Java插件 轻量化,启动速度快 快速脚本编写/学习过渡期


Java基础语法详解

1 数据类型与变量定义

类别 示例 默认值 内存占用
基本类型 int age = 25; int→0, float→NaN int:4字节
引用类型 String name = "John"; null 堆区地址指针
包装类 Integer count = 10; 自动装箱拆箱 对象头+实际数据

注意:char占2字节(Unicode编码),boolean不参与数值运算。

2 流程控制语句

// 三种循环对比 for (int i = 0; i < 5; i++) { ... } // 明确次数时首选 while (condition) { ... } // 条件满足即执行 do { ... } while (condition); // 至少执行一次

跳转语句:break终止当前循环/switch,continue跳过本次剩余代码进入下一轮。

3 数组与集合操作

操作 传统数组 ArrayList优势
动态扩容 固定长度 自动增长(底层ArrayCopy)
元素类型限制 单一类型 允许null和混合类型
常用方法 length属性 add(), get(), remove()等

示例代码:

// 创建并初始化数组 int[] scores = new int[]{90, 85, 78}; System.out.println("最高分: " + Arrays.stream(scores).max().getAsInt()); // 使用List集合 List<String> fruits = new ArrayList<>(); fruits.add("Apple"); fruits.add("Banana"); fruits.forEach(System.out::println); // Lambda表达式遍历


面向对象编程核心

1 类与对象的生命周期

阶段 触发时机 典型行为
加载 首次使用 JVM加载.class文件到内存
实例化 new关键字调用构造器 分配堆区内存,初始化字段
销毁 GC回收无引用对象 finalize()方法可选执行

构造器重载示例

public class Person { private String name; private int age; // 无参构造器 public Person() {} // 全参构造器 public Person(String name, int age) { this.name = name; this.age = age; } }

2 继承与多态实现

// 父类声明为abstract强制子类实现抽象方法 abstract class Animal { abstract void makeSound(); } class Dog extends Animal { @Override void makeSound() { System.out.println("汪汪"); } } // 多态应用 Animal pet = new Dog(); pet.makeSound(); // 输出"汪汪"

3 接口与抽象类区别

特性 接口 抽象类
成员变量 public static final 普通成员变量
方法实现 只能声明不能实现 可提供默认实现
多继承能力 支持多个接口 Java单继承限制
设计目的 定义行为规范 复用公共代码模板


高级特性与最佳实践

1 异常处理机制

try { FileReader fr = new FileReader("data.txt"); } catch (FileNotFoundException e) { System.err.println("文件不存在: " + e.getMessage()); } finally { // 资源释放逻辑(推荐使用try-with-resources) }

自定义异常示例

java怎么使用 第1张

2 泛型编程规范

类型擦除警告:运行时无法获取具体类型参数,需通过instanceof判断。

正确用法:

// 带通配符的上限限定 List<? extends Number> numbers = new ArrayList<Integer>(); numbers.add(null); // 唯一允许添加的元素

3 注解与反射应用

内置注解 作用场景 示例
@Override 标识重写父类方法 @Override public String toString()
@Deprecated 标记过时API @Deprecated public void oldMethod()
@SuppressWarnings 抑制特定警告信息 @SuppressWarnings("unchecked")

反射获取类信息

Class<Person> clazz = Person.class; Constructor<Person> ctor = clazz.getConstructor(String.class, int.class); Person p = ctor.newInstance("Tom", 25);


标准库常用组件

1 集合框架体系

接口/类 特点 适用场景
List 有序可重复,允许null 按索引访问元素
Set 无序不可重复,null最多一个 去重/交集/差集运算
Map 键值对存储,键不可重复 快速查找关联关系
Deque 双端队列,两头都可进出 栈/队列混合使用场景

性能对比

java怎么使用 第2张

  • HashMap查询O(1),但无序;TreeMap按键排序,红黑树实现。
  • ArrayList随机访问快,LinkedList频繁增删效率高。

2 I/O流操作

流类型 特点 典型用途
FileInputStream 字节流读取文件 图片/视频等二进制数据处理
BufferedReader 缓冲字符流,提高读写效率 逐行读取文本文件
ObjectOutputStream 序列化对象到文件 持久化复杂对象状态

NIO非阻塞I/O

Path path = Paths.get("example.txt"); Files.lines(path).forEach(System.out::println); // Java 8新特性


完整开发流程示例

1 简单控制台程序

import java.util.Scanner; public class Calculator { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入第一个数字: "); int num1 = scanner.nextInt(); System.out.print("请输入第二个数字: "); int num2 = scanner.nextInt(); System.out.printf("%d + %d = %dn", num1, num2, num1 + num2); } }

2 Maven项目管理

pom.xml依赖配置示例:

<dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies>


相关问答FAQs

Q1: 为什么会出现ClassNotFoundException?

A: 此异常表示JVM在类路径中找不到指定的类文件,常见原因包括:① 未将包含该类的目录/JAR包添加到类路径;② 类名拼写错误(区分大小写);③ 使用了错误的包声明,解决方案:检查CLASSPATH环境变量,确认编译后的.class文件位置,或在IDE中重新配置构建路径。

Q2: 如何处理数组越界异常ArrayIndexOutOfBoundsException?

A: 该异常发生在访问数组索引超出0~length-1范围时,预防措施:① 访问前使用array.length判断边界;② 改用List集合替代数组;③ 在循环中使用增强for循环(for(type element : array))。

int[] arr = {1,2,3}; for(int i=0; i<arr.length; i++){ // 安全写法 System.out.println(arr[

java怎么使用 第3张

0