java中String占几个字节?
Java中无论是汉字还是英文字母都是用Unicode编码来表示的,一个Unicode码是16位,每字节是8位,所以一个Unicode码占两字节。但是英文字母比较特殊,源自于8位(1字节)的ASCII吗,于是在Unicode码仅使用了低8位(1字节)就可以表示,高8位的话不使用也无所谓。所以
char c='a';
System.out.println(c.getBytes().lenth()),得到的是1(字节)
但汉字就完整地使用了16位(2字节)的Unicode,所以
char c='中';
System.out.println(c.getBytes().lenth()),得到的是2(字节)
综上,c='a'在内存中确实只占1字节,但这不意味着String s="abc"在内存中只占3字节。应该这么说,String s="abc"至少在内存中占3字节。这是因为char是基本数据类型,而String确是对象类型。
java输入一个字符串,可包含中文,要求查找其中出现次数最多的字符,并将其出现次数一并输出?
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class Test5
{
public static void main(String[] args)
{
HashMap map =new HashMap();
for(int k=0;k<args.length;k++)
{
if(map.get(args[k])==null)
{
map.put(args[k],new Integer(1));
}
else
{
Integer in =(Integer)map.get(args[k]);
in = new Integer(in.intValue()+1);
map.put(args[k],in);
}
Set set =map.keySet();
for(Iterator it =set.iterator();it.hasNext();)
{
String key =(String)it.next();
Integer value = (Integer)map.get(key);
System.out.println(key +":" + value);
}
}
}
你试试!
java中String对象比较用的equal和 ==有什么区别?
你好,我是七步的天,很高兴为你解答。
对应Java对象,equal比较的是两个String对象指向的内存地址中的内容是否一样,属于比较内容比较。而==比较的是两个String对象指向的内存地址的数值是否一样属于值比较。
喜欢就关注我吧。欢迎点赞。非常感谢。