10年老兵带你学Java(第2课):Java基础语法 - 写代码的基本功

0 阅读5分钟

一、变量:数据的容器

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(数字开头) |

| 大小写敏感 | nameName 是两个 | - |

| 不能用关键字 | class, public, int | int 作为变量名 ❌ |

| 建议用驼峰命名 | userName, totalCount | username 全小写 |

**阿里巴巴Java开发规范推荐: **

  • 变量名用驼峰:userNameorderCount

  • 常量名全大写:MAX_SIZEPI


二、数据类型:盒子的规格

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,少走弯路。 **

💬 **评论区聊聊:这节课哪个概念最难理解? **