一、变量:数据的容器
1.1 什么是变量?
打个比方:
-
变量就像一个有名字的盒子
-
盒子里放什么数据,变量就是什么值
-
盒子有名字,你用它就得叫这个名字
1.2 变量的声明和使用
public class VariableDemo {
public static void main(String[] args) {
// 声明一个整数变量
int age = 25;
// 声明一个字符串变量
String name = "张三";
// 打印变量
System.out.println("姓名:" + name);
System.out.println("年龄:" + age);
}
}
**输出: **
姓名:张三
年龄:25
1.3 变量命名规则
| 规则 | 正确示例 | 错误示例 |
|------|----------|----------|
| 字母、数字、下划线、$ | name1, user_name | 1name(数字开头) |
| 大小写敏感 | name 和 Name 是两个 | - |
| 不能用关键字 | class, public, int | int 作为变量名 ❌ |
| 建议用驼峰命名 | userName, totalCount | username 全小写 |
**阿里巴巴Java开发规范推荐: **
-
变量名用驼峰:
userName、orderCount -
常量名全大写:
MAX_SIZE、PI
二、数据类型:盒子的规格
Java是强类型语言,每种数据都有明确的类型。
2.1 基本数据类型(8种)
**整数类型: **
| 类型 | 占用空间 | 取值范围 | 举例 |
|------|----------|----------|------|
| byte | 1字节 | -128 ~ 127 | byte b = 100; |
| short | 2字节 | -3万 ~ 3万 | short s = 1000; |
| int | 4字节 | -21亿 ~ 21亿 | int i = 100000; |
| long | 8字节 | 很大 | long l = 10000000000L; |
**浮点类型(小数): **
| 类型 | 占用空间 | 举例 |
|------|----------|------|
| float | 4字节 | float f = 3.14F;(要加F) |
| double | 8字节 | double d = 3.14159; |
**字符类型: **
| 类型 | 占用空间 | 举例 |
|------|----------|------|
| char | 2字节 | char c = 'A';(单引号) |
**布尔类型: **
| 类型 | 取值 | 举例 |
|------|------|------|
| boolean | true/false | boolean isGood = true; |
2.2 引用数据类型
// 字符串(最常用)
String name = "张三";
String hobby = "敲代码";
// 数组
int[] scores = {90, 85, 78};
2.3 数据类型转换
**自动转换(从小到大): **
int i = 100;
double d = i; // int自动转double
System.out.println(d); // 输出 100.0
**强制转换(从大到小): **
double d = 99.99;
int i = (int) d; // 强制转int,小数部分丢失
System.out.println(i); // 输出 99
**注意: ** 强制转换可能丢数据,慎用。
三、运算符:做计算
3.1 算术运算符
public class ArithmeticDemo {
public static void main(String[] args) {
int a = 10;
int b = 3;
System.out.println("a + b = " + (a + b)); // 13
System.out.println("a - b = " + (a - b)); // 7
System.out.println("a * b = " + (a * b)); // 30
System.out.println("a / b = " + (a / b)); // 3(整数除法)
System.out.println("a % b = " + (a % b)); // 1(取余)
}
}
**注意: ** a / b = 3 而不是 3.33,因为整数除整数结果还是整数。
3.2 自增自减运算符
int i = 5;
// 前置++,先加后用
System.out.println(++i); // 输出6,i变成6
// 后置++,先用后加
System.out.println(i++); // 输出6,i变成7
**面试常考: ** 搞不清楚就用 i = i + 1,绝对安全。
3.3 比较运算符(返回boolean)
System.out.println(10 > 3); // true
System.out.println(10 < 3); // false
System.out.println(10 == 10); // true(注意是==不是=)
System.out.println(10 != 3); // true
3.4 逻辑运算符
// && 短路与:两边都是true才true
System.out.println(true && true); // true
System.out.println(true && false); // false
// || 短路或:一边是true就true
System.out.println(true || false); // true
System.out.println(false || false); // false
// ! 取反
System.out.println(!true); // false
3.5 赋值运算符
int n = 10;
n += 5; // 等价于 n = n + 5,结果n=15
n -= 3; // 等价于 n = n - 3,结果n=12
n *= 2; // 等价于 n = n * 2,结果n=24
四、流程控制:让程序做选择
4.1 if条件判断
**基本语法: **
if (条件) {
// 条件成立时执行
}
**例子: **
int score = 85;
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
**输出: ** 及格
4.2 switch多分支
int day = 3;
switch (day) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
default:
System.out.println("未知日期");
}
**输出: ** 星期三
**注意: ** 每个case后面要加 break,否则会"贯穿"执行。
4.3 for循环:知道循环次数时用
**基本语法: **
for (初始化; 条件判断; 更新) {
// 循环体
}
**打印1到10: **
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
**计算1+2+3+...+100: **
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("1到100的和是:" + sum); // 5050
4.4 while循环:不知道循环次数时用
**基本语法: **
while (条件) {
// 循环体
}
**例子:打印1到5: **
int i = 1;
while (i <= 5) {
System.out.println(i);
i++;
}
4.5 do-while循环:至少执行一次
int i = 1;
do {
System.out.println(i);
i++;
} while (i <= 5);
**和while的区别: ** 条件不满足时,while一次都不执行,do-while至少执行一次。
五、综合练习:计算器程序
5.1 需求
写一个程序,根据输入判断两个数的大小关系。
5.2 代码
import java.util.Scanner;
public class CompareDemo {
public static void main(String[] args) {
// 创建Scanner对象,读取键盘输入
Scanner sc = new Scanner(System.in);
System.out.print("请输入第一个数:");
int num1 = sc.nextInt();
System.out.print("请输入第二个数:");
int num2 = sc.nextInt();
// 比较大小
if (num1 > num2) {
System.out.println(num1 + " > " + num2);
} else if (num1 == num2) {
System.out.println(num1 + " = " + num2);
} else {
System.out.println(num1 + " < " + num2);
}
sc.close();
}
}
5.3 运行效果
请输入第一个数:10
请输入第二个数:20
10 < 20
六、常见错误
❌ 错误1:把 == 写成 =
int a = 5;
// 错误!这是赋值,不是比较
if (a = 3) {
System.out.println("a是3");
}
// 正确写法
if (a == 3) {
System.out.println("a是3");
}
❌ 错误2:整数除法丢精度
int a = 10;
int b = 3;
// 错误!结果是3,不是3.33
double c = a / b;
// 正确做法:先把其中一个转成double
double c = (double) a / b;
System.out.println(c); // 3.333333...
❌ 错误3:字符串比较用 ==
String name = "张三";
// 错误!字符串比较要用equals
if (name == "张三") {
System.out.println("匹配");
}
// 正确
if (name.equals("张三")) {
System.out.println("匹配");
}
七、本课总结
-
变量:有名字的盒子,用来存数据
-
数据类型:int、double、String等,各有用途
-
运算符:算术、比较、逻辑、赋值
-
流程控制:if/switch做判断,for/while做循环
**记住: **
-
整数除法丢精度,想要小数要转型
-
字符串比较用
equals(),不用== -
循环之前想清楚:什么时候开始,什么时候结束
八、下节课预告
第3课:数组和方法
-
数组:一组数据的容器
-
方法:代码的复用
-
面向对象入门:类和方法的关系
学完这课,你就能写出结构清晰的代码了。
**关注我,跟着老兵学Java,少走弯路。 **
💬 **评论区聊聊:这节课哪个概念最难理解? **