一、数据类型
Java是一门强类型语言,每个变量都需要指定数据类型。Java数据类型分为(1)基本数据类型和(2)引用数据类型。如图。
(1)基本数据类型:
基本数据类型除了字符型和布尔型之外,其余6个都是表示数字的,统称为“数值型”。每种基本数据类型在内存中的存储方式和占用空间都不同,数据类型占用空间如图。
注意:在基本数据类型中,除了boolean类型所占长度与平台有关以外,其他数据类型长度都与平台无关。
二、运算符
1.算术运算符:
算术运算符是Java中最简单、最常用的运算符,它主要提供了数值的加、减、乘、除以及求余运算的功能。分为一元运算符和二元运算符。
⑴一元运算符
①X++:自增运算符,先返回X的值,再将X+1
②++X:自增运算符,先将X+1,再返回X的值
③X--:自减运算符,先返回X的值,再将X-1
④--X:自减运算符,先将X-1,再返回X的值
⑵二元运算符
①+:可以进行加法运算,也可以进行字符串的拼接
②-:减法运算
③*:乘法运算
④/:除法运算(需要注意整数之间除法运算的结果依然是整数)
⑤%:取模运算,即求余数(例如-11%2,结果是-1。也就是说符号取决于%前面的数字)
2.赋值运算符:
除赋值运算符之外,Java还将赋值运算符与算术运算符进行了合并,提供了更简洁的扩展赋值运算符。
⑴赋值运算符:
①=:将右边的值赋值给左边的变量,如num=5
②+=:如num+=5,相当于num=num+5
③-=:如num-=5,相当于num=num-5
⑵扩展赋值运算符
①*=:如num*=5,相当于num=num*5
②/=:如num/=5,相当于num=num/5
③%=:如num%=5,相当于num=num%5
注意:Java中两个数相等用的是==符号,而=是赋值运算符。
3.关系运算符:
当需要比较两个数值的大小时,可以使用关系运算符。关系运算符也称作比较运算符,运算结果为布尔类型。
①>:大于
②<:小于
③==:等于(注意,一个=是赋值运算符)
④>=:大于或等于
⑤<=:小于或等于
⑥!=:不等于
4.逻辑运算符:
逻辑运算符用于连接多个布尔值,一般与比较运算符一起使用,表示与、或、非的关。
⑴逻辑运算符:
① & :与运算。当两边表达式都为真时,结果为真,否则结果为假
② | :或运算。当两边表达式结果都为假时,结果为假,否则结果为真
③ ^ :异或运算。当两边表达式结果不同时,结果为真,否则为假
④ ! :非运算。如果表达式结果为真,那么计算结果为假,反之亦然(例如!a,结果正好与a相反)
⑵短路逻辑运算符:
⑤&& :短路与运算。计算结果与&运算符一致,但当一个表达式为假时,后面的表达式就不再运算。
⑥ || :短路或运算。计算结果与|运算符一致,但当一个表达式为真时,后面的表达式就不再运算。
注意:逻辑运算符与短路逻辑运算符的区别在于:
逻辑运算符:全部走一遍再判断
短路逻辑运算符:一旦符合条件,后面的判断就不再走
5.位运算符:
位运算是直接对二进制进行的计算,性能极高。
① << :将二进制位左移指定数位。移动n位就相当于*2的n次方。
② >> :将二进制位右移指定数位。移动n位就相当于/2的n次方。
③ >>> :无符号右移,结果会连同二进制最高位的符号位也移动。
④ & :与运算,类似逻辑运算符。参与运算的两个数字位都为1,结果才为1,否则结果为0。
⑤ | :或运算,类似于逻辑运算符。参与运算的两个数字位都为0,结果才为0,否则结果为1。
⑥ ^ :异或运算,类似于逻辑运算符。若参与运算的两个数字位不相同则结果为1,若参与运算的两个数字位相同,则结果为0。
⑦ ~ :按位取反运算。二进制数中的每一位如果为0就变成1,如果为1就变成0。
6.三元运算符:
三元运算符又称三目运算符,是连接三个表达式的运算符。
语法格式:
条件表达式?表达式1:表达式2;
当条件表达式为真时,执行表达式1,否则执行表达式2。
7.运算符的优先级:
三、选择结构
选择结构是当给定判断条件时,根据条件来判断是否满足某些条件,如果满足,实行提前规定好的一段代码,反之,执行另一代码的一种结构体。
1.if语句:
是选择结构的代表,通过if语句能够实现各种各样的逻辑判断。
⑴语法格式:
if(条件表达式1)
{
代码1
}
else if(条件表达式2)
{
代码2
}
else(条件表达式3)
{
代码n
}
⑵解释:程序执行到if语句后会进行判断:当条件表达式1为真时,执行代码1。否则当条件表达式2为真时,执行代码2。否则当条件表达式3为真时,执行代码3,否则执行代码n。
其中一个if语句之后可以有零至多个else if语句,可以有零或一个else语句。
⑶注意:①如果if选择结构只需执行一条语句,那么可以省略{},为了提高代码的易读性建议不省略{}。
②{}中的代码语句也称为代码块,在代码块定义的常量或变量的作用域仅限于代码块中,在代码块之外不能使用。
2.switch语句:
除了if语句外,switch语句也是选择结构。switch语句一般用于做一些精确值的判断。
⑴语法格式:
switch(变量)
{
case 值1:
代码1;
break;
case 值2:
代码2;
break;
case 值3:
代码3;
break;
…
default:
代码n;
break;
}
⑵解释: switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者switch语句的末尾.如果case全都不匹配,则进入default语句。
⑶注意: switch语句判断的变量中类型只能是 byte、short、int、char、string和枚举,因此它的适用范围较窄,但对于精准值的判断,switch依然是非常方便的。
四、循环结构
循环结构是Java的三大结构之一,它可以在满足某些条件下一直执行某一段程序,从而简化代码。
1.for语句:
⑴语法格式:
for(循环初始化表达式;循环条件表达式;循环后的操作表达式)
{
循环体
}
⑵解释:首先执行一次循环初始化表达式,接着判断循环条件表达式,如果为假,则结束循环。如果为真,则执行循环体之后执行循环后的操作表达式,重复以上操作直到条件表达式的值为假为止。
2.while语句:
⑴语法格式:
while(条件表达式)
{
循环体
}
⑵解释: while语句的执行规则很简单,只要条件表达式的值为真就会执行循环体,直到条件表达式的值为假时才退出循环。while循环一般用于不确定循环次数的场景。
3.do…while语句
不管for循环还是while循环,都会在循环之前判断循环条件,如果条件刚开始就为假,那么循环体就不会被执行。
⑴语法格式:
do
{
循环体
}
while(条件表达式);注意有;
⑵解释:首先执行循环体之后再判断条件表达式,如果结果为真就重复上述步骤,直到条件表达式的值为假为止。
4.continue和break语句:
在任何循环语句的主体部分均可用break控制循环的流程,break用于强行退出循环,不执行循环中剩余的语句。而continue则只能终止某次循环,继续下一次循环。
五、数组
1.数组概述:
数组就是一种能够存放相同数据类型的有序集合,或者说它是一个存储数据的容器,可以创建出一个指定长度的数组。这样就可以存储对应条数的数据了。
2.创建数组的方式:
⑴方法一:创建出指定长度的数组,数组有多长,就能存储多少数据。
数据类型[] 数组名=new 数据类型[数组长度];
int[] a=new int[3];
⑵方法二:创建数组的同时向数组中存储数据。此时不需要指定数组长度有多少元素,则数组就多长。
数据类型[] 数组名=new 数据类型[]{元素1,元素2,……}
int[] a=new int[]{1,2,3}
⑶方法三:方式二的简写方式。
数据类型[] 数组名={元素1,元素2,……}
int[] a={1,2,3}
3.数组的常见操作:
⑴通过索引操作元素
注意:通过索引操作数组元素时一定要注意索引不能超出数组下标范围。
⑵数组的遍历
当数组元素很多时,不可能一个一个使用索引获取元素,而是希望能够通过循环的方式取出数组中的每一个元素。这个操作称作遍历。
①for循环遍历
例子
②foreach循环遍历
用于指想获取数组中的每一个元素,并不需要给数组元素赋值,也不需要操作索引。用foreach循环这种方式更简便。
语法格式:
for(数据类型 变量 : 数组)
{
system.out .println(变量);
}
注意:其中数据类型需要与数组的数据类型一致。
3.获取数组的最值:
4.通过值获取索引:
5.数组元素的反转:
(先到这儿吧,遭不住咯)