java
如果是new一个String ,那么字符串实际是存储在value数组里面,那如果是直接常量赋值,也就是直接指向常量池中的字符串,那这个字符串也是用一个字符数组来装吗?还是其他处理方式?
要看你的字符串是不是编译阶段可以确定地常量,比如
int i = scanner.nextInt();
String s1 = String.valueOf(num);
String s2 = new String(s1);
这里s1 s2都是在堆上分配的,也就是用字符数组存储的。
对字符进行格式化是非常简单的,c表示字符,标识中’-'表示左对齐,其他就没什么了。
答案:
Java中关于String的存储方式有两种不同的方式:在堆内存中和在字符串常量池中。
如果使用new String创建字符串,那么这个字符串会存储在堆内存中的,而不是value数组中。
如果直接使用常量赋值,也就是指向常量池中的字符串,那么这个字符串会存储在字符串常量池中。
关于判断字符串是否全部由数字组成,可以使用以下代码:
public static boolean isNumber(String str) {
char[] data = str.toCharArray() ;
for (int i = 0; i < data.length; i++) {
if (data[i]<'0' || data[i]>'9') {
return false ;
}
}
return true ;
}
该方法首先将字符串转换为字符数组,然后遍历每一位字符,判断是否在字符范围之内,如果有任意一位字符不在数字范围内,则返回false,否则返回true。