一、遇到的问题
从python过来学习Java,在写一个小练习时遇到了一个问题。
小练习的题目如下:设计一个方法用于数组遍历,要求遍历的结果是在一行上的。例如:[11,22,33,44,55]
最开始写的代码是这样的
public class Main {
public static void main(String[] args) {
int[] array = {11,22,33,44,55};
search(array);
}
public static void search(int[] arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i != arr.length-1){
System.out.print(arr[i]+ ',' );
}else{
System.out.print(arr[i]);
}
}
System.out.println("]");
}
}
//运行结果为:[5566778855]
检查发现是下面这句代码的问题:
System.out.print(arr[i]+ ',' );
习惯了python的书写格式后对单引号和双引号就没有分得很细致,结果在Java中单引号表示一个char类型,双引号表示字符串类型 。其中逗号(,)的ASCII值为44。将该行代码中的单引号改为双引号之后,程序运行结果符合题目要求。
public class Main {
public static void main(String[] args) {
int[] array = {11,22,33,44,55};
search(array);
}
public static void search(int[] arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i != arr.length-1){
System.out.print(arr[i]+ ",");
}else{
System.out.print(arr[i]);
}
}
System.out.println("]");
}
}
//运行结果为:[11,22,33,44,55]
二、扩展研究
- char类型与字符串类型相加时,会自动变为字符串类型相加。
public class Main {
public static void main(String[] args) {
System.out.println('a'+"123"); //a123
System.out.println('b'+"hello"); //bhello
}
}
- char类型与常数类型相加时,会转换为ASCII值与常数相加。
public class Main {
public static void main(String[] args) {
System.out.println('a'+12); //109
System.out.println('a'+11.4); //108.4
}
}
以上是我的理解,希望大佬批评指正