基础语法工程

ℹ️本篇定位

本篇聚合 IDEA 工程 basic-app 的全部源码练习(2025-12 学),按包分节全文收录——当年的学习注释(// 目标:… // 需求:…)原样保留,是最真实的练习轨迹。工程怎么建、模块/包/类怎么管理见 00-管理项目

包含 12 个 .java 练习,目录结构:

basic-app/src/
├── com/zwnsyw/operator/OperatorDemo1.java
├── com/zwnsyw/operator/OperatorDemo2.java
├── com/zwnsyw/operator/OperatorDemo3.java
├── com/zwnsyw/operator/OperatorDemo4.java
├── com/zwnsyw/operator/OperatorDemo5.java
├── com/zwnsyw/operator/OperatorDemo6.java
├── com/zwnsyw/scanner/ScannerDemo1.java
├── com/zwnsyw/type/TypeConversionDemo1.java
├── com/zwnsyw/type/TypeConversionDemo2.java
├── com/zwnsyw/type/TypeConversionDemo3.java
├── com/zwnsyw/variable/ASCIIDemo1.java
└── com/zwnsyw/variable/TypeDemo1.java

变量

变量定义与 ASCII 演示。

ASCIIDemo1.java

package com.zwnsyw.variable;

public class ASCIIDemo1 {
    public static void main(String[] args) {
        // 目标:掌握ASCII编码表的编码特点。
        System.out.println('a' + 10); // 97 + 10 = 107
        System.out.println('A' + 10); // 65 + 10 = 75
        System.out.println('0' + 10); // 48 + 10 = 58

        // 二进制 八进制 十六进制在程序中的写法。
        int a1 = 0B01100001;
        System.out.println(a1);

        int a2 = 0141;  // 0开头的数据当成八进制看待!
        System.out.println(a2);

        int a3 = 0XFA;  // 0X开头的数据是十六进制
        System.out.println(a3);
    }
}

TypeDemo1.java

package com.zwnsyw.variable;

public class TypeDemo1 {
    public static void main(String[] args) {
        // 目标:掌握8种基本数据类型,用来定义变量。
        // 1、整型
        byte number = 98;
        System.out.println(number);

        short number2 = 9000;

        int number3 = 12323232; // 默认

        // 注意:随便写一个整型字面量,默认是int类型的,73642422442424虽然没有超过long的范围,但是它超过了本身int的范围了。
        // 如果希望随便写一个整型字面量是long类型的,需要在其后面加上L/l
        long number4 = 73642422442424L;

        // 2、浮点型
        // 注意:随便写一个小数字面量,默认当成double类型对待的,如果希望这个小数是float类型的,需要在后面加上:F/f
        float score1 = 99.5F;
        double score2 = 99.8; // 默认定义方案。

        // 3、字符型
        char ch1 = 'a';
        char ch2 = '中';
        char ch3 = '国';

        // 4、布尔型
        boolean b1 = true;
        boolean b2 = false;

        // 引用数据类型:String.
        // String代表的是字符串类型,定义的变量可以用来记住字符串。
        String name = "黑马";
        System.out.println(name);
    }
}

类型转换

隐式/强制类型转换练习。

TypeConversionDemo1.java

package com.zwnsyw.type;

public class TypeConversionDemo1 {
    public static void main(String[] args) {
        // 目标:理解自动类型转换机制。
        byte a = 12;
        int b = a; // 发生了自动类型转换了
        System.out.println(a);
        System.out.println(b);

        int c = 100; // 4
        double d = c;// 8 发生了自动类型转换了
        System.out.println(d);

        char ch = 'a'; // 'a' 97 => 00000000 01100001
        int i = ch; // 发生了自动类型转换了 =>  00000000 00000000  00000000 01100001
        System.out.println(i);
    }
}

TypeConversionDemo2.java

package com.zwnsyw.type;

public class TypeConversionDemo2 {
    public static void main(String[] args) {
        // 目标:掌握表达式的自动类型转换机制。
        byte a = 10;
        int b = 20;
        long c = 30;
        long rs = a + b + c;
        System.out.println(rs);

        double rs2 = a + b + 1.0;
        System.out.println(rs2);

        byte i = 10;
        short j = 30;
        int rs3 = i + j;
        System.out.println(rs3);

        // 面试笔试题:
        byte b1 = 110;
        byte b2 = 80;
        int b3 = b1 + b2;
        System.out.println(b3);
    }
}

TypeConversionDemo3.java

package com.zwnsyw.type;

public class TypeConversionDemo3 {
    public static void main(String[] args) {
        // 目标:掌握强制类型转换。
        int a = 20;
        byte b = (byte) a;  // ALT + ENTER 强制类型转换。
        System.out.println(a);
        System.out.println(b);

        int i = 1500;
        byte j = (byte) i;
        System.out.println(j);

        double d = 99.5;
        int m = (int) d; // 强制类型转换
        System.out.println(m); // 丢掉小数部分,保留整数部分
    }
}

运算符

各类运算符逐个过一遍。

OperatorDemo1.java

package com.zwnsyw.operator;

public class OperatorDemo1 {
    public static void main(String[] args) {
        // 目标:掌握基本的算术运算符的使用。
        int a = 10;
        int b = 2;
        System.out.println(a + b);
        System.out.println(a - b);
        System.out.println(a * b); // 20
        System.out.println(a / b); // 5
        System.out.println(5 / 2); // 2.5 ==> 2
        System.out.println(5.0 / 2); // 2.5
        int i = 5;
        int j = 2;
        System.out.println(1.0 * i / j); // 2.5

        System.out.println(a % b); // 0
        System.out.println(3 % 2); // 1

        System.out.println("---------------------------------------------------");

        // 目标2:掌握使用+符号做连接符的情况。
        int a2 = 5;
        System.out.println("abc" + a2); // "abc5"
        System.out.println(a2 + 5); //  10
        System.out.println("itheima" + a2 + 'a'); // "itheima5a"
        System.out.println(a2 + 'a' + "itheima"); // 102itheima
    }
}

OperatorDemo2.java

package com.zwnsyw.operator;

public class OperatorDemo2 {
    public static void main(String[] args) {
        // 目标:掌握自增自减运算符的使用。
        int a = 10;
        // a++; // a = a + 1
        ++a;
        System.out.println(a);

        // a--; // a = a - 1
        --a;
        System.out.println(a);

        // System.out.println(2++); // 自增自减只能操作变量不能操作字面量的,会报错!

        System.out.println("-------------------------------------------------");

        int i = 10;
        int rs = ++i; // 先加后用
        System.out.println(rs);
        System.out.println(i);

        int j = 10;
        int rs2 = j++; // 先用后加
        System.out.println(rs2);
        System.out.println(j);

    }
}

OperatorDemo3.java

package com.zwnsyw.operator;

public class OperatorDemo3 {
    public static void main(String[] args) {
        // 目标:掌握扩展赋值运算符的使用。
        // +=
        // 需求:收红包
        double a = 9.5;
        double b = 520;
        a += b;  // a = (double)(a + b);
        System.out.println(a);

        // -= 需求:发红包
        double i = 600;
        double j = 520;
        i -= j;  // i = (double)(i - j);
        System.out.println(i);

        int m = 10;
        int n = 5;
        // m *= n; // 等价形式: m = (int)(m * n)
        // m /= n; // 等价形式: m = (int)(m / n)
        m %= n;    // 等价形式: m = (int)(m % n)
        System.out.println(m);

        System.out.println("-------------------------------------------------");

        byte x = 10;
        byte y = 30;
        //  x = x + y; // 编译报错
        // x = (byte)(x + y);
        x += y; // 等价形式:x = (byte)(x + y);
        System.out.println(x);
    }
}

OperatorDemo4.java

package com.zwnsyw.operator;

public class OperatorDemo4 {
    public static void main(String[] args) {
        // 目标:掌握关系运算符的基本使用。
        int a = 10;
        int b = 5;
        boolean rs = a > b;
        System.out.println(rs);

        System.out.println(a >= b); // 要么a大于b,或者a等于b
        System.out.println(2 >= 2); // true
        System.out.println(a < b);
        System.out.println(a <= b); // false
        System.out.println(2 <= 2); // true
        System.out.println(a == b); // false
        System.out.println(5 == 5); // true
        // System.out.println(a = b); // 注意了:判断是否相等一定是用 == ,=是用来赋值的。
        System.out.println(a != b); // true
        System.out.println(10 != 10); // false

        System.out.println(false ^ true ^ false);
    }
}

OperatorDemo5.java

package com.zwnsyw.operator;

public class OperatorDemo5 {
    public static void main(String[] args) {
        // 目标:掌握逻辑运算符的使用。
        // 需求:要求手机必须满足尺寸大于等于6.95,且内存必须大于等于8.
        double size = 6.8;
        int storage = 16;
        // 1、& 前后的条件的结果必须都是true ,结果才是true.
        boolean rs = size >= 6.95 & storage >= 8;
        System.out.println(rs);

        // 需求2:要求手机要么满足尺寸大于等于6.95,要么内存必须大于等于8.
        // 2、| 只要多个条件中有一个是true,结果就是true.
        boolean rs2 = size >= 6.95 | storage >= 8;
        System.out.println(rs2);

        // 3、!取反的意思
        System.out.println(!true); // false
        System.out.println(!false); // true
        System.out.println(!(2 > 1)); // false

        // 4、^ 前后条件的结果相同时返回false,不同时返回true.
        System.out.println(true ^ true); // false
        System.out.println(false ^ false); // false
        System.out.println(true ^ false); // true
        System.out.println(false ^ true); // true

        // 5、&& 左边为false,右边不执行。
        int i = 10;
        int j = 20;
        // System.out.println(i > 100 && ++j > 99);
        System.out.println(i > 100 & ++j > 99);
        System.out.println(j);

        // 6、|| 左边是true ,右边就不执行。
        int m = 10;
        int n = 30;
        // System.out.println(m > 3 || ++n > 40);
        System.out.println(m > 3 | ++n > 40);
        System.out.println(n);

    }
}

OperatorDemo6.java

package com.zwnsyw.operator;

public class OperatorDemo6 {
    public static void main(String[] args) {
        // 目标:掌握三元运算符的基本使用。
        double score = 58.5;
        String rs = score >= 60 ? "成绩及格" : "成绩不及格";
        System.out.println(rs);

        // 需求2:找出2个整数中的较大值,并输出。
        int a = 99;
        int b = 69;
        int max = a > b ? a : b;
        System.out.println(max);

        // 需求3:找3个整数中的较大值。
        int i = 10;
        int j = 45;
        int k = 34;

        // 找出2个整数中的较大值。
        int temp = i > j ? i : j;
        // 找出temp与k中的较大值。
        int max2 = temp > k ? temp : k;
        System.out.println(max2);

        System.out.println(10 > 3 || 10 > 3 && 10 < 3); // true
        System.out.println((10 > 3 || 10 > 3) && 10 < 3); // false
    }
}

Scanner 扫描输入

用 Scanner 接收键盘输入。

ScannerDemo1.java

package com.zwnsyw.scanner;

import java.util.Scanner;

public class ScannerDemo1 {
    public static void main(String[] args) {
        // 1、导包:一般不需要我们自己做,idea工具会自动帮助我们 导包的。
        // 2、抄写代码:得到一个键盘扫描器对象(东西)
        Scanner sc = new Scanner(System.in);

        // 3、开始 调用sc的功能,来接收用户键盘输入的数据。
        System.out.println("请您输入您的年龄:");
        int age = sc.nextInt(); // 执行到这儿,会开始等待用户输入一个整数,直到用户按了回车键,才会拿到数据。
        System.out.println("您的年龄是:"  + age);

        System.out.println("请您输入您的名字:");
        String name = sc.next(); // 执行到这儿,会开始等待用户输入一个字符串,直到用户按了回车键,才会拿到数据。
        System.out.println(name + "欢迎您进入系统~~");
    }
}

⬅️ HelloWorld工程 🏠 00-管理项目 ➡️ 流程控制工程