在Java中找不到字符串的结束字符
尝试在不使用length方法的情况下查找字符串的长度…使用“charAt()”函数..请告知字符串的最后一个字符是什么..尝试使用“and null”和“\0”..但仍然无法找到结束字符在Java中找不到字符串的结束字符,java,string,character,Java,String,Character,尝试在不使用length方法的情况下查找字符串的长度…使用“charAt()”函数..请告知字符串的最后一个字符是什么..尝试使用“and null”和“\0”..但仍然无法找到结束字符 str=”test this string”; int i=0; char p=str.charAt(i);//’\u00A00′; while(p!=’\0’){ p=str.charAt(i);++i; } System.out.println("Length of string :
str=”test this string”;
int i=0;
char p=str.charAt(i);//’\u00A00′;
while(p!=’\0’){
p=str.charAt(i);++i;
}
System.out.println("Length of string : "+str+" is "+i);
在字符串的某些(通常是C)实现中,字符串的“长度”是通过哨兵字符跟踪的,通常是:'\0'。合同是:
- 字符串中不能包含实际字符“\0”
- “\0”字符是终止符;它本身不是字符串的一部分,表示结束
many bytes ... 0x00 0x00 0x00 0x05 0x48 0x65 0x6C 0x6C 0x6F ... many more bytes
然后,给定指向第一个0x00的指针,代码可以计算出这是“Hello”
。您有一种假设的存储字符串的方法,这种方法非常有效。但是,扫描“结束0x00”是行不通的,因为这种存储字符串的特殊方式没有这种功能
以上内容接近java的工作原理。然而,更复杂的是,java就是javajava不做指针。不可能获取指向该长度字段的内存指针
结论:你想做什么?不可能。找不到\0
,并且无法读取包含长度的内存。它被抽象掉了;如果需要长度,可以调用stringInstance.length()
。故事结束了
当然,有一些创造性的、愚蠢的、完全是学术性的方法可以做到这一点。例如:
public int getStringLengthInAStupidWay(String in) {
int i = -1;
try {
while (true) input.charAt(++i);
} catch (IndexOutOfBoundsException inevitable) {}
return i;
}
你甚至可以用一些奇特的数学来做O(logn)。不过,我完全不知道这可能有什么意义。在一些(通常是C)字符串实现中,字符串的“长度”是通过哨兵字符跟踪的,通常是:“\0”。合同是:
- 字符串中不能包含实际字符“\0”
- “\0”字符是终止符;它本身不是字符串的一部分,表示结束
many bytes ... 0x00 0x00 0x00 0x05 0x48 0x65 0x6C 0x6C 0x6F ... many more bytes
然后,给定指向第一个0x00的指针,代码可以计算出这是“Hello”
。您有一种假设的存储字符串的方法,这种方法非常有效。但是,扫描“结束0x00”是行不通的,因为这种存储字符串的特殊方式没有这种功能
以上内容接近java的工作原理。然而,更复杂的是,java就是javajava不做指针。不可能获取指向该长度字段的内存指针
结论:你想做什么?不可能。找不到\0
,并且无法读取包含长度的内存。它被抽象掉了;如果需要长度,可以调用stringInstance.length()
。故事结束了
当然,有一些创造性的、愚蠢的、完全是学术性的方法可以做到这一点。例如:
public int getStringLengthInAStupidWay(String in) {
int i = -1;
try {
while (true) input.charAt(++i);
} catch (IndexOutOfBoundsException inevitable) {}
return i;
}
你甚至可以用一些奇特的数学来做O(logn)。不过,我完全不知道这有什么可能。你为什么要这样做?应该使用
length
方法查找字符串的长度。java中的字符串不是C字符串。它们不是以null结尾的字符序列。字符串长度定义字符串的长度。Java不是C,也不应该是。我假设您是一名c程序员,并且正在尝试将您的小村庄的规则应用于Java。请不要那样做。Java和C,尽管表面上有相似之处,但却是非常不同的村庄。我这样做是因为这是面试问题之一。。。我发现我们不用“length”方法就可以找到字符串的长度…使用lastIndexOf和toCharArray方法。。。所以我只是想知道我们是否也可以使用CharAt来完成这项工作……想知道如何获取字符串的结尾字符为什么要这样做?应该使用length
方法查找字符串的长度。java中的字符串不是C字符串。它们不是以null结尾的字符序列。字符串长度定义字符串的长度。Java不是C,也不应该是。我假设您是一名c程序员,并且正在尝试将您的小村庄的规则应用于Java。请不要那样做。Java和C,尽管表面上有相似之处,但却是非常不同的村庄。我这样做是因为这是面试问题之一。。。我发现我们不用“length”方法就可以找到字符串的长度…使用lastIndexOf和toCharArray方法。。。所以我只是想知道我们是否也可以用CharAt来做这个…想知道如何得到字符串的结尾