System.out.println(msg);
输出一个字符串, 带换行(\n)。
System.out.print(msg);
输出一个字符串, 不带换行(\n)。
System.out.printf(format, msg);
格式化输出。
注:print要想换行:+ "\n"
在遇到第一个字符/字符串之前,所有的数遇到加号即相加。
当遇到任意字符后,加号就变成了字符/字符串的拼接。
代码示例如下:
import java.util.*;
public class A {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = 3;
String ch = sc.nextLine();
System.out.println(2 + 3 + "K" + 4 + 5);//可以用加号不能用减号
System.out.println(2 + 3 + "" + 4 * 5);//*,/,%不会变成拼接,因为根据java运算符的的运算顺序来推得
System.out.println(2 + 3 + "" + 4 / 5);
System.out.println(2 + 3 + "" + 4 % 5);
System.out.println(2 + 3 + "" + (6 % 5));//*,/,%运算加括号和不加括号都一样
System.out.println(2 + 3 + "" + (4 + 5));//"+","-"加括号就不一样了先计算括号里面的然后再按步计算
System.out.println(ch + 2 + 3 + "" + 4);//字符串变量也要遵守规律
}
}
输入:
asd
输出:
5K45
520
50
54
51
59
asd234
解释:
第一个输出2+3+“K”
从左到右先计算2+3,结果为5是int类型,这里的"+"号是计算符号,而后“+”号是当字符串连接符号处理,所以最后int的5和string类型的“K”连接后生成新的string,“5K”
最后一个输出ch+2+3+“”+4
也是从左到右计算,因为ch是字符串变量,而后跟“+”号是当字符串连接符号处理,所以是“asd234”
其后的“+”号都当成了字符串连接符号总之,当“+”号前后有字符串出现时,就当做字符串连接符号处理了。`
补充:
1.当静态初始化字符串数组或字符串时,也有上述情况。
案例如下:
String sname = "学生" + 1 + 2;//"+"号被当作字符串连接符号处理
String sname = "学生" + (1 + 2);//先计算括号内的,即还没遇到第一个字符或字符串,“+”号还是运算符号。
//一维字符串数组
String[] a = {"xue" + 1,"xue" + 2 + 3};
for (int i = 0;i < 2;i ++)
System.out.println(a[i]);
String[] b = {"xue" + 1,"xue" + (2 + 3)};
for (int i = 0;i < 2;i ++)
System.out.println(b[i]);
输出:
学生12
学生3
xue1
xue23
xue1
xue5
2.当是char类型时,计算机语言使用ascii。
char a = 'A';//定义了一个字符'A',其ascii值是65
System.out.println(a + a);
System.out.println(a + "" + a);
System.out.println(a + ' ' + a);//''单引号为char类型字符,其中不能空,所以我在这里用了空格(ascii=32);""双引号为字符串,可以为空
System.out.println(a + "李" + a);
输出:
130
AA
162
a李a
说白了,就是考虑java中运算符的优先级。
倘若没有圆括号加以约束,那么对于数值变量来说,几种运算符的优先级顺序依次为:正号、负号 > 乘号、除号、取余号 > 加号、减号 > 大于号、等号、小于号、不等号 > 各种赋值符号;对于布尔变量来说,相关运算符的优先级顺序依次为:逻辑非 > 等号、不等号 > 逻辑与、或、异或 > 各种赋值符号。
了解更多
java中运算符优先级的图表(直达车)