- 一、java基础知识
- 1、java中的注释
- (1)单行注释
- (2)多行注释
- (3)文档注释
- (4)嵌套规则
- 2、java中的关键字
- (1)全部小写
- (2)对于一些高级编程工具,会有颜色高亮显示
- 3、java中的标识符
- 3.1 组成部分
- 3.2 命名注意事项
- 3.4 推荐的命名方式
- 4、java中的变量
- 4.1 变量概念
- 4.2 变量定义格式
- 5、数据类型
- 5.1 基本数据类型
- 5.2 引用数据类型(类,接口,枚举)
- 6、数据类型转换
- 6.1 隐式转换
- 6.2 强制转换
- 7、变量的作用域
- 7.1 作用域问题
- 7.2 初始化值问题
- 7.3 变量重名
- 8、Java中的常量
- 8.1 什么是常量?
- 8.2 常量分类
- 8.3 常见转义字符
- 9、Java中的运算符
- 9.1 运算符的分类
- 9.1.1 算术运算符
- 9.1.2 赋值运算符
- 9.1.3 比较运算符
- 9.1.4 逻辑运算符
- 9.2 位运算符
- 9.2.1 位运算符
- 9.2.2 符号种类
- 9.3 条件运算符
- 10、if条件语句
- 11、switch语句
- 12、While循环语句
- 13、do...while循环语句
- 14、for循环
- 15、循环嵌套
- 16、跳转语句
- 17、数组
- 17.1 数组的定义和分类
- 17.2 数组的定义格式
- 17.3 数组元素的访问。数组的索引、内存图解
- 17.4 数组默认初始化值
- 17.5 数组注意事项
- 18、数组的常见操作
- 18.1 数组的遍历
- 18.2 获取数组最值
- 18.3 数组排序之冒泡排序
- 19、多维数组之二维数组
//(2)多行注释
(3)文档注释
和API帮助文档配合使用
(4)嵌套规则
单行注释可以嵌套
多行注释不能嵌套
文档注释不能嵌套
在编程语言中,已经被赋予了一些特殊含义的单词
(1)全部小写 (2)对于一些高级编程工具,会有颜色高亮显示 3、java中的标识符 3.1 组成部分 英文大小写字母
数字0-9
下划线_
美元符号$
3.2 命名注意事项
数字不能开头
不能使用java中的关键字
最好做到见名知意的效果
3.4 推荐的命名方式
(1) 给包命名:一般建议是公司域名的倒序
//com.itheima.项目名称。模块名称 包之间使用,进行分割 包名全部小写。
(2)给类,接口命名:
如果是一个单词:推荐首字母大写。如果是多个单词:推荐使用每一个单词的首字母都大写。
例如:ArrayList。
(3)给常量命名:
要求单词中每个字母都大写,如果是多个单词,使用下划线分割 例如:MAX_VALUE。
(4)给变量、方法命名:
如果是一个单词,推荐所有字母都小写。如果是多个单词:推荐从第二个单词开始,每个首字母都大写。 例如:name getName
4、java中的变量
4.1 变量概念
在程序运行过程中,其值是可以发生改变的量。就叫做变量4.2 变量定义格式
数据类型 变量名 = 变量值5、数据类型 5.1 基本数据类型
数据类型 所占字节 取值范围|注意事项
整数类型
byte 1 -128 -- 127
short 2
int 4 默认整数类型
long 8 建议在书写的时候末尾加L
浮点类型
float 4 在书写的时候末尾要加F
double 8 是默认的浮点类型
字符类型
char 2 0 -- 65535 被单引号括起来的单个字符
布尔类型
boolean 1 true false
5.2 引用数据类型(类,接口,枚举)
6、数据类型转换
6.1 隐式转换
自动进行转换的过程 byte short char ---> int ---> long ---> float ---> double
例: byte num1 = 10;
int num2 = 20;
int sum = num1+num2;
结果为30
6.2 强制转换
数据类型由大到小
int num1 = 10; int num2 = 20; byte sum = (byte)(num1+num2); 结果是307、变量的作用域 7.1 作用域问题
变量只在当前所在的那对大括号内有效7.2 初始化值问题
局部变量在使用之前必须赋值7.3 变量重名
在同一个作用域内,变量不能重名8、Java中的常量 8.1 什么是常量?
在程序执行过程中,其值不能发生改变的量,就是常量8.2 常量分类
字符串常量: 被双引号括起来的 "" 整数常量:常见的整数 浮点常量:常见的小数 字符常量:被单引号括起来的‘ ’,单个字符 布尔常量:true false 空常量:null final关键字:如果修饰变量,那么这个变量就会变成常量 ,且值不可修改。8.3 常见转义字符
r: 表示回车,将光标定位到当前行的开头,不会跳到下一行。 n: 表示换行,换到下一行的开头。 t: 表示制表符,将光标移到下一个制表符的位置,就像在文档中用Tab键一样。 b: 表示退格符号,就像键盘上的Backsapce。
System.out.println(" " "); //输出'
System.out.println(" ' "); //输出'
9、Java中的运算符
9.1 运算符的分类
9.1.1 算术运算符
+ - * / % ++ --
加法 减法 乘法 除法 取模 自增 自减
注意事项:
(1)除法: 整数相除,结果肯定是一个整数。如果想得到小数的结果,需要将参与运算的一方数字变成小数即可
(2)++ 单独使用,可以让数字本身进行加1的动作,++放在数字的前面和后面没有区别的
如果放在变量前面,先将变量加一,再参与运算。如果放在变量的后面,先把变量的原值取出来进行运算,然后再将变量进行加一。
--的思路一样
(3)字符串参与加法运算,会组成一个新的字符串
```
System.out.println("5+5=" + 5 + 5); // 5+5=55
System.out.println(5 + 5 "=10"); //10=10
```
字符参与加法运算:是将字符对应的码表值进行运算
```
char c = 'a';
System.out.println(c+1); //98
```
9.1.2 赋值运算符
(1)基本赋值运算符: =
(2)扩展运算符:+= -= *= /= %=
扩展运算符好处,可以自动进行数据类型的转换
```
num+=10; //num=num+10
```
9.1.3 比较运算符
>: 大于 <: 小于 >=: 大于等于 <=: 小于等于 ==: 相等 !=: 不相等
比较运算符结果肯定是布尔类型的,结果要么是true , 要么是false
9.1.4 逻辑运算符
&: 逻辑与(并且) 所有条件都为true,整个结果才是true
|:逻辑非(或者) 只要有一个条件为true,整个结果就是true
^: 逻辑异或 只要两边结果相同,那么整个结果就是false,只有两边结果不同,结果才是true
!: 逻辑非(或者) 非true则false , 非false则true
&&:短路与 执行结果和&一样,如果左边是false,右边就不再执行,如果左边是true,右边也会继续执行
||:短路或 执行结果和 | 一样,如果左边是true,右边就不再执行,如果左边是false,右边也会继续执行
逻辑运算符的左右两边必须是比较表达式
逻辑运算符最终结果也是布尔类型的
9.2 位运算符
9.2.1 位运算符
是针对二进制数的每一位进行运算的符号
专门针对数字0和1进行操作
& 位与 | 位或 ^ 位异或 ~ 取反 << 左移 >> 右移 >>> 无符号右移9.3 条件运算符
三元运算符
定义格式:
(比较表达式)?表达式1:表达式2;
执行流程:
判断比较表达式,如果是true,那么就执行表达式1,如果是false,那么就执行表达式2
public class Demo{
public class void main(String[] args){
int num1 = 30;
int num2 = 20;
//需求:获取num1和num2的最大值
int max = (num1 > num2) ? num1 : num2;
System.out.println(max);
}
}
10、if条件语句
if语句第一种格式
if(比较表达式){
语句体;
}
执行流程
判断比较表达式,如果是true.就执行语句体,否则就不执行语句体
if语句第二种格式
if(比较表达式){
语句体1;
}
else{
语句体2;
}
if语句第三种格式
if(比较表达式){
语句体1;
}
else if(比较表达式2){
语句体2;
}else if(比较表达式3){
语句体3;
}else{
语句体n;
}
switch(表达式)
{
case 值1:
语句体1;
break;
case 值2:
语句体2:
break;
...
default:
语句体n;
break;
}
利用case穿透的现象。来实现对应的季节输出
int month = 5;
switch(month){
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
...
}
12、While循环语句
while循环格式:
初始化表达式;
while(比较表达式){
循环体;
步进表达式;
}
执行流程:
1、执行初始化表达式
2、判断比较表达式。如果是true
3、执行循环体
4、执行步进表达式
5、1到2到3…直到false
初始化表达式;
do{
循环体;
步进表达式;
}while(比较表达式);
执行流程:
1、执行初始化表达式
2、执行循环体
3、执行步进表达式
4、判断比较表达式,如果是true
5、2>3>4 直到比较表达式为false为止
for循环定义格式:
for(初始化表达式; 比较表达式; 步进表达式){
循环体;
}
执行流程
1、执行初始化表达式
2、判断比较表达式,如果是true
3、执行循环体
4、执行步进表达式
5、2>3>4 直到比较表达式为false为止
在一个循环的循环体语句中,再定义一个循环
16、跳转语句流程控制语句
break:
使用场景:可以用在switch语句和循环语句中
作用:停止switch语句和循环语句的循环,也可以指定在某个位置终止
public class Demo{
public static void main(String[] args){
o: for(int i=1;i<=3;i++){
i: for(int i=1;i<5;i++)
{
if(j==3){
//选择在哪个位置终止
break o;
}
System.out.println(j);
}
}
}
}
continue:
使用场景:只能用在循环语句中
作用:跳过本次循环,继续下一次循环
public class Demo{
public static void main(String[] args){
for(int i=1;i<=5;i++)
{
if(i==4)
{
continue;
}
System.out.println(i);
}
}
}
17、数组
17.1 数组的定义和分类
数组就是一个容器,可以保存多个同一数据类型的数据
一维数组
二维数组
动态初始化:
数据类型[] 数组名 = new 数据类型[长度];
静态初始化:
数据类型[] 数组名 = new 数据类型[] {元素1,元素2,元素…}
数据类型[] 数组名 = {元素1,元素2,元素3…}
public class Demo{
public static void main(String[] args){
//使用动态初始化创建数组
int[] arr = new int[5]; //创建了一个int类型的数组。长度为5
System.out.println(arr);
}
}
17.3 数组元素的访问。数组的索引、内存图解
A: 数组的索引从0开始编号 B: 数组元素的访问:数组名[索引]17.4 数组默认初始化值
整数类型:0
浮点类型:0.0
字符类型:空白字符’u0000’
布尔类型:false
引用数据类型:null
A:直接输出数组名,默认打印的是数组的地址值
B:数组的索引从0开始,最大取到长度-1 如果使用了不存在的索引,就会出现索引越界异常:ArrayIndexOutOfBoundsException
C:如果数组没有任何引用了,还去操作数组。那么就会出现空指针异常:NullPointerException
public class Demo{
public static void main(String[] args){
//使用动态初始化创建数组
int[] arr = new int[5]; //创建了一个int类型的数组。长度为5
System.out.println(arr);
将数组的引用置为null
arr=null;
System.out.println(arr[0]); //NullPointerException
}
}
18、数组的常见操作
18.1 数组的遍历
public class Demo{
public static void main(String[] args){
//使用动态初始化创建数组
int[] arr = {10,20,30,40,50}
System.out.println(arr);
System.out.println(arr.length);
for(int i=0;i
18.2 获取数组最值
public class Demo{
public static void main(String[] args){
//使用动态初始化创建数组
int[] arr = {10,20,30,40,50}
//获取数组中的最大值
int max = arr[0];
for(int i=0;imax)
{
max=arr[i];
}
}
System.out.println("数组中的最大值是:"+max);
}
}
18.3 数组排序之冒泡排序
升序:
让相邻的两个元素比较,如果当前元素比下一个元素大,那么就让两个元素进行交换位置
public class Demo{
public static void main(String[] args){
//使用动态初始化创建数组
int[] arr = {10,20,30,40,50}
for(int i=0;iarr[j+1])
{
int temp =arr[j];
arr[j]= arr[j+1];
arr[j+1]=temp;
}
}
}
for(int i=0;i
19、多维数组之二维数组
动态初始化:
数据类型[][] 数组名 = new 数据类型[长度1][长度2];
静态初始化:
数据类型[][] 数组名 = {{元素1,元素2},{元素3,元素4},{元素5,元素6}};
public class Demo{
public static void main(String[] args){
//创建了一个长度为3的二维数组,二维数组中保存了三个一维数组,每一个一维数组的长度是2
int[][] arr = {{1,2},{3,4},{5,6}}
System.out.println(arr[0][0]);
System.out.println(arr[0][1]);
System.out.println(arr[1][0]);
System.out.println(arr[1][1]);
或者写成
for(int i=0;i


