基本语法
变量声明
变量定义
java
// 声明变量
int age;
// 赋值
age = 25;
// 声明并赋值
String name = "张三";变量命名规则
- 由字母、数字、下划线(_)、美元符号($)组成
- 不能以数字开头
- 不能使用Java关键字
- 区分大小写
java
// 合法命名
int age = 25;
String userName = "张三";
double _price = 99.9;
int $count = 10;
// 非法命名
int 1stPlace; // 不能以数字开头
int class; // 不能使用关键字
int user-name; // 不能包含连字符数据类型
基本数据类型
| 类型 | 关键字 | 大小 | 取值范围 | 默认值 |
|---|---|---|---|---|
| 字节型 | byte | 1字节 | -128 ~ 127 | 0 |
| 短整型 | short | 2字节 | -32768 ~ 32767 | 0 |
| 整型 | int | 4字节 | -2^31 ~ 2^31-1 | 0 |
| 长整型 | long | 8字节 | -2^63 ~ 2^63-1 | 0L |
| 单精度 | float | 4字节 | ±3.4E38 | 0.0f |
| 双精度 | double | 8字节 | ±1.7E308 | 0.0d |
| 字符型 | char | 2字节 | 0 ~ 65535 | '\u0000' |
| 布尔型 | boolean | 1位 | true/false | false |
整数类型
java
// 十进制
int dec = 100;
// 二进制(Java 7+)
int bin = 0b1100100; // 100
// 八进制
int oct = 0144; // 100
// 十六进制
int hex = 0x64; // 100
// 长整型(后缀L或l)
long bigNumber = 10000000000L;
// 数字下划线分隔(Java 7+)
int million = 1_000_000;
long creditCard = 1234_5678_9012_3456L;浮点类型
java
// float类型(后缀F或f)
float price = 99.9f;
// double类型(默认,后缀D或d可选)
double salary = 10000.50;
double pi = 3.141592653589793d;
// 科学计数法
double avogadro = 6.022e23;注意
不要使用浮点数进行精确计算,应使用 BigDecimal。
字符类型
java
// 单个字符
char letter = 'A';
char digit = '9';
char chinese = '中';
// 转义字符
char tab = '\t'; // 制表符
char newline = '\n'; // 换行符
char quote = '\''; // 单引号
char backslash = '\\'; // 反斜杠
// Unicode字符
char unicode = '\u4e2d'; // '中'布尔类型
java
boolean isTrue = true;
boolean isFalse = false;
// 条件表达式结果
boolean isAdult = age >= 18;
boolean isEmpty = name.isEmpty();引用类型
字符串
java
String name = "张三";
String greeting = "Hello, " + "World!";
// 常用方法
int length = name.length(); // 长度
char first = name.charAt(0); // 获取字符
boolean empty = name.isEmpty(); // 是否为空
String upper = name.toUpperCase(); // 转大写
String lower = name.toLowerCase(); // 转小写数组
java
// 声明数组
int[] numbers;
String[] names;
// 创建数组
numbers = new int[5];
names = new String[3];
// 声明并初始化
int[] scores = {90, 85, 92, 88, 95};
String[] colors = {"红", "绿", "蓝"};类型转换
自动类型转换(隐式)
从小类型到大类型自动转换:
java
byte → short → int → long → float → double
↓
char → intjava
int num = 100;
long bigNum = num; // int → long
double d = bigNum; // long → double
char c = 'A';
int code = c; // char → int (65)强制类型转换(显式)
从大类型到小类型需要强制转换:
java
double d = 99.9;
int num = (int) d; // 99(小数部分丢失)
long bigNum = 1000L;
int small = (int) bigNum; // 1000
// 溢出风险
int max = Integer.MAX_VALUE;
int overflow = max + 1; // 溢出为负数字符串与基本类型转换
java
// 基本类型 → 字符串
String s1 = String.valueOf(100);
String s2 = String.valueOf(3.14);
String s3 = String.valueOf(true);
String s4 = 100 + ""; // 简单方式
// 字符串 → 基本类型
int num = Integer.parseInt("100");
long bigNum = Long.parseLong("1000000");
double d = Double.parseDouble("3.14");
boolean b = Boolean.parseBoolean("true");常量
final关键字
java
// 常量定义(通常大写)
final double PI = 3.14159;
final int MAX_SIZE = 100;
final String APP_NAME = "MyApp";
// 常量不能重新赋值
PI = 3.14; // 编译错误常量类
java
public class Constants {
public static final String APP_NAME = "MyApp";
public static final String VERSION = "1.0.0";
public static final int MAX_CONNECTIONS = 100;
}
// 使用
String name = Constants.APP_NAME;变量作用域
java
public class ScopeDemo {
// 类变量(静态变量)
static int classVar = 100;
// 实例变量(成员变量)
int instanceVar = 200;
public void method() {
// 局部变量
int localVar = 300;
if (true) {
// 块级变量
int blockVar = 400;
System.out.println(localVar); // 可访问
}
// blockVar 不可访问
System.out.println(classVar); // 可访问
System.out.println(instanceVar); // 可访问
}
}完整示例
java
public class DataTypeDemo {
public static void main(String[] args) {
// 基本类型
byte age = 25;
short year = 2024;
int population = 1_400_000_000;
long worldPopulation = 8_000_000_000L;
float price = 99.9f;
double salary = 10000.50;
char grade = 'A';
boolean isStudent = true;
// 引用类型
String name = "张三";
int[] scores = {90, 85, 92};
// 输出
System.out.println("姓名: " + name);
System.out.println("年龄: " + age);
System.out.println("成绩等级: " + grade);
System.out.printf("工资: %.2f%n", salary);
}
}