【码道】系列博客致力于为广大Java学习者提供清晰、系统的学习路径。从基础语法到高级特性,从理论讲解到实战应用,我们将用简洁易懂的语言,带您循序渐进地掌握Java编程精髓。无论您是初学者还是希望巩固基础的开发者,都能在这里找到成长为Java高手的捷径。让我们一起探索编程之道,体验Java的无限魅力!
一、变量:程序的"容器"
变量是编程中最基础的概念之一,可以将其理解为一个能存储数据的"容器"。在日常生活中,我们用不同的容器盛放不同的物品:用水杯装水,用碗装米饭,用盒子装文具。同样,在Java中,我们使用变量存储各种数据。
变量的本质
从计算机角度看,变量本质上是内存中的一块存储空间,有特定的名称、类型和值。当我们声明一个变量时,就是在告诉计算机:请给我预留一块空间,我要用它来存放某种类型的数据。
二、Java的数据类型
Java是一种强类型语言,这意味着每个变量都必须有明确的数据类型。Java的数据类型分为两大类:基本数据类型和引用数据类型。
1. 基本数据类型(8种)
基本数据类型直接存储值,分为四大类:
整数类型
- byte:1字节,范围 -128 ~ 127
- short:2字节,范围 -32768 ~ 32767
- int:4字节,范围约 ±21亿(最常用的整数类型)
- long:8字节,范围非常大,适合存储超大整数
int age = 25;
long population = 7800000000L; // 注意long类型字面量需要加L后缀
浮点类型
- float:4字节,单精度浮点数
- double:8字节,双精度浮点数(默认浮点类型)
float price = 99.9F; // 注意float类型字面量需要加F后缀
double pi = 3.14159265358979;
字符类型
- char:2字节,存储单个字符,用单引号表示
char grade = 'A';
char symbol = '€';
布尔类型
- boolean:表示真(true)或假(false)
boolean isStudent = true;
boolean hasCompleted = false;
2. 引用数据类型
引用数据类型存储的是对象的地址(引用),主要包括:
- 类(Class):如String、自定义类等
- 接口(Interface)
- 数组(Array)
String name = "张三"; // String是最常用的引用类型
int[] numbers = {1, 2, 3, 4, 5}; // 数组也是引用类型
三、变量的声明与使用
1. 变量声明
变量声明的基本格式是:数据类型 变量名 [= 初始值];
// 先声明后赋值
int score;
score = 95;
// 声明同时初始化
double salary = 8500.50;
// 同时声明多个同类型变量
int x, y, z;
int a = 1, b = 2, c = 3;
2. 变量命名规则
Java变量命名有严格规定:
- 必须以字母、下划线或 符号开头,后跟字母、数字、下划线或 符号开头,后跟字母、数字、下划线或 符号开头,后跟字母、数字、下划线或
- 区分大小写(age和Age是不同的变量)
- 不能使用Java关键字(如class、public等)
- 不能包含空格或特殊字符(如@、#)
3. 命名规范(约定俗成)
- 变量名采用小驼峰式命名法:第一个单词首字母小写,后续单词首字母大写
- 名称应具有描述性,表明变量的用途
// 好的命名
int studentAge;
double hourlyWage;
boolean isMarried;
// 不好的命名
int a; // 不具描述性
int AGE; // 违反小驼峰命名法
int student_age; // 不符合Java命名习惯(虽然合法)
四、常量:不可改变的变量
有时我们需要值保持不变的变量,这就是常量,使用final
关键字声明:
final double PI = 3.14159265358979;
final int MAX_USERS = 10000;
常量命名通常全部大写,多个单词用下划线分隔。一旦赋值,常量的值就不能再改变。
五、数据类型转换
在Java中,数据类型可以相互转换,分为自动转换和强制转换。
1. 自动类型转换(隐式转换)
当小范围类型转换为大范围类型时,自动进行:
byte b = 100;
int i = b; // byte自动转换为int
int j = 200;
long l = j; // int自动转换为long
long m = 300;
float f = m; // long自动转换为float
转换顺序:byte → short → int → long → float → double
2. 强制类型转换(显式转换)
当大范围类型转换为小范围类型时,需要显式转换,可能会损失精度:
double d = 123.456;
int n = (int) d; // 结果为123,小数部分被截断
int large = 1000;
byte small = (byte) large; // 可能导致值变化,因为超出byte范围
3. 特殊情况:字符串转换
字符串与其他类型的转换需要特殊方法:
// 其他类型转字符串
int number = 42;
String str1 = String.valueOf(number); // "42"
String str2 = number + ""; // 也可以,但效率较低
// 字符串转其他类型
String numStr = "42";
int num = Integer.parseInt(numStr); // 42
double dbl = Double.parseDouble("3.14"); // 3.14
六、实际示例
让我们通过一个简单的程序,综合运用变量和数据类型:
public class StudentInfo {
public static void main(String[] args) {
// 基本类型变量
String name = "李明";
int age = 20;
char gender = '男';
double height = 175.5;
double weight = 65.8;
boolean isUndergraduate = true;
// 计算BMI
double bmi = weight / ((height/100) * (height/100));
// 输出信息
System.out.println("===学生信息===");
System.out.println("姓名:" + name);
System.out.println("年龄:" + age + "岁");
System.out.println("性别:" + gender);
System.out.println("身高:" + height + "cm");
System.out.println("体重:" + weight + "kg");
System.out.println("是否本科生:" + (isUndergraduate ? "是" : "否"));
System.out.println("BMI指数:" + bmi);
// 类型转换示例
int roundedBmi = (int)bmi;
System.out.println("BMI取整:" + roundedBmi);
}
}
输出结果:
===学生信息===
姓名:李明
年龄:20岁
性别:男
身高:175.5cm
体重:65.8kg
是否本科生:是
BMI指数:21.385821835951642
BMI取整:21
七、总结与使用技巧
-
选择合适的数据类型
- 整数一般用
int
,超大数用long
- 浮点数一般用
double
,精度要求不高且需节省内存时用float
- 单字符用
char
,文本用String
- 是/否判断用
boolean
- 整数一般用
-
变量命名
- 用有意义的名称,反映变量用途
- 遵循小驼峰命名法
- 常量用大写加下划线
-
类型转换
- 尽量依赖自动转换
- 强制转换时注意数据范围,避免意外结果
-
初始化习惯
- 声明变量时尽量直接初始化
- 确保使用变量前已赋值
Java的变量和数据类型是构建复杂程序的基础。理解了这些概念,你就掌握了Java编程的第一块基石。在接下来的【码道】系列中,我们将继续探索Java的其他核心知识,逐步提升你的编程能力。