网站制作有哪些企业,新公司名字大全参考,专业做网站建设制作服务,上海网站推广 优帮云起因是今天在刷下面这个力扣题时的一个报错
541. 反转字符串 II - 力扣#xff08;LeetCode#xff09; 这个题目本身是比较简单的#xff0c;所以就不讲具体思路了。问题出在最后方法的返回值处#xff0c;要将字符数组转化为字符串#xff0c;第一次写的时候也没思考直…起因是今天在刷下面这个力扣题时的一个报错
541. 反转字符串 II - 力扣LeetCode 这个题目本身是比较简单的所以就不讲具体思路了。问题出在最后方法的返回值处要将字符数组转化为字符串第一次写的时候也没思考直接就是return charArray.toString()
class Solution {public String reverseStr(String s, int k) {int lens.length();char[] charArray s.toCharArray();for (int i 0; i s.length()-1; i2*k) {int starti;//这里是判断尾数够不够k个来取决end指针的位置int endMath.min(charArray.length-1,startk-1);while (startend){char tempcharArray[start];charArray[start]charArray[end];charArray[end]temp;start;end--;}}return charArray.toString()
}
}
然后就出现了以下报错 发现输出竟然是一坨看不懂的东西
后面思考了一下原因如下 toString()是顶级父类object中的方法数组类中并没有对此方法重写(override)仅仅是重载(overload)为类的静态方法。所以数组直接使用toString()会去调用object类里面的toString方法结果是[类型哈希值]。 于是后面我又用了return Arrays.toString(charArray)还是不行。
class Solution {public String reverseStr(String s, int k) {int lens.length();char[] charArray s.toCharArray();for (int i 0; i s.length()-1; i2*k) {int starti;//这里是判断尾数够不够k个来取决end指针的位置int endMath.min(charArray.length-1,startk-1);while (startend){char tempcharArray[start];charArray[start]charArray[end];charArray[end]temp;start;end--;}}return Arrays.toString(charArray);}
} 原来Arrays.toString(charArray)得到的字符串输出是有格式的而题目要求直接输出字符串。
最后用的是return new String(charArray);终于是通过了。
class Solution {public String reverseStr(String s, int k) {int lens.length();char[] charArray s.toCharArray();for (int i 0; i s.length()-1; i2*k) {int starti;//这里是判断尾数够不够k个来取决end指针的位置int endMath.min(charArray.length-1,startk-1);while (startend){char tempcharArray[start];charArray[start]charArray[end];charArray[end]temp;start;end--;}}return new String(charArray);}
} 通过这次刷题我也发现了我对Java 数组和字符串的转换这方面非常不熟悉于是就总结了一下这方面的内容
java数组-字符串 java中所有的类不管是java库里面的类或者是你自己创建的类全部是从object这个类继承的。object里有一个方法就是toString()那么所有的类创建的时候都有一个toString的方法。这个方法是干什么的呢
首先我们得了解java输出用的函数print();是不接受对象直接输出的只接受字符串或者数字之类的输出。
Object类中的toString()方法的源代码如下 /*** Returns a string representation of the object. In general, the* {code toString} method returns a string that* textually represents this object. The result should* be a concise but informative representation that is easy for a* person to read.* It is recommended that all subclasses override this method.* p* The {code toString} method for class {code Object}* returns a string consisting of the name of the class of which the* object is an instance, the at-sign character {code }, and* the unsigned hexadecimal representation of the hash code of the* object. In other words, this method returns a string equal to the* value of:* blockquote* pre* getClass().getName() Integer.toHexString(hashCode())* /pre/blockquote** return a string representation of the object.*/public String toString() {return getClass().getName() Integer.toHexString(hashCode());} char[] data {a, b, c};
System.out.println(data.toString()); //输出结果为[C79fc7299 输出会去调用object类里面的toString 方法根据源码可知输出结果为[类型哈希值]。 而数组类中并没有对此方法重写(override)仅仅是重载(overload)为类的静态方法参见java.util.Arrays。
所以数组直接使用toString()会去调用object类里面的toString方法结果是[类型哈希值]。
数组转字符串可以使用Arrays类中的toString方法Arrays.toString(data)。附上Arrays类的toString方法源码。但是由源码可知这种方法的toString()是带格式的也就是说输出的是[a, b, c]。 /*** Returns a string representation of the contents of the specified array.* The string representation consists of a list of the arrays elements,* enclosed in square brackets (tt[]/tt). Adjacent elements are* separated by the characters tt, /tt (a comma followed by a* space). Elements are converted to strings as by* ttString.valueOf(char)/tt. Returns ttnull/tt if tta/tt* is ttnull/tt.** param a the array whose string representation to return* return a string representation of tta/tt* since 1.5*/public static String toString(char[] a) {if (a null)return null;int iMax a.length - 1;if (iMax -1)return [];StringBuilder b new StringBuilder();b.append([);for (int i 0; ; i) {b.append(a[i]);if (i iMax)return b.append(]).toString();b.append(, );}} 如果仅仅想输出abc则需用以下两种方法 直接在构造String时转换。 char[] data {a, b, c};String str new String(data); 调用String类的方法转换。 String.valueOf(data) String类valueOf方法的源码如下由源码可知valueOf实际也是new String对象和方法1一样。
/*** Returns the string representation of the codechar/code array* argument. The contents of the character array are copied; subsequent* modification of the character array does not affect the newly* created string.** param data a codechar/code array.* return a newly allocated string representing the same sequence of* characters contained in the character array argument.*/public static String valueOf(char data[]) {return new String(data);} java字符串-数组
toCharArray() 方法
示例如下
String str Hello, world!;
char[] charArray str.toCharArray();
System.out.println(Arrays.toString(charArray));