5436 字
27 分钟

Java-第一章-编程基础

2026-03-06
浏览量 加载中...
Note

Java作为计算机学生的必修课,我们将以一种基础且简单的方式,向大家介绍Java,带领大家一步一步学习Java语言!

因为Java与C语言的基础语法相似,我们之前已经学习过C语言,所以我们将会以很简单的方式和简单的示例来讲解Java的相关基础语法,但是在开始前我们还是要提醒各位,Java最难的部分并非基础语法,而是后续的JDBC、网络、面向对象这些内容,但是基础语法是基础中的基础,所以一定要认真学习哦!

Java是什么?#

Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。由 James Gosling和同事们共同研发,并在 1995 年正式推出。

后来 Sun 公司被 Oracle (甲骨文)公司收购,Java 也随之成为 Oracle 公司的产品。

Java分为三个体系:

  • JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)
  • JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)
  • JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)。

2005 年 6 月,JavaOne 大会召开,SUN 公司公开 Java SE 6。此时,Java 的各种版本已经更名,以取消其中的数字 “2”:J2EE 更名为 Java EE,J2SE 更名为Java SE,J2ME 更名为 Java ME。

Java的特点是什么?#

  • Java 语言是简单的:Java 语言的语法与 C 语言和 C++ 语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java 丢弃了 C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java 语言不使用指针,而是引用。并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧。
  • Java 语言是面向对象的:Java 语言提供类、接口和继承等面向对象的特性,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为 implements)。Java 语言全面支持动态绑定,而 C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。
  • Java语言是分布式的:Java 语言支持 Internet 应用的开发,在基本的 Java 应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括 URL、URLConnection、Socket、ServerSocket 等。Java 的 RMI(远程方法激活)机制也是开发分布式应用的重要手段。
  • Java 语言是健壮的:Java 的强类型机制、异常处理、垃圾的自动收集等是 Java 程序健壮性的重要保证。对指针的丢弃是 Java 的明智选择。Java 的安全检查机制使得 Java 更具健壮性。
  • Java语言是安全的:Java通常被用在网络环境中,为此,Java 提供了一个安全机制以防恶意代码的攻击。除了Java 语言具有的许多安全特性以外,Java 对通过网络下载的类具有一个安全防范机制(类 ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类 SecurityManager)让 Java 应用设置安全哨兵。
  • Java 语言是体系结构中立的:Java 程序(后缀为 java 的文件)在 Java 平台上被编译为体系结构中立的字节码格式(后缀为 class 的文件),然后可以在实现这个 Java 平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。
  • Java 语言是可移植的:这种可移植性来源于体系结构中立性,另外,Java 还严格规定了各个基本数据类型的长度。Java 系统本身也具有很强的可移植性,Java 编译器是用 Java 实现的,Java 的运行环境是用 ANSI C 实现的。
  • Java 语言是解释型的:如前所述,Java 程序在 Java 平台上被编译为字节码格式,然后可以在实现这个 Java 平台的任何系统中运行。在运行时,Java 平台中的 Java 解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。
  • Java 是高性能的:与那些解释型的高级脚本语言相比,Java 的确是高性能的。事实上,Java 的运行速度随着 JIT(Just-In-Time)编译器技术的发展越来越接近于 C++。
  • Java 语言是多线程的:在 Java 语言中,线程是一种特殊的对象,它必须由 Thread 类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为 Thread(Runnable) 的构造子类将一个实现了 Runnable 接口的对象包装成一个线程,其二,从 Thread 类派生出子类并重写 run 方法,使用该子类创建的对象即为线程。值得注意的是 Thread 类已经实现了 Runnable 接口,因此,任何一个线程均有它的 run 方法,而 run 方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java 语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为 synchronized)。
  • Java 语言是动态的:Java 语言的设计目标之一是适应于动态变化的环境。Java 程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java 中的类有一个运行时刻的表示,能进行运行时刻的类型检查。

Java 程序的基本结构#

Java 程序有固定的编写规范,一个最基础的可运行 Java 程序结构如下:

