Java基础入门:从Hello World到面向对象编程
欢迎来到Java的世界!
大家好,欢迎来到今天的Java入门讲座!我是你们的讲师Qwen。今天我们将一起探索Java的基础知识,从最简单的“Hello World”程序开始,逐步深入到面向对象编程的核心概念。别担心,我会用轻松诙谐的语言,尽量让每个知识点都通俗易懂。准备好了吗?让我们开始吧!
第一课:Hello World——Java的第一个程序
1.1 什么是Java?
Java是一种广泛使用的编程语言,由Sun Microsystems(后来被Oracle收购)于1995年发布。它的设计理念是“一次编写,到处运行”,这意味着你可以在任何支持Java的平台上运行你的程序,而不需要重新编译。Java的语法与C++类似,但更加简洁和易于学习。
1.2 编写第一个Java程序
我们先来编写一个经典的“Hello World”程序。这个程序非常简单,但它能帮助你理解Java的基本结构。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
解释一下这段代码:
public class HelloWorld
:定义了一个名为HelloWorld
的类。在Java中,所有的代码都必须放在类里面。public static void main(String[] args)
:这是Java程序的入口点。main
方法是程序启动时自动调用的。String[] args
表示可以从命令行传递参数给程序。System.out.println("Hello, World!");
:这行代码的作用是将字符串“Hello, World!”打印到控制台。
1.3 编译和运行
要运行这个程序,你需要先编译它。假设你已经安装了JDK(Java Development Kit),你可以使用以下命令:
javac HelloWorld.java
这会生成一个名为HelloWorld.class
的字节码文件。接下来,你可以运行这个程序:
java HelloWorld
你应该会在控制台上看到输出:
Hello, World!
恭喜你!你刚刚完成了你的第一个Java程序。
第二课:变量与数据类型
2.1 变量是什么?
变量是存储数据的容器。在Java中,变量有多种类型,每种类型可以存储不同类型的数据。常见的数据类型包括整数、浮点数、字符和布尔值。
2.2 基本数据类型
Java中有8种基本数据类型,它们分别是:
数据类型 | 大小(字节) | 描述 |
---|---|---|
byte |
1 | 8位有符号整数,范围为-128到127 |
short |
2 | 16位有符号整数,范围为-32,768到32,767 |
int |
4 | 32位有符号整数,范围为-2^31到2^31-1 |
long |
8 | 64位有符号整数,范围为-2^63到2^63-1 |
float |
4 | 32位浮点数,精度约为6-7位有效数字 |
double |
8 | 64位浮点数,精度约为15位有效数字 |
char |
2 | 16位Unicode字符,范围为’u0000’到’uffff’ |
boolean |
1 bit | 布尔值,只有true 和false 两种 |
2.3 定义变量
定义变量的语法很简单:
dataType variableName = value;
例如:
int age = 25;
double height = 1.75;
char grade = 'A';
boolean isStudent = true;
2.4 变量的命名规则
- 变量名必须以字母、下划线或美元符号开头。
- 不能使用Java关键字作为变量名。
- 变量名区分大小写。
- 建议使用有意义的名称,比如
age
而不是a
。
第三课:控制结构
3.1 条件语句
条件语句用于根据不同的条件执行不同的代码块。Java中最常用的条件语句是if
和switch
。
3.1.1 if
语句
if
语句的基本语法如下:
if (condition) {
// 如果条件为真,执行这里的代码
} else if (anotherCondition) {
// 如果另一个条件为真,执行这里的代码
} else {
// 如果所有条件都不为真,执行这里的代码
}
例如:
int temperature = 30;
if (temperature > 30) {
System.out.println("天气很热!");
} else if (temperature < 10) {
System.out.println("天气很冷!");
} else {
System.out.println("天气适中!");
}
3.1.2 switch
语句
switch
语句用于根据某个表达式的值执行不同的代码块。它通常用于处理多个离散的值。
switch (expression) {
case value1:
// 如果表达式的值等于value1,执行这里的代码
break;
case value2:
// 如果表达式的值等于value2,执行这里的代码
break;
default:
// 如果表达式的值不匹配任何case,执行这里的代码
}
例如:
int dayOfWeek = 3;
switch (dayOfWeek) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
default:
System.out.println("其他日子");
}
3.2 循环语句
循环语句用于重复执行一段代码,直到满足某个条件为止。Java中有三种主要的循环语句:for
、while
和do-while
。
3.2.1 for
循环
for
循环是最常用的循环结构之一。它的语法如下:
for (initialization; condition; update) {
// 执行这里的代码
}
例如:
for (int i = 0; i < 5; i++) {
System.out.println("当前值: " + i);
}
3.2.2 while
循环
while
循环会在条件为真的情况下重复执行代码块。它的语法如下:
while (condition) {
// 执行这里的代码
}
例如:
int count = 0;
while (count < 5) {
System.out.println("当前计数: " + count);
count++;
}
3.2.3 do-while
循环
do-while
循环与while
循环类似,但它会先执行一次代码块,然后再检查条件。它的语法如下:
do {
// 执行这里的代码
} while (condition);
例如:
int count = 0;
do {
System.out.println("当前计数: " + count);
count++;
} while (count < 5);
第四课:面向对象编程(OOP)
4.1 什么是面向对象编程?
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它通过“对象”来组织代码。对象是类的实例,类则是对象的蓝图。OOP的核心概念包括类、对象、继承、封装和多态。
4.2 类与对象
类是对象的模板,它定义了对象的属性(字段)和行为(方法)。对象是类的实例,它具有具体的属性值和行为。
4.2.1 定义类
定义类的语法如下:
public class ClassName {
// 字段(属性)
private int field1;
private String field2;
// 构造方法
public ClassName(int field1, String field2) {
this.field1 = field1;
this.field2 = field2;
}
// 方法(行为)
public void method1() {
// 方法体
}
}
4.2.2 创建对象
创建对象的语法如下:
ClassName objectName = new ClassName(arguments);
例如:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void introduce() {
System.out.println("你好,我叫" + name + ",今年" + age + "岁。");
}
}
// 创建对象
Person person = new Person("张三", 25);
person.introduce(); // 输出:你好,我叫张三,今年25岁。
4.3 继承
继承允许一个类继承另一个类的属性和方法。子类可以重写父类的方法,或者添加新的属性和方法。
4.3.1 定义继承
使用extends
关键字来定义继承关系:
class ParentClass {
// 父类的属性和方法
}
class ChildClass extends ParentClass {
// 子类的属性和方法
}
例如:
class Animal {
public void eat() {
System.out.println("动物正在吃东西。");
}
}
class Dog extends Animal {
public void bark() {
System.out.println("狗正在汪汪叫。");
}
}
Dog dog = new Dog();
dog.eat(); // 调用父类的方法
dog.bark(); // 调用子类的方法
4.4 封装
封装是指将类的属性和方法隐藏起来,只暴露必要的接口给外部使用。通过封装,我们可以保护类的内部实现细节,防止外部代码直接修改类的属性。
4.4.1 使用访问修饰符
Java提供了四种访问修饰符:private
、protected
、public
和默认(无修饰符)。private
修饰符限制了类的属性和方法只能在类内部访问。
例如:
class Car {
private String model;
private int year;
// 提供公共方法来访问私有属性
public void setModel(String model) {
this.model = model;
}
public String getModel() {
return model;
}
public void setYear(int year) {
this.year = year;
}
public int getYear() {
return year;
}
}
Car car = new Car();
car.setModel("Toyota");
car.setYear(2020);
System.out.println("车型: " + car.getModel() + ", 年份: " + car.getYear());
4.5 多态
多态是指同一个方法可以根据调用对象的不同表现出不同的行为。多态可以通过方法重载和方法重写来实现。
4.5.1 方法重载
方法重载是指在同一个类中定义多个同名但参数不同的方法。Java会根据调用时传递的参数类型和数量来选择合适的方法。
例如:
class Calculator {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
Calculator calc = new Calculator();
System.out.println(calc.add(1, 2)); // 调用int版本
System.out.println(calc.add(1.5, 2.5)); // 调用double版本
4.5.2 方法重写
方法重写是指子类可以重写父类中的方法,提供不同的实现。使用@Override
注解可以显式地表明这是一个重写方法。
例如:
class Animal {
public void makeSound() {
System.out.println("动物发出声音。");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("猫喵喵叫。");
}
}
Animal animal = new Cat();
animal.makeSound(); // 输出:猫喵喵叫。
总结
今天我们从最简单的“Hello World”程序开始,逐步学习了Java的基本语法、控制结构和面向对象编程的核心概念。希望这些内容对你有所帮助!如果你有任何问题,欢迎随时提问。下次见! 😊
参考文献
- The Java Language Specification (JLS)
- Effective Java by Joshua Bloch
- Java Concurrency in Practice by Brian Goetz