Java基础语法记录(第一期):数据类型与面向对象基石

4 阅读10分钟

Java基础语法记录(第一期):数据类型与面向对象基石

本文聚焦Java核心基础语法,从数据类型体系、变量常量、运算符到面向对象基础,结合源码案例与实战演练,夯实Java编程根基,同时融入AI辅助语法学习技巧,助力高效掌握Java基础核心。

一、Java数据类型体系全解析

Java是强类型编程语言,数据类型的定义严格规范,整体分为基本数据类型引用数据类型两大类,这是Java内存管理、数据存储的核心基础,也是面试与开发中高频涉及的知识点。

1.1 基本数据类型(四类八种)

Java基本数据类型共四类八种,分别为数值型(整数、浮点)、字符型、布尔型,不同类型的内存占用、取值范围存在明确差异,JVM会为其分配固定大小的内存空间,存储在栈内存中,访问效率极高。

数据类型关键字内存占用(字节)取值范围默认值适用场景
字节型byte1-128 ~ 1270网络传输、文件流操作
短整型short2-32768 ~ 327670节省内存的小数值存储
整型int4-2³¹ ~ 2³¹-10通用整数存储(最常用)
长整型long8-2⁶³ ~ 2⁶³-10L大数值整数存储
单精度浮点型float41.4e-45 ~ 3.4e380.0f精度要求较低的小数
双精度浮点型double84.9e-324 ~ 1.8e3080.0d高精度小数存储(最常用)
字符型char20 ~ 65535'\u0000'单个字符、Unicode编码
布尔型boolean1true / falsefalse逻辑判断、条件控制

核心特性

  1. 基本数据类型无继承关系,直接存储数据值,不属于对象;

  2. 整数默认类型为int,小数默认类型为double,声明long需加Lfloat需加f

  3. char类型本质是Unicode编码,可存储中文、英文、符号等单个字符。

// 基本数据类型声明与赋值
public class BasicDataTypeDemo {
    public static void main(String[] args) {
        // 整数类型
        byte b = 100;
        short s = 2000;
        int i = 100000;
        long l = 10000000000L;

        // 浮点类型
        float f = 3.14f;
        double d = 3.1415926535;

        // 字符类型
        char c = 'A';
        char ch = '中';

        // 布尔类型
        boolean flag = true;

        // 控制台输出
        System.out.println("byte值:" + b);
        System.out.println("char中文:" + ch);
        System.out.println("boolean状态:" + flag);
    }
}

1.2 引用数据类型

引用数据类型以对象为核心,存储的是数据在堆内存中的内存地址,而非数据本身,主要包括类、接口、数组、枚举、注解等。

核心特性

  1. 引用变量存储在栈内存,实际对象存储在堆内存;

  2. 默认值为null,未初始化时不能调用方法/属性;

  3. 所有引用数据类型最终都继承自Object类。

// 引用数据类型示例:String类、数组
public class RefDataTypeDemo {
    public static void main(String[] args) {
        // String引用类型
        String str = "Java基础语法";

        // 数组引用类型
        int[] arr = {1, 2, 3, 4, 5};

        // 输出引用类型的内容
        System.out.println("字符串内容:" + str);
        System.out.println("数组第一个元素:" + arr[0]);
    }
}

1.3 包装类与自动装箱拆箱

Java为8种基本数据类型提供了对应的包装类,将基本类型转为对象,支持泛型、集合存储等场景,JDK 1.5后引入自动装箱、自动拆箱机制,简化基本类型与包装类的转换。

基本类型包装类核心方法
byteByteparseByte()、valueOf()
shortShortparseShort()、valueOf()
intIntegerparseInt()、valueOf()
longLongparseLong()、valueOf()
floatFloatparseFloat()、valueOf()
doubleDoubleparseDouble()、valueOf()
charCharacterisDigit()、toUpperCase()
booleanBooleanparseBoolean()、valueOf()
自动装箱/拆箱源码原理

Integer为例,自动装箱底层调用Integer.valueOf(),自动拆箱底层调用intValue(),JVM通过缓存池优化常用数值(-128~127),避免重复创建对象。

