大佬们好呀~
无人扶我青云志,我自踏雪自山巅!欢迎来到爱因斯晨栏目!
更多文章见:个人主页
文章专栏请看:JAVA专栏
互三必回哦~
文章目录
一、Java 语言概述
Java
是一门面向对象的编程语言,具有跨平台、安全、健壮等特性。它由 Sun Microsystems 公司开发,后被 Oracle 收购。Java 的应用场景广泛,涵盖 Web 开发、移动应用开发、企业级应用开发、大数据处理等领域 。
二、开发环境搭建
安装 JDK
:JDK(Java Development Kit)是 Java 开发的核心工具包,包含 Java 运行时环境(JRE)、Java 编译器(javac)和 Java 工具等。你可以从 Oracle
官方网站下载对应操作系统的 JDK 安装包,然后按照安装向导进行安装。
配置环境变量:安装完成后,需要配置系统环境变量。在 Windows 系统中,需设置JAVA_HOME、PATH和CLASSPATH。JAVA_HOME指向 JDK 的安装目录,PATH中添加 JDK 的bin目录路径,CLASSPATH指定类文件的搜索路径 。在 Linux 和 macOS 系统中,同样需要进行类似的环境变量配置。
**推荐:**我们一般使用IDEA作为编译器。下载网址
三、数据类型
3.1 基本数据类型
整数类型
:
-
byte
:占用 1 个字节,取值范围是 - 128 到 127 。常用于存储小整数,如网络通信中的字节数据。 -
short
:占用 2 个字节,取值范围是 - 32768 到 32767 。适用于节省内存且数值范围不大的场景。 -
int
:占用 4 个字节,是最常用的整数类型,取值范围大,一般整数运算都可使用。 -
long
:占用 8 个字节,用于存储非常大的整数,如时间戳(从 1970 年 1 月 1 日 00:00:00 到现在的毫秒数)。定义long类型变量时,在数字后加L或l,如long num = 1234567890123L; 。
浮点类型
:
-
float
:占用 4 个字节,单精度浮点数,用于表示小数,但精度有限。定义时需在数字后加f或F,如float pi = 3.14f; 。 -
double
:占用 8 个字节,双精度浮点数,精度比float更高,是常用的小数类型,如double e = 2.71828; 。
字符类型
:char占用 2 个字节,用于表示单个字符,用单引号括起来,如char ch = ‘A’; 。它本质是一个 16 位的无符号整数,对应 Unicode 码表中的一个字符。
布尔类型
:boolean只有true和false两个值,用于逻辑判断,如boolean isDone = false; 。
public class test1 {
public static void main(String[] args) {
String name = "爱因斯晨";
int age = 18;
String gender = "女";
double height = 165.0;
boolean flag = true;
System.out.println(name);
Sys tem.out.println(age);
System.out.println(gender);
System.out.println(height);
System.out.println(flag);
}
爱因斯晨
18
女
165.0
true
注:拼接字符串与变量时应加上加号:
System.out.println("姓名:"+name);
如果应让打印更好看可以加上’/t’:
System.out.println("姓名:"+'/t'+name);
3.2 引用数据类型
类
:是对对象的抽象描述,包含属性和方法。例如String类用于处理字符串,String str = “Hello Java”; 。
接口
:定义了一组方法签名,但没有方法体,类实现接口后需实现接口中的方法,常用于实现多继承和定义规范。
数组
:是相同类型数据的有序集合,可以是基本数据类型数组,也可以是引用数据类型数组。
-
数组的声明与初始化:
-
静态初始化:声明数组的同时直接指定元素值,如int[] numbers = {1, 2, 3, 4, 5}; 。
-
动态初始化:先声明数组,再使用new关键字分配内存空间并指定长度,之后为元素赋值。如int[] ages = new int[5]; ages[0] = 20; 。
-
访问数组元素:通过索引访问,索引从 0 开始。如int first = numbers[0]; 。
-
多维数组:以二维数组为例,可看作数组的数组。如int[][] matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; ,访问元素时用两个索引,如int element = matrix[1][2]; 。
-
数组的常用操作:
-
获取长度:通过length属性获取,如int len = numbers.length; 。
-
遍历数组:通常用for循环,Java 5.0 引入的增强型for循环(foreach 循环)更方便。例如:
// 普通for循环遍历
int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
// foreach循环遍历
for (int num : numbers) {
System.out.println(num);
}
- 数组复制:可使用System.arraycopy()方法或Arrays.copyOf()方法。例如:
int[] source = {1, 2, 3, 4, 5};
int[] target = new int[5];
System.arraycopy(source, 0, target, 0, source.length);
int[] newArray = Arrays.copyOf(source, source.length);
- 数组排序:使用Arrays.sort()方法。对于基本数据类型数组,如int[] numbers = {5, 3, 1, 4, 2}; Arrays.sort(numbers); ;对于引用数据类型数组,数组元素的类需实现Comparable接口 。
四、变量和常量
4.1 变量
变量是用于存储数据的容器,使用前需先声明。声明变量要指定类型和名称,如int age; 。声明后可赋值,如age = 25; ,也可声明时直接赋值int age = 25; 。变量有作用域概念,方法内声明的是局部变量,作用域限于该方法;类中方法外声明的是成员变量,作用域是整个类 。
4.2 常量
常量是在程序运行中值不能改变的量,使用final关键字声明。例如final double PI = 3.14159; ,常量名一般用大写字母,多个单词用下划线连接,声明时必须赋值,且后续不能修改其值 。
五、运算符
5.1 算术运算符
+
:加法运算,如int sum = 3 + 5; 。
-
:减法运算,int diff = 8 - 3; 。
*
:乘法运算,int product = 4 * 6; 。
/
:除法运算,整数相除结果为整数,小数部分舍去,如int quotient = 10 / 3; // 结果为3 ;若有浮点数参与运算,结果为浮点数,如double result = 10.0 / 3; // 结果为3.3333333333333335 。
%
:取模运算,取余数,如int remainder = 10 % 3; // 结果为1 。
++
:自增运算符,有前置和后置形式。前置++i先加 1 再返回值,后置i++先返回值再加 1 。如int i = 5; int j = ++i; // i和j都为6 ,int i = 5; int j = i++; // j为5,i为6 。
--
:自减运算符,与自增运算符类似,有前置和后置形式 。
5.2 比较运算符
==
:判断两个值是否相等,int a = 5; int b = 5; boolean isEqual = a == b; // 结果为true 。
!=
:判断两个值是否不相等,int a = 5; int b = 3; boolean isNotEqual = a!= b; // 结果为true 。
>
:大于,int a = 5; int b = 3; boolean isGreater = a > b; // 结果为true 。
<
:小于,int a = 3; int b = 5; boolean isLess = a < b; // 结果为true 。
>=
:大于等于,int a = 5; int b = 5; boolean isGreaterOrEqual = a >= b; // 结果为true 。
<=
:小于等于,int a = 3; int b = 5; boolean isLessOrEqual = a <= b; // 结果为true 。
5.3 逻辑运算符
&&
:逻辑与,两个条件都为true时结果才为true,具有短路特性,即第一个条件为false时不判断第二个条件。如boolean result = (3 > 2) && (5 > 4); // 结果为true 。
||
:逻辑或,只要有一个条件为true结果就为true,也有短路特性。如boolean result = (3 > 2) || (5 < 4); // 结果为true
!
:逻辑非,将true变为false,false变为true。如boolean result =!(3 > 2); // 结果为false 。
5.4 赋值运算符
=
:基本赋值运算符,将右边的值赋给左边变量,如int a = 5; 。
+=
:加等于,int a = 3; a += 2; // 相当于a = a + 2,a的值为5 。
-=
:减等于,int a = 5; a -= 2; // 相当于a = a - 2,a的值为3 。
*=
:乘等于,int a = 3; a *= 2; // 相当于a = a * 2,a的值为6 。
/=
:除等于,int a = 6; a /= 2; // 相当于a = a / 2,a的值为3 。
%=
:取模等于,int a = 7; a %= 3; // 相当于a = a % 3,a的值为1 。
六、流程控制语句
6.1 条件语句
if-else
:根据条件判断执行不同代码块。可以有多个else if分支,例如:
int score = 85;
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 80) {
System.out.println("良好");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
switch
:根据表达式的值选择执行多个分支中的一个。表达式可以是byte、short、char、int、String(Java 7 及以上)、枚举类型。每个case分支后需用break语句跳出,否则会继续执行下一个case,default分支处理其他未匹配情况,例如:
int day = 3;
switch (day) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
default:
System.out.println("其他");
break;
}
进阶写法:
case 1 ->{
System.out.println("一");
}
case 2 ->{
System.out.println("二");
}
case 3 ->{
System.out.println("三");
}
case 4 ->{
System.out.println("四");
}
max版:
case 1 -> System.out.println("一");
case 2 -> System.out.println("二");
case 3 -> System.out.println("三");
case 4 -> System.out.println("四");
注:如果大括号中只有一行代码的话,大括号可以省略。
这个新特性只可以JDK12及以上版本使用!
6.2 循环语句
for
:常用于已知循环次数的场景。语法结构为for(初始化表达式; 循环条件; 更新表达式) { 循环体 } 。例如:
for (int i = 1; i <= 5; i++) {
System.out.println(i);
}
使用for循环时,要正确设置初始化表达式、循环条件和更新表达式,否则可能导致死循环或循环次数错误。
while
:先判断条件,条件为true时执行循环体。例如:
int i = 1;
while (i <= 5) {
System.out.println(i);
i++;
}
使用while循环时,务必在循环体中改变循环条件,否则会陷入死循环。
do-while
:先执行一次循环体,再判断条件,条件为true时继续执行循环体。例如:
int i = 1;
do {
System.out.println(i);
i++;
} while (i <= 5);
do-while循环的特点是循环体至少执行一次,适用于先执行操作再判断条件的场景。
6.3 跳转语句
break
:用于跳出当前循环或switch语句。在循环中使用可提前结束循环,例如:
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break;
}
System.out.println(i);
}
在多层循环中,可通过标签指定跳出的循环。例如:
outer:
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (i == 1 && j == 1) {
break outer;
}
System.out.println("i: " + i + ", j: " + j);
}
}
continue
:用于跳过本次循环的剩余代码,直接开始下一次循环。例如:
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue;
}
System.out.println(i);
}
在多层循环中,continue也可与标签配合使用,跳过指定循环的某次迭代。
return
:用于从方法中返回值,并结束方法执行。如果方法返回类型为void,return可省略;若有返回值,必须用return返回相应类型的值。例如:
public int add(int a, int b) {
return a + b;
}
七、总结
次循环。例如:
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue;
}
System.out.println(i);
}
在多层循环中,continue也可与标签配合使用,跳过指定循环的某次迭代。
return
:用于从方法中返回值,并结束方法执行。如果方法返回类型为void,return可省略;若有返回值,必须用return返回相应类型的值。例如:
public int add(int a, int b) {
return a + b;
}
七、总结
通过本教程,你对 Java 基础语法有了全面了解,包括数据类型、变量与常量、运算符、流程控制语句等。这些知识是进一步学习 Java 编程的基石,后续你可以深入学习 Java 的面向对象编程、异常处理、I/O 操作、多线程等高级特性,不断提升编程能力。