Java 基础语法

程序结构

Hello World 程序

// 这是单行注释
 
/*
 * 这是多行注释
 * 可以写多行内容
 */
 
/**
 * 这是文档注释
 * 用于生成 API 文档
 * @author 作者名
 * @version 版本号
 */
public class HelloWorld {  // 类名必须与文件名相同(HelloWorld.java)
    
    // main 方法是程序的入口点
    // public: 公共的,可以被外部访问
    // static: 静态的,不需要创建对象就能调用
    // void: 无返回值
    // main: 方法名,固定为 main
    // String[] args: 命令行参数数组
    public static void main(String[] args) {
        // System.out.println 用于输出内容并换行
        System.out.println("Hello, World!");
        
        // System.out.print 输出内容但不换行
        System.out.print("Hello");
        System.out.print(" ");
        System.out.print("World");
    }
}

程序组成部分

  1. 类声明public class HelloWorld - 声明一个公共类
  2. 方法定义public static void main(String[] args) - 定义主方法
  3. 语句System.out.println(...) - 执行语句
  4. 注释:单行、多行、文档注释

注释

单行注释

// 这是单行注释,从 // 开始到行尾
int age = 18; // 也可以放在代码后面

多行注释

/*
 * 这是多行注释
 * 可以跨越多行
 * 以 /* 开始,以 */ 结束
 */

文档注释

/**
 * 这是文档注释,用于生成 API 文档
 * 
 * @param name 用户名
 * @return 问候语
 * @throws Exception 可能抛出的异常
 */
public String greet(String name) {
    return "Hello, " + name;
}

标识符和关键字

标识符规则

// 标识符(变量名、类名、方法名等)规则:
// 1. 必须以字母、下划线或美元符号开头
// 2. 后面可以跟字母、数字、下划线、美元符号
// 3. 区分大小写
// 4. 不能使用关键字
 
// 正确的标识符
String name = "张三";        // 字母开头
String _age = "18";          // 下划线开头
String $price = "100";       // 美元符号开头
String userName = "admin";   // 驼峰命名
String user_name = "admin";  // 下划线命名
 
// 错误的标识符
// String 123name = "test";  // 错误:不能以数字开头
// String my-name = "test";  // 错误:不能包含连字符
// String class = "test";    // 错误:class 是关键字

Java 关键字

// Java 的关键字(不能用作标识符):
abstract    assert      boolean     break       byte
case        catch       char        class       const
continue    default     do          double      else
enum        extends     final       finally     float
for         goto        if          implements  import
instanceof  int         interface   long        native
new         package     private     protected   public
return      short       static      strictfp    super
switch      synchronized this       throw       throws
transient   try         void        volatile    while

命名规范

// 1. 类名:大驼峰命名(PascalCase)
public class UserService { }
public class OrderController { }
 
// 2. 方法名和变量名:小驼峰命名(camelCase)
public void getUserName() { }
String userName = "admin";
 
// 3. 常量名:全大写,单词间用下划线分隔
public static final int MAX_SIZE = 100;
public static final String DEFAULT_NAME = "guest";
 
// 4. 包名:全小写,单词间用点分隔
package com.example.service;
package org.springframework.boot;
 
// 5. 布尔变量:通常以 is、has、can 开头
boolean isActive = true;
boolean hasPermission = false;
boolean canEdit = true;

变量声明

变量声明方式

// 方式1:先声明,后赋值
int age;
age = 18;
 
// 方式2:声明时直接赋值
int age = 18;
 
// 方式3:声明多个同类型变量
int a = 1, b = 2, c = 3;

变量作用域

public class VariableScope {
    // 类成员变量(实例变量)
    private int instanceVar = 10;
    
    // 类静态变量(类变量)
    private static int staticVar = 20;
    
    public void method() {
        // 局部变量
        int localVar = 30;
        
        // 代码块变量
        {
            int blockVar = 40;
            System.out.println(blockVar); // 可以访问
        }
        // System.out.println(blockVar); // 错误:超出作用域
    }
}

常量

final 关键字

// final 修饰的变量是常量,只能赋值一次
final int MAX_SIZE = 100;
// MAX_SIZE = 200; // 错误:不能重新赋值
 
// final 修饰的引用类型,引用不能改变,但对象内容可以改变
final StringBuilder sb = new StringBuilder("Hello");
// sb = new StringBuilder("World"); // 错误:不能重新赋值
sb.append(" World"); // 正确:可以修改对象内容

基本数据类型

整数类型

// byte: 8 位,范围 -128 到 127
byte b = 127;
 
// short: 16 位,范围 -32768 到 32767
short s = 32767;
 
// int: 32 位,范围 -2^31 到 2^31-1(最常用)
int i = 2147483647;
 
// long: 64 位,范围 -2^63 到 2^63-1,需要加 L 后缀
long l = 9223372036854775807L;
 
// 不同进制的表示
int decimal = 100;        // 十进制
int binary = 0b1100100;   // 二进制(Java 7+)
int octal = 0144;         // 八进制
int hex = 0x64;           // 十六进制

浮点数类型

// float: 32 位,单精度浮点数,需要加 f 后缀
float f = 3.14f;
 
// double: 64 位,双精度浮点数(默认类型)
double d = 3.141592653589793;
 
// 科学计数法
double num1 = 1.23e4;   // 12300.0
double num2 = 1.23e-4;  // 0.000123

字符类型

