一,java基础知识
1.1 注释
注释就是在程序指定的位置添加说明性的信息,就是对代码的一种解释。
注释分为:
-
单行注释
格式:
//注释信息 -
多行注释
格式:
/*注释信息*/ -
文档注释
格式:
/**注释信息*/
1.2 关键字
被 java 赋予了特定含义的英文单词,关键字全部小写,在常用编译器中关键字会高亮显示的。
例如:class 关键字:用于定义,创建一个类,类是 java 最基本的组成单元。
1.3 字面量
告诉程序员,数据在程序中的书写格式
字面量的分类:
- 整数类型:不带小数点的数字
- 小数类型:带小数点的数字
- 字符串类型:用双引号括起来的内容
- 字符类型:用单引号括起来,内容有且只有一个
- 布而类型:布尔值,表示真假,true,false
- 空类型:一个特殊值,空值,null(null类型的字面量无法字节打印出来)
特殊字符:
\t制表符,在打印的时候会把前面字符串长度补齐到8或8的倍数\n换行符\r回车符
二,变量
变量:计算机内开辟的一个小空间,空间内存储数据值。
-
变量的定义格式:
数据类型 变量名字 = 数据值; -
数据类型:限制变量能存储数据的类型
-
变量名:存储空间的名字,指针
-
等号:给指定变量名的空间赋值
变量使用的注意事项:
-
一个变量只能存一个数据值
-
变量名不能重复
-
一条语句可以定义多个变量
int a,b,c -
变量使用前要赋值
-
变量有作用域和范围(变量根据所处位置不同分为局部变量和成员变量)
- 局部变量:写在方法体中的变量(局部变量的作用范围只在这个方法体中,不能用static,final,public等关键字修饰)
-
成员变量:写在成员位置中的变量
数据类型:数据类型分为基本数据类型和引用数据类型
基本数据类型:
- 整数类型
- byte 取值范围-128~127 ,在内存中占用1字节
- short 取值范围 -32768~32767, 在内存中占用2字节
- int 取值范围 -2147483648~21471483647 ,在内存中占用4字节,整数类型默认使用int
- long 取值范围-9223372036854772808~9223372036854772807 ,在内存中占用8字节,需要在赋值的数字最右边加上L标识
- 浮点数类型
- float 取值范围 -3.401298e-38~3.402823e+38, 在内存中占用4字节,需要在赋值的数字最右边加上F标识
- double 取值范围 -4.9000000e-324~1.797693e+308 ,在内存中占用8字节,浮点数类型默认使用double
- 字符类型
- char 取值范围 0~65535 ,在内存中占用2字节
- 布尔类型
- boolean 取值范围 true,flase ,在内存中占用1字节
整数和小数取值范围大小关系:
double>float>long>int>short>byte
标识符:在代码中的类名,方法名,变量名统称标识符
- 取名规则:
- 由数字,字母,下划线,美元符号组成
- 不能以数字开头
- 不能是关键字
- 区分大小写
- 取名标准:
- 小驼峰命名法:给方法,变量取名用小驼峰命名法
- 标识符是一个单词的时候全部小写
- 标识符有多个单词组成时,第一个单词首字母小写,其他首字母大写
- 大驼峰命名法:类名
- 标识符是一个单词的时候,首字母大写
- 标识符由多个单词组成的时候,每个单词首字母大写
- 取名要见名知意
- 小驼峰命名法:给方法,变量取名用小驼峰命名法
三,运算符
运算符:对字面量或变量进行操作的符号
表达式:用运算符把字面量或变量连接起来,符合 java 语法的式子
3.1运算符分类
-
算数运算符
符号 说明 = 加 - 减 * 乘 / 除 % 取余 -
自增,自减运算符
++ 和 --,作用是变量 +1 和变量 -1,可以放在变量的前面或后面,所代表的意义也是不一样的!
放前面代表先进行 ++ 或 -- 再进行其他运算,后面就是先进行其他运算,最后再进行 ++ 或 --
-
赋值运算符
符号 作用 说明 = 赋值 int a=10,把10赋值给a += 加后赋值 a+=b,a=a+b -= 减后赋值 a-=b,a=a-b *= 乘后赋值 a*=b,a=a*b /= 除后赋值 a/=b,a=a/b %= 取余后赋值 a%=b,a=a%b -
关系运算符 / 比较运算符
符合 说明 == a==b,判断a是否等于b,成立返回true,不成立返回false != a!=b,判断a是否不等于b,成立返回true,不成立返回false > a>=b,判断a是否大于b,成立返回true,不成立返回false < a<b,判断a是否小于b,,成立返回true,不成立返回false >= a>=b,判断a是否大于等于b,成立返回true,不成立返回false <= a<=b,判断a是否小于等于b,成立返回true,不成立返回false 关系运算符结果都是 boolean 类型
-
短路逻辑运算符
符号 作用 && 短路与 俩边都为真结果才为真 || 短路或 俩边只要有一个为真结果就为真 如果表达式左边部分就可以确定整个表达式的结果,那么右边部分就不会执行
-
三元运算符
是 if 的一种缩写
格式:
关系表达式?表达式1:表达式2,如果关系表达式结果为真就执行 1,否则执行 2 -
运算符的优先级
小括号优先于所有,&& 优先级大于 ||
3.2类型转换
数字进行运算的时,数据类型不一样是不能运算的,这个时候需要类型转换,类型转换分为俩种:
-
强制类型转换:(大 --> 小)
如果把一个取值范围大的数值,赋值给取值范围小的变量,是不允许直接赋值的。如果一定要赋值,就需要强制类型转换
格式:目标数据类型 变量名 =(目标数据类型) 被强制转换的值
-
隐式类型转换:自动类型提升(小 --> 大 )
- 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
- byte,short,char三种类型数据运算时,会先提升为int再运算
字符串中的加号运算符:当 "+" 操作中出现字符串时,这个时候表示字符串的拼接,会将前后俩个数据拼接在一起产生一个新的字符串
运算顺序:变量,数据之间的运算表达式,是从左到右依次执行的。如 1+99+"abc"="100abc"
字符的运算操作:当出现字符 + 字符,字符 + 数字的时候,先把字符通过 ASCII 表查到对应的数字再进行计算!
ASCII 码表记:
a-->97
A-->65
注:如果是整数之间操作只能得到整数,多出小数部分会被删掉。
四,流程控制语句
顺序结构语句是 java 程序默认的执行流程,按照代码的先后顺序,从上到下依次执行。
4.1 IF语句
-
格式:
if(关系表达式){ 语句体; } -
格式:
if(关系表达式){ 语句体; }else{ 语句体 } -
格式
if(关系表达式1){ 语句体; }else if(关系表达式2){ 语句体; }else{ 语句体; }
-
如果表达式内是一个布尔类型变量判断,不需要用 ==
-
如果语句体只有一行代码,不需要大括号(建议加上)
-
格式 3 可以有多个 else if
4.2 switch语句
格式 1:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
case 值n:
语句体n;
break;
default:
语句体n+1;
break;
}
格式 2:
switch(表达式){
case 值1->{
语句体;
}
case 值2->{
语句体
}
case 值3->{
语句体;
}
default ->{
语句体;
}
}
注意:
- case的值只能为字面量不能为变量
- case值不能重复
- break表示中断,用来结束switch语句
- default可以不写,default可以不写在最下面,但是不建议
- if用来进行范围判断,switch用来对精确的值进行判断
4.3 循环结构
-
for 循环
//for(初始化语句;条件判断语句;条件控制语句) for(int i=0;i<n;i++){ //语句; } -
while 循环
初始化语句 while(条件判断语句){ //循环体语句; //条件控制语句; } -
do while 循环
// 初始化语句
do{
// 循环体语句;
// 条件控制语句;
}while(条件判断);
do while会先执行大括号内部命令一次再判断
- **死循环**
```java
while(true){
}
do{
}while(true);
for(;;){
}
-
循环的俩个关键字
- continue:结束本次循环,开启下次循环
- break:结束循环
五,数组
数组指的是一种容器,可以用来存储同种数据类型的多个值。
5.1 数组的定义
//数据类型[] 数组名
int[] array;
//数据类型 数组名[]
int array[]
数组的初始化:在内存中为数组容器开启空间,将数据存入容器的过程
完整格式
//数据类型[] 数组名=new 数据类型[]{值列表};,这个是数组的静态初始化
int[] array=new int[]{1,2,3,4};
//数据类型[] 数组名=new 数据类型[10],这个是数组的动态初始化
//这样是创建一个空数组,容量为10
int[] array=new int[10];
//数据类型[][] 数组名=new 数据类型[][]={{},{},{}};这种就是多维数组的创建
int[] arry={1,2,3};
数组名:是数组容器在内存中的地址值,可以打印出来
5.2数组元素访问
//数组名 [索引]
array[10];
//索引是数组的下标,用来对数组内元素的访问,其中索引从0开始,到n-1
在 java 中有一个方法求数组长度:数组名.length
六,方法
方法是程序中最小的执行单元,main 方法是程序运行的入口
方法可以提高代码的复用性,可维护性
重复的代码,具有独立功能的代码可以抽取到方法中
6.1方法的定义与调用
//把一些代码打包到一起,该过程成为方法的定义
public static 返回值的数据类型 方法名(形参列表){
方法体;
return 返回值(需要和方法返回值的数据类型一样);
}
//方法定义后需要手动调用,这个过程叫方法的调用
方法名(实参列表);
//形参:指的是方法中定义的参数
//实参:指的是方法调用中的参数
//方法调用时形参和实参必须一一对应,名字可以不一样数据类型必须一一对应。
注意:
- 方法和方法间是平级的,不能相互嵌套定义
- 方法的编写顺序和执行顺序无关
- 方法返回值类型void表示方法没有返回值,可以不写return
- retrun下面不能写代码,因为执行不到,属于无效代码(try-catch-finally除外)
6.2 方法的重载
方法定义过程中,形参不同会构成不同的方法,这个就是方法的重载关系
//顺序不同虽然也可以构成重载但是不建议
public static int sum(int a,int b){
}
public static int sum(int a,int b ,int c){
}
基本数据类型与引用数据类型的区别
- 基本数据类型:变量内存储的是真实的数据
- 引用数据类型:只要是new出来的都是引用数据类型,因为此时变量存储的是其他空间的地址值
方法的值传递
- 传递基本数据类型时,传递的是真实的数据,形参改变不影响实际参数的值
- 传递引用数据类型时,传递的是地址值,形参的改变会影响到实参的值