【Java入门到精通】(二)Java基础语法(上)
一、变量
1.1 变量的含义
变量本质上就是代表一个“可操作的存储空间”,空间位置是确定的,但是里面放置什么值不确定。我们可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。Java是一种强类型语言(JavaScript是一种弱类型语言),每个变量都必须声明其数据类型。变量的数据类型决定了变量占据存储空间的大小。
1.2 变量的使用
(1)变量的声明
// 含义:定义一个变量,名字(标识)叫age,类型int类型
int age;
// 含义:同时可以定义a和b多个变量
int a , b;
注意:
- 任何类型变量不能重复定义
- 同时可以定义多个变量
(2)变量的赋值
// 含义:对已有变量进行赋值操作
age = 18; // 等号进行赋值
age = 32;
age = 40 + 30;
// 注意:变量的定义和赋值可以写在同一行
int age1 = 19;
int c = 50, d = 60;
int e,f = 30; //含义:e没有赋值,f赋值为30
(3)变量的使用
System.out.println(age); // 使用变量的时候通过名字可以访问到空间中具体的值
System.out.println(age + 10);
int g = 20;
System.out.println(age + g);
二、数据类型
Java是一种强类型语言,每个变量都必须声明其数据类型。
Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。
2.1 整数类型
整数类型包括:byte; short; int; long(注意:如果long表示的数字的范围超过int类型表数范围需要加一个L/l)
// 【1】整数类型
byte a = 10; // 表述范围:-128~127
short b = 20; // 表述范围:正负三万左右(5位数)
int c = 30; // 表述范围:正负21亿
long d = 400000000000L; // 表述范围:很大很大,【注意:如果表示的数字的范围超过int类型表数范围需要加一个L】
2.2 浮点类型
浮点类型包括:float(注意:如果用fload类型表示一个小数,后面必须加上f/F);double
float e = 3.14f; //如果用fload类型表示一个小数,后面必须加上f/F
double f = 5.6789;
2.3 字符类型
字符类型包括:char
char g = 'a'; // 单引号引起来的单个字符
System.out.println("zifuchuan"); // 后续接触到的字符串是多个单个字符串拼接起来的
2.4 布尔类型
布尔类型包括:boolean
boolean flag = true; // 布尔值只有两个:true、false
三、运算符
3.1 运算符展示
3.2 常用运算符
运算符类别 | 具体运算符 |
---|---|
算数运算符 | +、++ |
赋值运算符 | = |
扩展运算符 | += |
关系运算符 | == |
逻辑运算符 | &&、|| |
(1)算数运算符
加号:作用:(1)表示正数(2)表示相加操作(3)字符串
// 加号:作用:(1)表示正数(2)表示相加操作(3)字符串的拼接
System.out.println(+10); // 输出:10
System.out.println(5 + 6); // 输出:11
int num = 10;
System.out.println("输出一个数字" + num); // 输出:输出一个数字10
// 只要 + 左右两侧任意一侧是字符串,那么结果一定是字符串
System.out.println(5 + 6 +"abc"); // 输出:11abc
System.out.println("abc" + 5 + 6); // 输出:abc56
自增:无论 ++ 放在变量前还是放在变量后,都是+1操作
// ++ 自增;无论 ++ 放在变量前还是放在变量后,都是+1操作
int a = 10;
a++;
System.out.println("111:"+a); // 11
++a;
System.out.println("111:"+a); // 12
当自增参与到表达式中
++ 在变量后面
int a = 5;
int m = a ++ +7; // 如果 ++ 在变量的后面,先运算,后+1:m = a +7, a +1
System.out.println(a); // 6
System.out.println(m); // 12
++ 在变量前面
int a = 5;
int n = ++a + 7; // 如果++在变量的前面,先+1,再运算:a + 1,n = a + 7
System.out.println(a); // 6
System.out.println(n); // 13
(2)赋值运算符
// 赋值运算符 =
int num1 = 10;
int num2 = 20;
int num3 = num1 + num2;
System.out.println(num3);// 求和
int sum = 0;
sum += num1;// sum = sum + num1;
sum += num2;// sum = sum + num2;
sum += num3;// sum = sum + num3;
System.out.println(sum); // 输出:70
(3)关系运算符
// 【关系运算符】 ==,最终的结果是布尔值,要么true要么false
System.out.println(5 == 6); // false
System.out.println(5 == 5); // true
(4)逻辑运算符
// 【逻辑运算符】:逻辑运算符左右连接的是布尔值
// &&逻辑:如果两个操作数都是true,那么结果是true,只要有一个操作数是false,那么结果一定是false
System.out.println(true && false); // false
System.out.println(true && true); // true
System.out.println(false && false); // false// ||逻辑:如果两个操作数都是false,那么结果是false,只要有一个操作数是true,那么结果就是true
System.out.println(true || false);
System.out.println(true || true);
System.out.println(false || false);
四、流程控制
4.1 流程控制的介绍
(1)作用
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。
(2)分类
控制语句分为三类:顺序、选择和循环。
【顺序结构】:先执行a,再执行b的逻辑(依次执行)
【条件判断结构】:如果....,则....的逻辑(根据判断条件,执行不同的逻辑)
【循环结构】:如果.....,则再继续....的逻辑(没有达到某一条件之前,一直循环)
4.2 分支结构
(1)语法结构
(2)流程图
(3)代码示例
// 需求:判断一个数是否大于10// 给定一个数
int num = 8;
// 判定:
if(num > 10){// if后面是一个表达式,这个表达式的结果必须是布尔值,要么是true,要么是false,只有这个表达式的返回结果式true的时候,才会执行后续语句System.out.println("这个数是大于10的数字");
} else {// 如果if中的表达式的返回结果式false的时候,System.out.println("这个数是小于10的数字");
}// 【多分支】
int score = 90;
if(score >= 90){System.out.println("学生成绩A级");
} else if (score >= 80) {System.out.println("学生成绩B级");
} else if (score >= 70) {System.out.println("学生成绩C级");
}
4.3 循环结构—while循环
在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次。
语句中应有使循环趋向于结束的语句,否则会出现无限循环—“死”循环。
(1)语法结构
(2)流程图
(3)代码示例
每个循环体都包含四部分:条件初始化、条件判断、循环体、迭代
// 需求:实现一个求和功能1+2+3+4+5// 定义变量
int num = 1; // 【1】条件初始化
// 定义一个变量来接受和
int sum = 0;
while (num <= 5) { // 【2】条件判断sum += num; // 【3】循环体num++; // 【4】 迭代
}
// 输出结果
System.out.println("求和结果为" + sum);// 每个循环体都包含四部分:条件初始化、条件判断、循环体、迭代
4.4 循环结构—for循环
for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。
for循环在第一次反复之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结果为true,则执行循环体,否则,终止循环;最后在每一次反复的时候,进行某种形式的“步进”,即执行迭代因子初始化部分设置循环变量的初值条件判断部分为任意布尔表达式迭代因子控制循环变量的增减for循环在执行条件判定后,先执行的循环体部分,再执行步进。
(1)语法结构
(2)流程图
(3)代码示例
/ 定义一个变量来接受和
int sum = 0;for (int num = 1;num<=5;num++) {sum += num;
}
// 输出结果
System.out.println("for求和结果为" + sum);
五、方法和方法的重载
5.1 什么是方法
方法(method)就是一段用来完成特定功能的代码片段。
5.2 方法声明格式
5.3 方法调用方式
5.4 方法详细说明
- 形式参数(形参):在方法声明式用于接收外界传入的数据
- 实际参数(实参):调用方法时实际传给方法的数据
- 返回值:方法在执行完毕后返回给调用它的环境的数据
- 返回值类型:事先约定的返回值的数据类型,如无返回值,必须显示指定为void
5.5 方法的重载
在同一个类中,方法名相同,形参列表不同的多个方法,构成了方法的重载
方法的重载只和方法名、形参列表有关,与其他无关
要求:方法名必须相同,形参列表必须不同(类型不同,顺序不同,个数不同)
public static int addNum(int num1,int num2){// 求和int sum = num1 + num2;return sum;
}
public static int addNum(int num1,int num2,int num3){// 求和int sum = num1 + num2;return sum;
}
六、数组
6.1 数组的概念
数组是相同类型数据的有序集合。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们。
6.2 数组的特点
- 长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
- 其元素的类型必须是相同类型,不允许出现混合类型。
- 数组类型可以是任何数据类型,包括基本类型和引用类型。
- 数组有索引的:索引从0开始,到数组.length-1结束。
6.3 数组的使用
// 数组声明:以int类型数组为案例
int [] arr; // 定义一个int类型的数组,名字是arr
// 数组的创建:
arr = new int [4]; // 在创建的时候,要指定数组的长度:创建一个长度为4的int类型的数组
// int [] arr = new int[10] // 上面两个步骤可以合并起来写
// 数组的赋值操作:
arr[0] = 15;
arr[1] = 60;
arr[2] = 50;
arr[3] = 5;
// arr[4] = 10; // 超过数组长度会报错
// 数组的使用:
System.out.println(arr[3]);
System.out.println(arr[0]+30);// 数组的遍历操作(查看数组中的每一个元素)
for (int i = 0; i <= arr.length-1; i++) {System.out.println(arr[i]);
}
// 增强for循环
for (int num : arr) { // 对arr数组进行遍历,遍历出来的每一个元素用num变量接收System.out.println(num); // 每次遍历循环输出num的数值
}