// char: 16 位 Unicode 字符
char c1 = 'A';           // 单个字符
char c2 = '\u0041';      // Unicode 编码
char c3 = 65;            // ASCII 码
 
// 转义字符
char newline = '\n';     // 换行
char tab = '\t';         // 制表符
char quote = '\'';       // 单引号
char backslash = '\\';   // 反斜杠

布尔类型

// boolean: 只有 true 和 false 两个值
boolean isTrue = true;
boolean isFalse = false;
 
// 不能与整数类型转换
// boolean b = 1; // 错误:Java 中不能这样赋值

类型转换

自动类型转换(隐式转换)

// 小类型自动转换为大类型
byte b = 10;
int i = b;        // byte 自动转换为 int
 
int num = 100;
long l = num;     // int 自动转换为 long
 
float f = 3.14f;
double d = f;     // float 自动转换为 double
 
char c = 'A';
int code = c;     // char 自动转换为 int(Unicode 码)

强制类型转换(显式转换)

// 大类型转换为小类型需要强制转换
int i = 100;
byte b = (byte) i;  // 强制转换为 byte
 
double d = 3.14;
int num = (int) d;  // 强制转换为 int,结果为 3(丢失小数部分)
 
// 注意:强制转换可能导致数据丢失
int large = 300;
byte small = (byte) large;  // 结果为 44(溢出)

字符串

String 类型

// String 是引用类型,但使用类似基本类型
String str1 = "Hello";
String str2 = new String("World");
 
// 字符串连接
String combined = str1 + " " + str2;  // "Hello World"
String result = "结果:" + 100;        // "结果:100"
 
// 字符串方法
String text = "Hello World";
int length = text.length();              // 长度:11
String upper = text.toUpperCase();       // "HELLO WORLD"
String lower = text.toLowerCase();       // "hello world"
boolean contains = text.contains("Hello"); // true
String substring = text.substring(0, 5);  // "Hello"

运算符

算术运算符

int a = 10, b = 3;
 
int sum = a + b;      // 加法:13
int diff = a - b;     // 减法:7
int product = a * b;  // 乘法:30
int quotient = a / b; // 除法:3(整数除法)
int remainder = a % b;// 取余:1
 
// 自增自减
int x = 5;
x++;  // x = 6(后置)
++x;  // x = 7(前置)
x--;  // x = 6(后置)
--x;  // x = 5(前置)
 
// 区别:前置和后置
int i = 5;
int j = i++;  // j = 5, i = 6(先赋值,后自增)
int k = ++i;  // k = 7, i = 7(先自增,后赋值)

关系运算符

int a = 10, b = 20;
 
boolean eq = (a == b);  // 等于:false
boolean ne = (a != b);  // 不等于:true
boolean gt = (a > b);   // 大于:false
boolean lt = (a < b);   // 小于:true
boolean ge = (a >= b);  // 大于等于:false
boolean le = (a <= b);  // 小于等于:true

逻辑运算符

boolean p = true, q = false;
 
boolean and = p && q;  // 逻辑与:false(短路)
boolean or = p || q;   // 逻辑或:true(短路)
boolean not = !p;      // 逻辑非:false
 
// 短路特性
int x = 5;
boolean result = (x > 0) && (x++ > 0);  // x 会自增
boolean result2 = (x < 0) && (x++ > 0); // x 不会自增(短路)

赋值运算符

int x = 10;
 
x += 5;  // x = x + 5,结果为 15
x -= 3;  // x = x - 3,结果为 12
x *= 2;  // x = x * 2,结果为 24
x /= 4;  // x = x / 4,结果为 6
x %= 4;  // x = x % 4,结果为 2

三元运算符

// 条件 ? 值1 : 值2
int a = 10, b = 20;
int max = (a > b) ? a : b;  // 如果 a > b 返回 a,否则返回 b
 
String result = (a > 0) ? "正数" : "非正数";

输入输出

标准输出

// System.out.println:输出并换行
System.out.println("Hello");
System.out.println("World");
// 输出:
// Hello
// World
 
// System.out.print:输出不换行
System.out.print("Hello");
System.out.print(" ");
System.out.print("World");
// 输出:Hello World
 
// System.out.printf:格式化输出
String name = "张三";
int age = 18;
System.out.printf("姓名:%s,年龄:%d\n", name, age);
// 输出:姓名:张三,年龄:18

标准输入(Scanner)

import java.util.Scanner;
 
public class InputExample {
    public static void main(String[] args) {
        // 创建 Scanner 对象
        Scanner scanner = new Scanner(System.in);
        
        // 读取字符串
        System.out.print("请输入姓名:");
        String name = scanner.nextLine();
        
        // 读取整数
        System.out.print("请输入年龄:");
        int age = scanner.nextInt();
        
        // 读取浮点数
        System.out.print("请输入分数:");
        double score = scanner.nextDouble();
        
        System.out.printf("姓名:%s,年龄:%d,分数:%.2f\n", name, age, score);
        
        // 关闭 Scanner
        scanner.close();
    }
}

总结

Java 基础语法包括:

  • 程序结构:类、方法、语句
  • 注释:单行、多行、文档注释
  • 标识符:命名规则和规范
  • 变量:声明、作用域、常量
  • 数据类型:基本类型和类型转换
  • 运算符:算术、关系、逻辑、赋值、三元
  • 输入输出:标准输入输出

掌握这些基础语法是学习 Java 的第一步。


相关链接


java 基础语法 编程语言