运算符和表达式
(1)基本概念
运算符:用于标记对数据执行某种运算的特定符号 。
操作数:参加运算的数据称为运算对象(操作数)。
表达式:若干操作数(operand)和运算符(operator)按照约定规则构成的一个序列
(2)分类
按运算符的功能,将运算符分为:算术运算符、关系运算符、逻辑运算符、位运算符等
<1>算术运算符:
加运算符+:连接两个字符串。
取模运算符%:Java语言既可对整数取模,也可以对小数取模。
++(--)运算符的操作数必须是变量,不能是常量或表达式 。
按参与运算的操作数的个数,将运算符分为:单目运算符、双目运算符、三目运算符
关系运算符:
关系运算符用于判断两个操作数的等价性和大小关系,得到的结果为布尔类型,取值为true或false。
常用于逻辑判断(if语句或循环)。
逻辑运算符:
逻辑运算符可以对boolean类型数据进行逻辑上的“与”、“或”、“非”、“异或”等运算,结果仍为boolean类型,
通常用于程序的流程控制。逻辑运算符 &(&&)、|(||)、!
注意:运算符(&、|)和运算符(&&、||)的区别。
利用&、|作运算时,运算符左右两边的表达式都会被执行,最后两表达式的结果再进行与、或运算;
而利用&&、||作逻辑运算时,如果只计算运算符左边的表达式即可确定与、或的结果,则右边的表达式将不会执行。
位运算符:
位运算符用来对整型(byte、short、int、long)或字符型(char)数据二进制位进行操作,结果为一个整数。
~(按位取反)
格式: ~a
功能:将操作数a中的二进制位由1变0,由0变1。
&(按位相与)
格式:a & b
功能:两个操作数的相应位都为1,则该位为1,否则为0。
|(按位相或)
格式:a | b
功能:两个操作数的相应位中有一个为1,则该位的结果为1。
^(按位相异或)
格式:a ^ b
功能:两个操作数的相应位相异,则该位的结果为1,否则为0
>>(按位右移)
格式:a >> b
功能:将a右移b位,右端的低位被舍弃,左端高位补原来的符号位 。
<<(按位左移)
格式:a << b
功能:将a左移b位,右端的低位补0,左端的高位被舍弃。
>>>(无符号右移)
格式:a >>> b
功能:将a右移b位,右端的低位被舍弃,左端的高位补0。
<2>赋值运算符
格式:变量=表达式
<3>复合的赋值运算符 += -= *= /= %= &= |= ^= >>= <<= >>>=
<4>条件运算符
格式:表达式1 ? 表达式2 :表达式3
需注意: 表达式1应是boolean类型的表达式;表达式2和表达式3的类型要一致。
(3)表达式
表达式(expression)是由若干操作数(operand)和运算符(operator)按照约定规则构成的一个序列。
<1>表达式中的数据类型转换
自动类型转换:
当不同类型的常量和变量在表达式中混合使用时,它们最终将被转换为同一类型,然后进行运算。为了保证精度,
转换从表示数的范围较小的数据类型到表示数的范围较大的数据类型。
(byte或short)和int?int
(byte或short或int)和long?long
(byte或short或int或long)和float?float
(byte或short或int或long或float)和double?double
char和int?int
强制类型转换:
格式:(目标数据类型)变量或表达式
注意:强制类型转换时,由于目标数据类型的取值范围小于待转换数据类型的取值范围,在转换过程中会出
现截断,导致高位数据丢失或精度下降。
流程控制
(1)三种基本的流程控制结构
<1>顺序结构
<2>分支结构:if-else语句、switch语句
<3>循环结构:while语句、do-while语句、for语句、break语句、continue语句、return语句
break语句:
格式:break;或break标号;
功能:带标号的break语句从多重循环体的内部跳出到标号所标志的那层循环,并从标号标志的那层循环后面的语句继续执行。
continue语句:
格式:continue;或continue 标号;
功能:带标号的continue语句可从多重循环的内层循环跳到外层循环,执行标号所标识的循环的下一轮。
return语句:
return关键字并不是专门用于跳出循环的,而是结束一个方法。一旦在循环体内执行到一个return语句,
该方法将会结束,循环自然也随之结束。
标准输入/输出
(1)相关概念:
用户在程序运行过程中从外界传递数据到程序中(此为输入数据),并将处理结果传递到程序外部,
如显示到屏幕上或写出到文件中(此为输出数据)。
什么是控制台:
“控制台”(Console)就是由操作系统提供的一个字符界面窗口,用于实现系统与用户的交互——接收用户
输入的数据并显示输出结果。
在控制台中运行的程序被称为控制台应用程序 ,也称字符界面应用程序。
(2)读取控制台输入:
java.util.Scanner类的功能并不仅限于控制台输入数据的读取,它的对象还可以关联到字符串、文件或其他的数据源
Scanner sc=new Scanner(System.in);
public Sting next():读取下一个单词,以空格符或换行符作为分隔单词的标记。
public int nextInt():读取一个整数,如果输入的下一个单词不能解析为有效的整数(例如包含汉字等非数值字符),则出错。
public double nextDouble():读取一个双精度浮点数,如果输入的下一个单词不能解析为有效的浮点数,则出错。
public Boolean nextBoolean():读取一个布尔值,如果输入的下一个单词不能解析为有效的boolean值(true或false),则出错。