Java基础语法(变量到方法)
一、变量
- 什么是变量?
指代内存中一块物理空间
[外链图片转存失败(img-pHcn9EEu-1563249007392)(file:///C:\Users\zYu\AppData\Local\Temp\ksohtml13848\wps1.jpg)]
- 变量的声明
-
数据类型 变量名;
-
例如:int a;
- 注意:未经声明的变量不能使用
- 变量的命名(标识符命名规则)
-
名称由英文字母,数字,下划线(_)和美元符($)组成,并且数字不能用于开头
-
可以使用中文但是不建议使用(不要用)
-
Java关键字不能使用(变粗的)
建议(要遵循):
-
驼峰命名法(骆驼法则):名称由多个单词组成,则第一个单词全小写,后面的组成单词的首字母大写(类名的各个单词首字母都要大写)
-
见名知意:命名要根据意义而定
- 变量的初始化(第一次赋值)
-
使用”=”
-
赋的值要跟类型匹配
- 注意:未经初始化的变量不能使用
- 变量的访问
- 对变量的使用(操作),实际上就是对该变量中存储的值进行使用(操作)
二、八大基本类型
- 整型 0000 0000
-
byte:1字节,8位 -27~27-1
-
short: 2字节,16位 -215~215-1
-
int:4字节,32位 -231~231-1 -2147483648 2147483647
-
long:8字节,64位 -263~263-1
- 在定义时需要以l/L进行结尾
- 浮点型
-
float:单精度
- 在定义时需要使用f/F进行结尾
-
double:双精度
- 布尔型
-
boolean:只有两个值true,false
-
常用作条件
- 字符型
-
char:可以存储任何单个字符,使用’’进行标记
-
它的存储本质上是一个65535以内的正整数
- 溢出
-
当值超出了该变量类型的范围时会发生溢出
-
byte b=(byte)128;//-127
- 精度缺失
- 就像十进制无法精确的表示1/3的结果一样(0.33333…),二进制也无法精确的表示某些小数,例如(0.1)就会出现精度缺失
- 类型转换
-
自动类型转换(隐式转换):当把类型容量较小的变量/数值赋值给容量较大的变量时会进行自动类型转换
-
强制类型转换:大到小转换时要进行强制类型转换
-
语法:数据类型a 变量=(数据类型a)值;
byte->short->int->long->float->double char->
-
三、运算符
- 算术运算符:+、-、 *、 /、 %、 ++、 –
-
/:在整数运算时,是取整
-
%:取余
-
++(–):放在变量前面,先自增(自减)再运算,放在后面,先运算,再自增(自减)
-
关系运算符:>、<、>=、<=、!=、==
-
逻辑运算符:&& ||
-
&&(||):短路与(或),当在运算过程中已经能得到运算的最终结果时,后面的运算就不再进行了
-
&(|):逻辑与(或),无论如何都会全部运行完
- 条件(三目)运算符: (布尔表达式)?(表达式1):(表达2)
-
先判断布尔表达式的值,如果是true,则选择表达式1,false则选择表达2
-
举例:true?false:true–>结果是false
四、分支结构
- if语法
-
if(条件){…}
-
if(条件){…}else{…}
-
if(条件1){…}else if(条件2){…}…else{…}
- switch语法
-
switch(值){case v1:break;case v2:break;…default:}
-
值:int类型的值(自动转换为int值的也可以)或者是枚举类型(String…)
-
case中的break退出switch语句,如果没有break,则会依次向下执行。
五、循环结构
- while
-
while(条件){…}
-
当…时,执行…
-
循环有可能一次都不执行
- do…while
-
do{…}while(条件);
-
执行…直到…为止
-
至少执行一次
- for
-
for(表达式1;条件;表达式2)
-
表达式1是循环变量的定义:int i=0
-
条件就是布尔表达式,循环条件:i<…
-
表达式2做循环变量的改变:i++
-
for常用作固定次数的循环
六、数组
- 什么是数组?
相同类型的数据的集合,最简单一种数据结构–线性结构
- 数组的声明
-
数据类型 [] 变量名(数组名);
-
数据类型 变量名[];//不常用
-
举例:int [] arr;
- 数组的赋值
-
arr=new int[length];
-
arr=new int[]{元素1,元素2};
-
在定义时直接赋值:int [] arr={元素1,元素2};
- 数组的访问
-
通过length属性访问它的长度
-
通过下标访问它的每一个元素
- 数组的遍历
- 使用for循环遍历数组
- 数组的复制
-
System.arraycopy(arr,index,mbarr,mbindex,length);
- 从arr数组的index位置复制到mbarr数组的mbindex位置,复制length个长度
-
Arrays.copyOf(arr,length)
-
把arr数组重新改变长度为length个长度–数组的扩容
-
实际上是新建了一个length长度的数组,把数组的内容复制到新数组上,然后返回该数组
-
- 数组的排序
-
冒泡排序,快速排序,插入排序
-
需要掌握的:冒泡排序
- 每一次都循环对比相邻的两个数,如果违法最终的排序规则则交换位置,依次比较剩下的数
-
Arrays.sort(arr)
七、方法(函数)
- 什么是方法?
封装了一段特定逻辑的功能
-
语法:修饰词 返回值类型 方法名(参数列表){方法体}
-
组成部分
-
修饰词:暂时都使用public static(面向对象阶段再解释)
-
返回值类型:方法可以使用return来返回一个具体的值,此处就指定返回值的类型;如果没有返回值就使用void,如果使用了return就代表方法的结束。
-
方法名:满足标识符命名规则,自定义的
-
参数列表:定义方式跟变量声明的方式是一样的。可以根据需求来指定,可以无参,可以有参
-
方法体:方法的逻辑主体
方法不能重复定义(方法名和参数列表,参数列表的对比是根据类型,个数和顺序来对比的)
- 方法的调用
-
方法名(参数列表);
方法的调用是根据方法名和参数列表来绑定的,方法的参数列表就是(类型,个数,顺序)
- 方法的递归(扩展)
-
在方法内部调用自己本身