// 自动装箱与拆箱实战
public class WrapperClassDemo {
    public static void main(String[] args) {
        // 自动装箱:int → Integer
        Integer num1 = 100;
        // 自动拆箱:Integer → int
        int num2 = num1;

        // 包装类方法调用
        int num3 = Integer.parseInt("123");
        System.out.println("字符串转整数:" + num3);

        // 缓存池验证:-128~127复用对象
        Integer a = 100;
        Integer b = 100;
        System.out.println(a == b); // true
    }
}

二、变量与常量的定义与使用

变量与常量是Java存储数据的核心载体,二者的核心区别在于值是否可修改,合理定义变量与常量是规范编码的基础。

2.1 变量的分类与作用域

根据定义位置不同,变量分为局部变量成员变量(实例变量)静态变量(类变量),作用域与生命周期存在明显差异。

变量类型定义位置修饰符生命周期作用域默认值
局部变量方法/代码块内部方法/代码块执行期间方法/代码块内部无,必须手动赋值
成员变量类内、方法外无static对象创建到销毁整个类数据类型默认值
静态变量类内、方法外static类加载到卸载整个类、所有对象共享数据类型默认值
// 变量分类实战
public class VariableDemo {
    // 成员变量(实例变量)
    private int instanceVar = 10;
    // 静态变量(类变量)
    public static String staticVar = "静态变量";

    public void test() {
        // 局部变量:必须赋值才能使用
        int localVar = 20;
        System.out.println("局部变量:" + localVar);
        System.out.println("成员变量:" + instanceVar);
        System.out.println("静态变量:" + staticVar);
    }

    public static void main(String[] args) {
        new VariableDemo().test();
    }
}

2.2 常量的定义与使用

常量使用final关键字修饰,一旦赋值不可修改,分为局部常量成员常量静态常量,开发中常用于固定配置、枚举值等场景。

规范:常量命名采用全大写+下划线分隔,如MAX_VALUEDEFAULT_SIZE

// 常量定义实战
public class ConstantDemo {
    // 静态常量(最常用)
    public static final int MAX_COUNT = 100;
    // 成员常量
    private final double PI = 3.1415926;

    public static void main(String[] args) {
        // 局部常量
        final String VERSION = "JDK 17";
        System.out.println("最大数量:" + MAX_COUNT);
        System.out.println("圆周率:" + new ConstantDemo().PI);
        System.out.println("版本号:" + VERSION);
    }
}

三、Java运算符全维度精讲

运算符是Java执行运算、逻辑判断的核心工具,共分为6大类,掌握运算符优先级与使用场景,是编写高效代码的关键。

### 3.1 运算符分类与核心用法

  1. 算术运算符+-*/%++--,用于数值运算;

  2. 赋值运算符=+=-=*=/=%=,简化变量赋值;

  3. 比较运算符==!=><>=<=,返回布尔值;

  4. 逻辑运算符&&(短路与)、||(短路或)、!(非),用于逻辑判断;

  5. 位运算符&|^~<<>>>>>,操作二进制位;

  6. 三元运算符条件表达式 ? 表达式1 : 表达式2,简化if-else判断。

运算符优先级:单目运算符 > 算术运算符 > 移位运算符 > 比较运算符 > 逻辑运算符 > 三元运算符 > 赋值运算符。

// 运算符实战
public class OperatorDemo {
    public static void main(String[] args) {
        // 算术运算符
        int a = 10;
        int b = 3;
        System.out.println("取余运算:" + a % b); // 1
        System.out.println("自增运算:" + a++); // 10(后自增,先赋值再+1)

        // 逻辑运算符(短路特性)
        boolean flag1 = false && (++a > 0);
        System.out.println("短路与后a的值:" + a); // 11,右侧未执行

        // 三元运算符
        int max = a > b ? a : b;
        System.out.println("最大值:" + max);
    }
}

3.2 短路运算符核心特性

&&||具备短路特性

  • &&:左侧为false,右侧不执行;

  • ||:左侧为true,右侧不执行。

该特性可避免空指针、越界等异常,是开发中高频使用的优化技巧。

四、面向对象基础:类与对象

