Java作为一门广泛应用于企业级开发、移动应用、大数据等领域的编程语言之一,其基础语法与编程思维是入门的关键。无论是学生、职场转型者,还是希望提升技术栈储备的开发者,系统掌握Java基础都是开启编程之路的重要一步。本文将从变量与数据类型、运算符到面向对象思想与实战应用逐步拆解,助你构建扎实的Java基础体系。
变量是程序中存储数据值并可被操作的数据容器,而数据类型则决定了变量能够存储的数据范围和操作方式。Java中的数据类型分为两大类:基本数据类型与引用数据类型。
Java定义了8种基本数据类型来满足基础数据存储需求,分为四类:
声明变量时需指定数据类型并赋予初始值,例如:
int age = 25; // 整数类型变量
double salary = 12000; // 浮点类型变量引用
char gender = M; // 使用单引号包裹字符
boolean isStudent = true; // boolean类型默认值为false
注意:long类型赋值时需加后缀L(lowercase),如long num = 100L;float类型赋值需加后缀F(upper/小写),如float pi = 3.14F。
基本数据类型变量存储在栈内存中,直接存储其值;而引用数据类型(如字符串、数组、对象)存储在堆内存中,并通过栈内存中的引用地址指向堆中的具体对象。
运算符是Java中实现数学计算与逻辑判断最基础工具,掌握各类运算符的使用规则与优先级是编写正确代码的前提。
包括+,-,*./,%(取余)等,其中除法需注意整数除法与浮点除法区别:
int a =5, b=2;
System.out.println(a/b); // 输出2(整数除法截断小数位
System.out.println((double)a/b); // 使用强制类型转换得到有效结果
取余运算符%的结果符号与被除数一致,例如:-5%2=-1,5%-2=1。
int score = 85;
String result = score >=60 ? 及格:不及格; // 使用三元运算符简化判断
控制流语句决定代码执行顺序——通过条件判断与循环重复,让程序具备灵活处理复杂逻辑能力
if-else结构实现分支判断,可嵌套使用
int score = 85;
if(score >=90) {
System.out.println(优秀);
} else if(score >=60) { // 逻辑短路,前面条件不满足才执行后续分支
System.out.println(及格); // 输出及格
} else {
System.out.println(不及格);
}
switch-case结构适用于多值匹配场景,case值需为常量或字面量
int day = 3;
switch(day) {
case 1: System.out.println(周一); break;
case 2: System.out.println(周二); break;
default: System.out.println(其他); // 所有case不匹配时执行
}
注意:switch-case存在case穿透现象,需在每个case后显式添加break;Java 7+支持String类型作为switch条件。
for循环适合已知循环次数场景
for(int i=0; i<5; i++) { // 输出0-4
System.out.println(i);
}
// 增强for循环(遍历数组/集合)
int[] arr = {1,2,3};
for(int num : arr) {
System.out.println(num); // 依次输出1,2,3
}
while/do-while循环适合未知循环次数场景,do-while至少执行一次循环体
int i=0;
while(i<5) { // 先判断后执行
System.out.println(i);
i++;
}
do { // 先执行后判断
System.out.println(i);
i++;
} while(i<5);
循环控制:break(跳出循环)、continue(跳过当前循环体剩余部分进入下一次循环)
数组是相同数据类型元素的有序集合,可通过索引快速访问元素。Java数组属于引用类型,声明后需初始化才能使用。
动态初始化:先声明数组大小,再赋值
int[] arr1 = new int[5]; // 声明长度为5的int数组
arr1[0] = 10; // 给索引0的元素赋值
静态初始化:直接指定元素值,无需声明长度
int[] arr2 = {1,2,3,4,5}; // 等价于 new int[]{1,2,3,4,5}
String[] names = new String[]{张三,李四}; // 引用类型数组
注意:数组长度固定,一旦声明无法动态扩容,超出索引范围会抛出ArrayIndexOutOfBoundsException。
通过for循环结合索引遍历数组
int[] arr = {1,3,5,7};
for(int i=0; i
方法是实现特定功能的代码块,通过封装可实现代码复用与模块化设计。方法由访问修饰符、返回值类型、方法名、参数列表和方法体组成。
方法定义语法:访问修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型 参数名2...){ 方法体 }
// 定义加法方法
public static int add(int a, int b) { // static修饰的静态方法可直接通过类名调用
return a + b;
}
// 调用方法
int sum = add(3,5); // sum=8
参数传递:Java采用值传递机制,基本数据类型传递的是值副本,引用类型传递的是地址引用
public static void change(int num, int[] arr) {
num = 100; // 修改num不会影响原变量
arr[0] = 100; // 修改数组元素会影响原数组
}
int x=10;
int[] arr={1,2};
change(x, arr);
System.out.println(x); // 10(未改变)
System.out.println(arr[0]); // 100(被改变)
方法名相同但参数列表不同(参数个数/类型/顺序不同)的方法构成重载,与返回值类型无关
public static int calculate(int a, int b) { return a + b; }
public static double calculate(double a, double b) { return a + b; }
public static int calculate(int a, int b, int c) { return a + b + c; }
面向对象编程(OOP)是Java的核心思想,通过类-对象模型将数据与操作封装,模拟现实世界的实体。
类是对象的模板,定义了对象的属性(成员变量)和行为(成员方法);对象是类的具体实例。
// 定义类
class Person {
// 属性(成员变量)
String name;
int age;
// 行为(成员方法)
void sayHello() {
System.out.println(Hello, Im + name);
}
}
// 创建对象
Person p = new Person(); // 实例化对象
p.name = 小明; // 设置属性值
p.age = 18;
p.sayHello(); // 调用方法输出Hello, Im 小明
构造方法:与类名同名,无返回值,用于初始化对象
class Person {
String name;
int age;
// 无参构造方法
public Person() {}
// 带参构造方法
public Person(String name, int age) {
this.name = name; // this指代当前对象
this.age = age;
}
}
Person p1 = new Person(小红, 20); // 调用带参构造方法
封装:通过访问修饰符(private/public/protected/default)隐藏内部实现,只暴露安全接口
class Student {
private String id; // 私有属性,外部无法直接访问
public String getId() { return id; } // getter方法
public void setId(String id) { // setter方法,可添加校验逻辑
if(id.length() == 10) this.id = id;
else System.out.println(ID格式错误);
}
}
继承:通过extends关键字实现类的继承,子类可复用父类功能并扩展
class Animal { // 父类
void eat() { System.out.println(动物在吃饭); }
}
class Dog extends Animal { // 子类继承Animal
void bark() { System.out.println(狗在叫); }
}
Dog d = new Dog();
d.eat(); // 继承父类方法,输出动物在吃饭
多态:父类引用指向子类对象,调用方法时执行子类重写的实现
Animal a = new Dog(); // 向上转型
a.eat(); // 输出动物在吃饭(父类方法)
// a.bark(); 编译错误,父类引用无法直接调用子类特有方法
理论学习后,通过实践巩固知识是掌握Java基础的关键。以下是高效学习路径与避坑指南:
Java基础是编程能力的基石,从变量数据类型到面向对象思想,每一个知识点都需要扎实掌握。建议通过理论理解→代码实践→问题排查→总结优化的闭环学习,逐步构建完整的知识体系。记住,编程学习没有捷径,唯有多写代码、多思考、多总结,才能真正将Java基础内化为解决问题的能力。
后续可继续深入学习Java集合框架、IO流、多线程、网络编程等进阶内容,让基础成为你技术成长的稳固阶梯。