public static void main(String[] args) {
System.out.println("请输入一个八位的字符串:")
Scanner scanner = new Scanner(System.in)
String str = scanner.nextLine()
//判断字符串是否是八位
if(str.length() != 8){
System.out.println("字符串不是八位")
return
}
char [] c =str.toCharArray()
for (char c1 : c) {
//判断c是否是字母字符,前面LowerCase是小写,后面UpperCase是大写,是返回True,否则返回False
if(!Character.isLowerCase(c1) &&!Character.isUpperCase(c1)){
System.out.println("字符串有非字母的字符!")
return
}
}
}
/*** 得到一个字符串的长度,显示的长度,一个汉字或日韩文长度为1,英文字符长度为0.5
* @param String s 需要得到长度的字符串
* @return int 得到的字符串长度
*/
public static double getLength(String s) {
double valueLength = 0
String chinese = "[\u4e00-\u9fa5]"
// 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1
for (int i = 0 i < s.length() i++) {
// 获取一个字符
String temp = s.substring(i, i + 1)
// 判断是否为中文字符
if (temp.matches(chinese)) {
// 中文字符长度为1
valueLength += 1
} else {
// 其他字符长度为0.5
valueLength += 0.5
}
}
//进位取整
return Math.ceil(valueLength)
}
这个字符串长度为10个字符。
可以用strlen("ab'1'\\\12803")来求这个字符串的长度。
也可以用sizeof("ab'1'\\\12803")来求,但是这个求出的结果是多了一个字符串结束符\0。
可以试着输出这个字符串看看是不是10个字符。
strlen()函数判断的字符串长度是以\0为结尾作为标志的。
当char * m=new char[TOKEN_LENGTH]后,虽然为指针分配了地址,但是其指向的内容未被初始化,所以m指向的内容是未知的,可能在第24个字符的位置发现了\0所以strlen()显示长度为24。
数据类型
字符串数据类型是建模在形式字符串的想法上的数据类型。字符串是几乎在所有编程语言中可以实现的非常重要和有用的数据类型。在某些语言中它们可作为基本类型获得,在另一些语言中做为复合类型获得。多数高级语言的语法允许通常用某种方式引用起来的字符串来表示字符串数据类型的实例;这种元字符串叫做“文本”或“字符串文本”。
以上内容参考:百度百科-字符串