`

JAVA面试题解惑系列(六)——字符串(String)杂谈

阅读更多
removed.

请到博文下载PDF文件:http://zangweiren.iteye.com/blog/241218
50
6
分享到:
评论
16 楼 臧圩人 2008-07-20  
回复zhanjia:
你的判断更加严谨一些,不过也要区分不同的编码。
同一个汉字在不同的编码格式下编码也是不同的
15 楼 zhanjia 2008-07-20  
import java.io.UnsupportedEncodingException;

/**
 * @author zhanjia
 * 
 */
public class IsChinese {

	/**
	 * @param args
	 * @throws UnsupportedEncodingException
	 */
	public static void main(String[] args) throws UnsupportedEncodingException {
		// 判断字符是否为中文
		String str = "中国chinese笢恅";
		for (int i = 0; i < str.length(); i++) {
			if (str.substring(i, i + 1).matches("[\u4e00-\u9fa5]")) {
				System.out.println(str.substring(i, i + 1) + "为汉字");
			} else {
				System.out.println(str.substring(i, i + 1) + "不为汉字");
			}

		}
	}
}
14 楼 zzq230 2008-07-19  
分析的很透彻收藏了,谢谢
13 楼 BaSaRa 2008-07-19  
原来不同的编码对字符和字符串的长度有这么大的影响,这个受教了,谢谢 :)
12 楼 臧圩人 2008-07-19  
回复okjava、Quake Wang、weihthchk:

为了使说明更加严谨,我已经对文章进行了调整
11 楼 臧圩人 2008-07-19  
CHINAUNIX网友weihthchk写道:

“按字节数截取前四个”这样的说法,不正确。
英文字母按照不同的编码,占用的字节数是不同的。如果是ASCII,只占7bit;UTF-8,占1byte;Java使用UNICODE,占用2bytes。
如果你指的是GBK一类的编码,那应该就说得过去了。
如果仅要求按字节数,而没有编码要求,那结果就是不确定的了。
准确的做法,应该是在给定编码的情况下,把字符串转成字节数组,然后截取前四个字节,再按相同编码转换回字符串。
10 楼 jcs7575 2008-07-18  
引用
sChineseChar这个方法似乎有问题
你这样只能判断该char变量里面保存的是一个双字节字符,但是不一定是中文,比如有可能是日文。


他只是说明这个问题,实际中应用还得具体问题具体分析
  
9 楼 ALLEN仔 2008-07-18  
很好,谢谢,让我明白了一些东西!!!!
8 楼 QuakeWang 2008-07-18  
引用
答案就不用说了。为什么一个中文汉字可以保存在一个char变量里呢?因为在JAVA中,一个char是2个字节(byte),而一个中文汉字是一个字符,也是2个字节。而英文字母都是一个字节的,因此它也能保存到一个byte里,一个中文汉字却不能。请看:

这个不准确,得看汉字是采用什么编码,gbk是2字节, utf8就是3字节
你可以保存java程序的时候试试看不同编码,通常都是建议统一使用utf8编码
7 楼 okjava 2008-07-18  
不同编码中文字节长度是不同的.
6 楼 okjava 2008-07-18  
你试试utf-8编码
5 楼 okjava 2008-07-18  
二、一个中文汉字能保存在一个char里吗?
你试试utf-8编码
4 楼 crazy.j 2008-07-18  
恩 中文的判断还是得用正则
3 楼 臧圩人 2008-07-18  
回复philip2k:
你说的对,这个方法只是针对这个题目设定的环境的,在这个前提下,这样判断已经足够了
2 楼 philip2k 2008-07-18  
isChineseChar这个方法似乎有问题
你这样只能判断该char变量里面保存的是一个双字节字符,但是不一定是中文,比如有可能是日文。
1 楼 ybyb14 2008-07-18  
谢谢楼主!分析的很详细!!!

相关推荐

    JAVA面试题解惑系列(六)——字符串(String)杂谈[收集].pdf

    Java中的字符串(String)是编程面试中的热门话题,其特性与操作是面试官常常用来考察候选人基础知识的手段。本文将深入探讨String对象的一些关键知识点。 首先,我们要了解`String`类的`length()`方法。这个方法返回...

    JAVA面试题解惑系列合集

    .31 1.6 JAVA面试题解惑系列(六)——字符串(String)杂谈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36 1.7 JAVA面试题解惑系列(七)——日期和时间的处理 . . . . . . . . . . . ....

    臧圩人--JAVA面试题解惑系列合集.pdf

    **1.6 JAVA面试题解惑系列(六)——字符串(String)杂谈** - **知识点**:深入探讨字符串处理技术,包括字符串拼接、比较、格式化等常见操作的内部实现,以及性能优化建议。 **1.7 JAVA面试题解惑系列(七)——...

    Java面试题详解,和一些基础知识的深入剖析,个人认为非常棒

    “JAVA面试题解惑系列(六)——字符串(String)杂谈”可能涉及到String池的概念,即JVM会缓存重复的字符串,以提高性能。此外,String的equals()和==的区别也常常是面试的焦点,前者比较内容,后者比较对象引用。 ...

    Java面试题解惑系列

    ### Java面试题解惑系列——知识点详解 #### 1. 类的初始化顺序 在Java中,类的初始化顺序是一个常见的面试考察点。当一个类被加载时,Java虚拟机(JVM)会按照一定的顺序执行类中的不同部分,包括静态变量、静态...

    JAVA面试题解惑系列

    【JAVA面试题解惑系列】是一系列专门针对Java开发者面试准备的文章集合,涵盖了多个核心Java概念和面试常问问题。作者臧圩人在JavaEye社区分享了这个系列,旨在帮助求职者理解和解答面试中可能出现的疑问。 1. **类...

    JAVA面试题解惑系列合集.pdf

    【JAVA面试题解惑系列合集】是一本由臧圩人编写的,专注于JAVA面试常见问题解答的资料。这本书集合了多个关于JAVA编程的面试题目及其解析,旨在帮助准备面试的程序员理解和解决实际问题。书中涵盖了类的初始化顺序、...

    JAVA面试题解惑系列114页.pdf

    - **字符串(String)杂谈**:字符串是不可变的,每次修改都会创建新的字符串对象。String pool存储常量字符串,使用`String.intern()`方法可以将字符串放入池中。 - **日期和时间的处理**:Java提供了`java.util....

Global site tag (gtag.js) - Google Analytics