数据类型与运算符
int 和 String 之间的相互转换
Int转为String
1、最简单的方法是使用“+”操作,对于"+"具体的行为和两侧操作数类型有关,两侧操作数都是数字这是简单的相加;两侧有String类型则是拼接。
代码示例:
int num = 10;
String str1 = num + "";
得到的结果为:str1=10
2、使用方法
代码示例:
String str2 = String.valueOf(num);
得到结果为:str2=10
这里valueOf是一个方法,从属于String类
总结数据类型和包装类:
String转为Int
使用包装类的所属方法,如:
代码示例:
String str = "100";
int num = Integer.parseInt(str);
得到的结果为num=100;
这里parseInt为Integer包装类的一个所属方法。
要说明的是,在String转为int的时候,String类型的值也应为数字,否则格式不一样,在运行时会发生抛出异常。
打印输出
Java打印输出类似于c语言,基本语法如下:
System.out.println(msg); // 输出一个字符串, 带换行
System.out.print(msg); // 输出一个字符串, 不带换行
System.out.printf(format, msg); // 格式化输出
System.out.format(format, msg); // 完全等同于 printf
赋值语句
“=”
int a = 10;
a = 20;
算数运算符
基本四则“+ - * /”和求余运算符“%”
1)int / int结果还是int,需要使用double来计算
2)0不能作为除数
3)%表示取余,且负数求余是负数,c语言的“%”只能针对整数求余,不能是小数,而Java求余也能是小数
增量运算符+= -= *= /= %=
自增/自减运算符++ –
前置++和后置++的主要区别在于表达式的返回值,如果不取返回值,则两者是等价的效果。
如果取表达式返回值,则前置++自增的返回值是自增之后的值,后置++自增的返回值是自增之前的值。
在表达式中针对一个变量的值进行多次修改,运行的结果是未定义行为,如:
int ret=(++a)+(++a)
关系运算符
关系运算符主要有六个:
== != < > <= >=
int a = 10;
int b = 20;
System.out.println(a == b);
System.out.println(a != b);
System.out.println(a < b);
System.out.println(a > b);
System.out.println(a <= b);
System.out.println(a >= b);
关系运算符的返回值类型都是boolean类型
逻辑运算符(重点)
逻辑运算符主要有三个:
&& || !
注意: 逻辑运算符的操作数(操作数往往是关系运算符的结果)和返回值都是 boolean.
1)逻辑与&&
规则:两个操作数都为true,结果为true,否则结果为false
对于逻辑与来说,如果序左侧表达式为false,右侧表达式不再求值
2)逻辑或||
规则:两个操作数结构都为false,结果为false,否则为true。
对于逻辑或来说,如果左侧表达式为true,右侧表达式不再求值
3)逻辑非!
规则:操作数的结果为true,结果为false,操作数的结果为false,结果为true(!为单目运算符,只有一个操作数)
&和|(不推荐使用)
&和|操作数为Boolean类型时,也表示逻辑运算,但是与&&和||相比,它们不支持短路求值,程序可能会出现抛出异常。
位运算符
Java中最小的操作数我二进制不是字节
位运算符主要有四个:&(按位与) |(按位或) ~(按位取反)^(按位异或)。
位操作表示按二进制运算。计算机都是用二进制来表示数据的,按位运算就是按照二进制的每一位一次进行计算。
1)按位与&
如果两个二进制位都是1,则结果为1,否则结果为0.
按位运算需要先把操作数转化为二进制。
2)按位或 |
如果两个数的结果为0则结果为0,否则结果为1.
注:当&和|的操作数为整数(int short long byte)时,表示按位运算,当操作数为Boolean类型时,表示逻辑运算。
3)按位取反~
如果该位为0,则转为1,如果该位为1,则转为0
位移运算
位移运算符有三个:<< >> >>>
都是按照二进制来运算
-
左移<<:最左侧不要了,最右侧补0.
-
右移>>:最右侧不要了,最左侧补符号位(正数补0,负数补1)
3)无符号右移>>>:最右侧不要了,最左侧补0.
注意:
- 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
- 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
- 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代
替. - 移动负数位或者移位位数过大都没有意义
条件运算符
条件运算符只有一个:
表达式1 ? 表达式2 : 表达式3
当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值; 当 表达式1 的值为 false 时, 整个表达式的
值为 表达式3 的值.
也是 Java 中唯一的一个 三目运算符, 是条件判断语句的简化写法
// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;
总结:1. % 操作在 Java 中也能针对 double 来计算.
2. 需要区分清楚 前置自增 和 后置自增之间的区别.
3. 由于 Java 是强类型语言, 因此对于类型检查较严格, 因此像 && 之类的运算操作数必须是 boolean.
4. 要区分清楚 & 和 | 什么时候是表示按位运算, 什么时候表示逻辑运算.
整体来看, Java 的运算符的基本规则和 C 语言基本一致.