1.语法规则#

  1. Java 程序的基本单位是类(class),代码必须写在类里面
  2. 类名必须和文件名一致(大小写也要相同),且首字母建议大写
  3. 程序入口是 main 方法(固定格式:public static void main(String[] args)
  4. 语句以分号 ; 结束,代码块用大括号 {} 包裹

示例

// 单行注释:这是一个基础的Java程序结构示例
/*
* 多行注释:
* HelloWorld 是类名,必须和文件名 HelloWorld.java 一致
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Java!");
}
}

运行说明

  1. 将代码保存为 HelloWorld.java
  2. 打开命令行,进入文件所在目录
  3. 执行编译命令:javac HelloWorld.java(生成字节码文件)
  4. 执行运行命令:java HelloWorld(输出:Hello, Java!

运行效果

Hello, Java!

基本数据类型#

Java 数据类型分为基本数据类型(8种)和引用数据类型,基本数据类型是构成程序的基础,直接存储数值。

1.byte 类型#

基础语法byte 是8位有符号整数类型,取值范围 -128 ~ 127,占用1个字节,常用于节省内存(如存储文件流、网络数据)。 示例

public class ByteDemo {
public static void main(String[] args) {
byte age = 20;
System.out.println("byte类型变量age的值:" + age);
// 测试取值范围(超过范围会编译报错)
// byte error = 128; // 编译报错:数值超出byte范围
}
}

运行效果

byte类型变量age的值:20

2.short 类型#

基础语法short 是16位有符号整数类型,取值范围 -32768 ~ 32767,占用2个字节,适用于小整数场景。 示例

public class ShortDemo {
public static void main(String[] args) {
short score = 95;
System.out.println("short类型变量score的值:" + score);
}
}

运行效果

short类型变量score的值:95

3.int 类型#

基础语法int 是32位有符号整数类型,取值范围 -2^31 ~ 2^31-1(约±21亿),占用4个字节,是Java中最常用的整数类型。 示例

public class IntDemo {
public static void main(String[] args) {
int num = 100000;
System.out.println("int类型变量num的值:" + num);
}
}

运行效果

int类型变量num的值:100000

4.long 类型#

基础语法long 是64位有符号整数类型,取值范围 -2^63 ~ 2^63-1,占用8个字节,用于存储大整数(如时间戳),定义时需加后缀 L/l示例

public class LongDemo {
public static void main(String[] args) {
long timestamp = 1741000000000L;
System.out.println("long类型变量timestamp的值:" + timestamp);
}
}

运行效果

long类型变量timestamp的值:1741000000000

5.float 类型#

基础语法float 是32位单精度浮点数,占用4个字节,定义时需加后缀 F/f,适用于精度要求不高的小数场景。 示例

public class FloatDemo {
public static void main(String[] args) {
float price = 9.9F;
System.out.println("float类型变量price的值:" + price);
}
}

运行效果

float类型变量price的值:9.9

6.double 类型#

基础语法double 是64位双精度浮点数,占用8个字节,是Java默认的小数类型,精度高于float。 示例

public class DoubleDemo {
public static void main(String[] args) {
double pi = 3.1415926535;
System.out.println("double类型变量pi的值:" + pi);
}
}

运行效果

double类型变量pi的值:3.1415926535

7.char 类型#

基础语法char 是16位字符类型,占用2个字节,存储单个字符(Unicode编码),用单引号 '' 包裹。 示例

public class CharDemo {
public static void main(String[] args) {
char ch = 'A';
System.out.println("char类型变量ch的值:" + ch);
}
}

运行效果

char类型变量ch的值:A

8.boolean 类型#

基础语法boolean 表示布尔值,只有 true(真)和 false(假)两个值,占用1个字节,常用于条件判断。 示例

public class BooleanDemo {
public static void main(String[] args) {
boolean isSuccess = true;
System.out.println("boolean类型变量isSuccess的值:" + isSuccess);
}
}

运行效果

boolean类型变量isSuccess的值:true

运算符#

运算符是用于执行运算的符号,Java 运算符主要分为算术、赋值、比较、逻辑、位运算符等,以下是常用类型:

1.算术运算符#

基础语法:包括 +(加)、-(减)、*(乘)、/(除)、%(取余)、++(自增)、--(自减)。 示例

public class ArithmeticDemo {
public static void main(String[] args) {
int a = 10, b = 3;
System.out.println("a + b = " + (a + b));
System.out.println("a - b = " + (a - b));
System.out.println("a * b = " + (a * b));
System.out.println("a / b = " + (a / b));
System.out.println("a % b = " + (a % b));
System.out.println("a++ = " + (a++));
System.out.println("++a = " + (++a));
}
}

运行效果

a + b = 13
a - b = 7
a * b = 30
a / b = 3
a % b = 1
a++ = 10
++a = 12

2.赋值运算符#

基础语法:基础赋值 =,复合赋值 +=-=*=/=%=示例

public class AssignDemo {
public static void main(String[] args) {
int x = 5;
x += 3; // 等价于 x = x + 3
System.out.println("x += 3 后的值:" + x);
x *= 2; // 等价于 x = x * 2
System.out.println("x *= 2 后的值:" + x);
}
}

运行效果

x += 3 后的值:8
x *= 2 后的值:16

3.比较运算符#

基础语法==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于),返回布尔值。 示例

public class CompareDemo {
public static void main(String[] args) {
int m = 8, n = 8;
System.out.println("m == n:" + (m == n));
System.out.println("m > n:" + (m > n));
}
}

运行效果

m == n:true
m > n:false

4.逻辑运算符#

基础语法&&(短路与)、||(短路或)、!(非),操作布尔值,短路特性:&& 左边为false时右边不执行,|| 左边为true时右边不执行。 示例

public class LogicDemo {
public static void main(String[] args) {
boolean flag1 = true, flag2 = false;
System.out.println("flag1 && flag2:" + (flag1 && flag2));
System.out.println("flag1 || flag2:" + (flag1 || flag2));
System.out.println("!flag1:" + (!flag1));
}
}

运行效果

flag1 && flag2:false
flag1 || flag2:true
!flag1:false

输入与输出(I/O)#

1.输出#

最常用的两种输出方式:

语法说明示例
System.out.println()输出内容后换行System.out.println("换行输出");
System.out.print()输出内容后不换行System.out.print("不换行输出");
System.out.printf()输出格式化内容后不换行System.out.printf("%d\n",a);

2.输入#

需要导入 java.util.Scanner 类,步骤:

  1. 导入 Scanner 类(写在类定义上方)
  2. 创建 Scanner 对象
  3. 使用 Scanner 的方法读取不同类型的数据
  4. 关闭 Scanner

示例

import java.util.Scanner;
public class InputOutputDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("=== Java输入输出示例 ===");
System.out.print("请输入你的姓名:");
String name = scanner.next();
System.out.print("请输入你的年龄:");
int age = scanner.nextInt();
System.out.print("请输入你的身高(米):");
double height = scanner.nextDouble();
System.out.println("\n你的信息:");
System.out.println("姓名:" + name);
System.out.println("年龄:" + age + "岁");
System.out.println("身高:" + height + "米");
scanner.close();
}
}

运行效果

=== Java输入输出示例 ===
请输入你的姓名:张三
请输入你的年龄:20
请输入你的身高(米):1.75
你的信息:
姓名:张三
年龄:20岁
身高:1.75米

条件判断结构#

1.if 语句#

基础语法

if (条件表达式) {
// 条件为true时执行的代码
}

示例

public class IfDemo {
public static void main(String[] args) {
int score = 85;
if (score >= 60) {
System.out.println("成绩及格!");
System.out.println("你的分数是:" + score);
}
}
}

运行效果

成绩及格!
你的分数是:85

2. if-else 语句#

语法

if (条件表达式) {
// 条件为true时执行
} else {
// 条件为false时执行
}

示例

public class IfElseDemo {
public static void main(String[] args) {
int score = 55;
if (score >= 60) {
System.out.println("成绩及格!");
} else {
System.out.println("成绩不及格,需要补考!");
}
}
}

运行效果

成绩不及格,需要补考!

3.if-else if-else 语句#

语法

if (条件1) {
// 条件1为true时执行
} else if (条件2) {
// 条件2为true时执行
} else {
// 所有条件都为false时执行
}

示例

public class IfElseIfDemo {
public static void main(String[] args) {
int score = 88;
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 80) {
System.out.println("良好");
} else if (score >= 70) {
System.out.println("中等");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
}
}

运行效果

良好

4.switch 语句#

适用于固定值匹配的场景(如:数字、字符串),比多层 if-else 更简洁。

语法

switch (表达式) {
case 值1:
// 表达式等于值1时执行
break; // 跳出switch(必须加,否则会穿透到下一个case)
case 值2:
// 表达式等于值2时执行
break;
// 更多case...
default:
// 表达式不匹配任何case时执行
break;
}

示例

public class SwitchDemo {
public static void main(String[] args) {
int week = 3;
switch (week) {
case 1:
System.out.println("星期一:开始上班");
break;
case 2:
System.out.println("星期二:努力搬砖");
break;
case 3:
System.out.println("星期三:再坚持两天");
break;
case 4:
System.out.println("星期四:快周末了");
break;
case 5:
System.out.println("星期五:准备放假");
break;
case 6:
case 7:
System.out.println("周末:休息啦!");
break;
default:
System.out.println("输入的星期数无效!");
break;
}
}
}

运行效果

星期三:再坚持两天

循环结构#

1. while 循环#

适合循环次数不确定的场景,先判断条件,满足才执行循环体。

语法

while (条件表达式) {
// 循环体:条件为true时重复执行的代码
// 必须有让条件变为false的语句,否则会无限循环
}

示例

public class WhileDemo {
public static void main(String[] args) {
int i = 1;
while (i <= 5) {
System.out.println("当前数字:" + i);
i++;
}
System.out.println("循环结束!");
}
}

运行效果

当前数字:1
当前数字:2
当前数字:3
当前数字:4
当前数字:5
循环结束!

2. do-while 循环#

至少执行一次循环体,适合必须先做一次的场景。

语法

do {
// 循环体
} while (条件表达式);

示例

import java.util.Scanner;
public class DoWhileDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int target = 7;
int guess;
do {
System.out.print("猜一个1-10之间的数字:");
guess = scanner.nextInt();
if (guess < target) {
System.out.println("猜小了,再试试!");
} else if (guess > target) {
System.out.println("猜大了,再试试!");
}
} while (guess != target);
System.out.println("恭喜你,猜对了!");
scanner.close();
}
}

运行效果

猜一个1-10之间的数字:1
猜小了,再试试!
猜一个1-10之间的数字:9
猜大了,再试试!
猜一个1-10之间的数字:7
恭喜你,猜对了!

3. for 循环#

最常用的循环,适合循环次数明确的场景,语法更简洁。

语法

for (初始化表达式; 条件表达式; 更新表达式) {
// 循环体
}

示例

public class ForDemo {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 5; i++) {
sum += i;
System.out.println("累加 " + i + " 后,和为:" + sum);
}
System.out.println("\n1-5的总和是:" + sum);
}
}

运行效果

累加1后,和为:1
累加2后,和为:3
累加3后,和为:6
累加4后,和为:10
累加5后,和为:15
1-5的总和是:15

4. 循环控制关键字#

  • break:跳出当前循环(结束整个循环)
  • continue:跳过本次循环,直接进入下一次循环

示例

public class LoopControlDemo {
public static void main(String[] args) {
System.out.println("=== break示例 ===");
for (int i = 1; i <= 5; i++) {
if (i == 3) {
break;
}
System.out.println("i = " + i);
}
System.out.println("\n=== continue示例 ===");
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue;
}
System.out.println("i = " + i);
}
}
}

运行效果

=== break示例 ===
i = 1
i = 2
=== continue示例 ===
i = 1
i = 2
i = 4
i = 5

Java 数组#

数组是存储相同类型数据的有序集合,分为一维、二维、多维数组,数组长度固定,索引从0开始。

1.一维数组#

基础语法

  • 声明:数据类型[] 数组名;数据类型 数组名[];(推荐前者)
  • 初始化:静态初始化 数据类型[] 数组名 = {值1, 值2, ...};;动态初始化 数据类型[] 数组名 = new 数据类型[长度]; 示例
public class OneDArrayDemo {
public static void main(String[] args) {
int[] nums = {1, 2, 3, 4, 5};
System.out.println("一维数组元素:");
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i] + " ");
}
String[] names = new String[3];
names[0] = "Java";
names[1] = "Python";
names[2] = "C++";
System.out.println("\n动态初始化数组元素:");
for (String name : names) {
System.out.print(name + " ");
}
}
}

运行效果

一维数组元素:
1 2 3 4 5
动态初始化数组元素:
Java Python C++

2.二维数组#

基础语法:本质是“数组的数组”,声明 数据类型[][] 数组名;,初始化分为规则二维数组和不规则二维数组。 示例

public class TwoDArrayDemo {
public static void main(String[] args) {
int[][] matrix = {{1, 2}, {3, 4}, {5, 6}};
System.out.println("规则二维数组元素:");
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
int[][] irregularArr = new int[2][];
irregularArr[0] = new int[2];
irregularArr[1] = new int[3];
irregularArr[0][0] = 10;
irregularArr[1][1] = 20;
System.out.println("不规则二维数组指定元素:");
System.out.println(irregularArr[0][0] + " " + irregularArr[1][1]);
}
}

运行效果

规则二维数组元素:
1 2
3 4
5 6
不规则二维数组指定元素:
10 20

3.多维数组#

基础语法:三维及以上数组,本质是嵌套的二维数组,语法 数据类型[][][] 数组名;,使用场景较少(如三维坐标、多维数据建模)。 示例

public class MultiDArrayDemo {
public static void main(String[] args) {
int[][][] cube = {
{{1, 2}, {3, 4}, {5, 6}},
{{7, 8}, {9, 10}, {11, 12}}
};
System.out.println("三维数组中cube[1][2][1]的值:" + cube[1][2][1]);
}
}

运行效果

三维数组中cube[1][2][1]的值:12

Java 方法#

方法(函数)是封装特定功能的代码块,可重复调用,提高代码复用性和可读性。

1.方法的定义与调用#

基础语法

修饰符 返回值类型 方法名(参数类型1 参数名1, 参数类型2 参数名2, ...) {
// 方法体(功能逻辑)
return 返回值; // 无返回值时(void)无需return
}

示例

public class MethodDemo {
public static void sayHello() {
System.out.println("Hello, Java!");
}
public static int add(int num1, int num2) {
return num1 + num2;
}
public static void main(String[] args) {
sayHello();
int sum = add(10, 20);
System.out.println("10 + 20 = " + sum);
}
}

运行效果

Hello, Java!
10 + 20 = 30

2.方法的重载#

基础语法:同一个类中,方法名相同、参数列表(个数/类型/顺序)不同,与返回值无关,用于处理同一类功能的不同参数场景。 示例

public class MethodOverloadDemo {
public static int add(int a, int b) {
return a + b;
}
public static int add(int a, int b, int c) {
return a + b + c;
}
public static double add(double a, double b) {
return a + b;
}
public static void main(String[] args) {
System.out.println("两个int求和:" + add(1, 2));
System.out.println("三个int求和:" + add(1, 2, 3));
System.out.println("两个double求和:" + add(1.5, 2.5));
}
}

运行效果

两个int求和:3
三个int求和:6
两个double求和:4.0

总结#

  1. Java 基础语法规范:代码需包裹在类中,程序执行入口为 main 方法;语句以分号结尾,代码块用 {} 界定;支持int、char、double、boolean等基础变量类型的直接定义与使用。
  2. 输入输出核心用法:输出依赖 System.out.println()(换行)/System.out.print()(不换行);输入需导入 java.util.Scanner 类,通过 next()(字符串)、nextInt()(整数)等方法读取控制台数据。
  3. 条件判断使用场景if 语句适配范围性条件判断(如数值区间),switch 语句适配固定值匹配场景;switchbreak 可终止分支避免穿透,default 处理未匹配到的默认情况。
  4. 循环结构选择原则while 循环适合循环次数不确定的场景(先判断后执行),for 循环适合循环次数明确的场景(初始化、条件、步长一体化);break 强制终止整个循环,continue 跳过当前循环轮次。
  5. Java 基本数据类型特性:共8种基础类型,整数型(byte/short/int/long)、浮点型(float/double)、字符型(char)、布尔型(boolean)各有专属取值范围,需根据场景选择适配类型。
  6. 数组核心特性:存储同类型数据的固定长度集合,一维数组为基础形式,二维/多维数组本质是“数组嵌套数组”;数组索引从0开始,长度不可动态修改。
  7. 方法设计与复用:方法是封装特定功能的代码块,支持方法重载(同名不同参数列表);通过方法封装可降低代码冗余,是Java实现模块化编程的核心基础。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
Java-第一章-编程基础
https://blog.pigeons2023.asia/posts/20260306/
作者
Pigeons2023
发布于
2026-03-06
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
Pigeons2023
不曾与你分享的时间,我在进步.
公告
欢迎光临我的博客 🎉 ,这里会分享我的日常和学习中的收集、整理及总结,希望能对你有所帮助:) 💖
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
19
分类
4
标签
6
总字数
62,837
运行时长
0
最后活动
0 天前

目录