Java是纯面向对象编程语言,类是对象的模板,对象是类的实例,封装、继承、多态是面向对象三大特性,本期先聚焦类与对象的定义、封装特性

4.1 类的定义与对象创建

类使用class关键字定义,包含属性(成员变量)方法(成员函数),对象通过new关键字实例化,分配堆内存空间。

// 定义类:学生类
public class Student {
    // 成员属性
    private String name;
    private int age;

    // 成员方法
    public void study() {
        System.out.println(name + "正在学习Java");
    }

    // getter/setter方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

// 实例化对象
class ObjectDemo {
    public static void main(String[] args) {
        // 创建Student对象
        Student stu = new Student();
        // 给对象赋值
        stu.setName("张三");
        stu.setAge(20);
        // 调用对象方法
        stu.study();
    }
}

4.2 封装特性

封装是面向对象的核心特性,通过private修饰私有属性,提供public的getter/setter方法访问属性,实现数据隐藏、安全访问,避免外部直接修改属性导致数据异常。

封装优势

  1. 保护数据安全,限制非法访问;

  2. 简化代码,外部无需关注内部实现;

  3. 提升代码可维护性,便于修改内部逻辑。

4.3 构造方法与this关键字

构造方法:与类名同名、无返回值,用于对象初始化,无参构造是默认提供的,可自定义有参构造;

this关键字:代表当前对象,用于区分局部变量与成员变量,调用本类构造方法、属性、方法。

// 构造方法与this关键字
public class User {
    private String username;
    private String password;

    // 无参构造
    public User() {}

    // 有参构造
    public User(String username, String password) {
        // this区分局部变量与成员变量
        this.username = username;
        this.password = password;
    }

    // 打印用户信息
    public void showInfo() {
        // this调用当前对象属性
        System.out.println("用户名:" + this.username + ",密码:" + this.password);
    }
}

class ConstructorDemo {
    public static void main(String[] args) {
        User user = new User("admin", "123456");
        user.showInfo();
    }
}

五、AI辅助Java基础语法学习实战

在AI时代,借助大模型工具可大幅提升Java语法学习效率,快速排查错误、生成案例、理解原理,以下是高频实用场景:

5.1 AI语法错误排查

将报错代码复制给AI,快速定位语法问题,例如:

问题:int a = 10; int b = 0; int c = a/b; 运行报错,帮忙分析原因

AI会直接指出除零异常,并给出解决方案。

5.2 AI生成语法测试案例

输入需求,自动生成符合规范的代码案例,例如:

生成Java基本数据类型+包装类的测试代码,包含自动装箱拆箱

5.3 AI讲解底层原理

针对复杂知识点,如包装类缓存池、自动装箱拆箱,输入:

讲解Java Integer包装类缓存池的实现原理,-128~127为什么复用对象

AI会结合源码、JVM机制详细解析,比死记硬背更高效。

六、实战练习与知识点总结

6.1 综合实战案例

结合本期知识点,编写综合代码,巩固数据类型、变量、运算符、类与对象:

// 综合实战:计算器类
public class Calculator {
    // 静态常量
    public static final double PI = 3.1415926;

    // 加法运算
    public int add(int a, int b) {
        return a + b;
    }

    // 圆面积计算
    public double circleArea(double r) {
        return PI * r * r;
    }

    public static void main(String[] args) {
        Calculator cal = new Calculator();
        // 调用加法
        System.out.println("10+20=" + cal.add(10, 20));
        // 计算圆面积
        System.out.println("半径为5的圆面积:" + cal.circleArea(5));
    }
}

6.2 知识点总结

  1. Java数据类型分为基本类型(8种)和引用类型,包装类实现基本类型与对象的转换;

  2. 变量分局部、成员、静态,常量用final修饰,命名遵循全大写规范;

  3. 运算符6大类,短路逻辑运算符可提升代码效率;

  4. 类是对象模板,封装通过private+getter/setter实现,构造方法用于对象初始化;

  5. AI工具可辅助语法学习、错误排查、原理理解,大幅提升学习效率。

本期Java基础语法精讲覆盖Java编程根基,下期将深入流程控制、数组、字符串等核心知识点,持续夯实Java基础,为框架学习与项目开发做好铺垫。