Java学习(三)之变量
目录
一、int 和 string 之间的转换
1. int 转string
方法1:用 “+” 将两者相加
String str = "hello";
int num = 10;
String ret = str + num;
System.out.println(ret);
运行结果如下:
-
对于“+”的结果,由两侧操作数的类型所决定,即:若两侧都是数字,则会进行简单的四则运算;若有String,则会执行字符串拼接。
String str = "hello";
int num1 = 10;
int num2 = 20;
String ret1 = str + num1 + num2;
System.out.println(ret1);
String ret2 = str + (num1 + num2);
System.out.println(ret2);
运行结果如下:
方法2:String.valueof()
int num = 10;
String ret1 = String.valueOf(num);
String ret2 = "" + num;
System.out.println(ret1);
System.out.println(ret2);
//ret1 和 ret2 等价
运行结果如下:
2.string 转 int
使用Integer.parseInt()
String str = "100";
int num = Integer.parseInt(str);
System.out.println(num);
运行结果如下:
-
其中,Interger是包装类,包装类(Long,Short,Byte…)有内置类型和其一一对应。
-
parse:解析
-
String中的字符串必须是int类型,否则会在运行时出错
-
抛出异常,运行过程中出现。
-
Tips:编译 & 运行
-
编译:Javac Test.java => Test.class
-
运行:java Test => JVM 加载。class文件且执行
小结:其他类型和String之间的转换操作类似
//long 转 String
long num1 = 10;
String str1 = "num = ";
System.out.println(str1 + num1);
//String 转 long
String str2 = "100";
long num2 = Long.parseLong(str2);
System.out.println("str2 = " + num2);
运行结果如下:
二、打印输出
-
System.out.println(msg); // 输出一个字符串, 带换行
-
System.out.print(msg); // 输出一个字符串, 不带换行
-
System.out.printf(format, msg); // 格式化输出
-
System.out.format(format, msg); // 完全等同于 printf
三、运算符
1. 赋值运算符
“=”
2. 算数运算符
- “+” 加
- “-” 减
- “*” 乘
- “/” 除
- “%” 求余
Tips1:求余注意正负号:求余先不看符号,求完之后再添加符号
Tips2:C语言中%只能针对整数求余,不能对小数求余;Java中两者皆可。
Tips3:0不能做除数
3. 增量赋值运算符
**“+=”,“-=”,“*=”,“/=”,“%=”**
例如:
4. 自增/自减运算符
**++ / --**
-
前置++
-
后置++
-
Tips:前置++和后置++两者的区别主要在于取表达式的返回值,若不取返回值,效果一样。
-
不取返回值时:
-
取返回值时:前置++返回自增后的结果
前置++等价于伪代码
int(num) {
num += 1;
return num;
}
- 后置++返回自增前的结果
后置++等价于伪代码
int(num) {
int tmp = num;
num += 1;
return tmp;
}
小结:
-
编译器对前置++和后置++进行优化,二者实际执行时的效率几乎没有差异。
-
由于C++支持"运算符重载",被++的操作数可能四一个复杂的类,故编译器优化效率低,此时前置++效率高于后置++,而在Java中常用后置++。
-
类似于 int ret = (++a) + (++a) 这种代码的运算结果四未定义的。因为不同的编译器对其表达式的求值顺序是不同的。
5.关系运算符:
== != < > <= >=
-
Tips:java中,关系运算表达式返回值结果四一个boolean类型,无法与整数之间进行运算
四、逻辑运算符
&& || !
-
逻辑运算,操作数必须是 boolean 类型
-
返回值也是 boolean 类型
-
&&:一假则假
-
||:一真则真
-
Tips:对于 && 和 || 最大的实际应用是短路输出,即:
-
逻辑与左侧为假时,右侧不在求值;
-
逻辑或运算,左侧为真时,右侧不在求值。
-
对于大部分编程语言,都支持短路求值。
-
短路生效
-
逻辑取反(!)也只针对boolean类型
-
Tips: & 和 | 也表示逻辑与和逻辑或,但是不支持短路求值。常对整数用于按位与,按位或。
-
& 和 | 常对整数用于按位与,按位或。
-
& :与 0 则 0
-
| :与 1 则 1
五、位运算符
~ ^
-
!:逻辑取反,只针对boolean类型;即:true => false;false => true.
-
~ 是按位取反,针对整数;0 => 1; 1 => 0.
-
%x 表示按照十六进制输出
-
^ 异或操作符:对应bit位,相同为0,相异为1.
-
a ^ 0 = a;
-
a ^ b ^ b = a;
-
不使用临时变量交换两个数
- 上述两种方法可读性差,不适合在工作中使用。只是面试考试。
六、移位运算符
<< >> >>>
-
左移 << ,最左侧位丢失,最右侧补0;左移一位相当于 * 2.
-
算数右移:>> ,最右侧抛弃,最左侧补符号位;右移一位,相当于 / 2.
-
逻辑右移:>>> ,最右侧怕抛弃,最左侧补0.
七、条件运算符
cond ? exp1 : exp2
-
如果cond 为 true,返回exp1
-
如果cond 为false,返回exp2
-
条件运算符优先级比较低
八、注释
-
单行注释:// 注释内容(用的最多)
-
多行注释:/* 注释内容*/(因无法嵌套使用故不推荐)
-
文档注释: /** 文档注释 */ 主要用于搭配一些自动生成工具,生成代码的文档信息
九、思维导图
总结
- >运算符大部分和C语言中的类似,只需要平时注重练习即可。