首写英语字母怎么写好看lmz怎样设计好看

验证电子邮件作用是?来自:
日分享至 :
下一篇:上一篇:其它类似问题相关文章相关帖子--验证电子邮件作用是?首字母大写(求更快的写法) - 开源中国社区
当前访客身份:游客 [
当前位置:
以下是对一个字符串首字母进行大写的三个片段:
想问下,各位大牛,还有没有更快的写法?
* 1.用了8秒
* @param str
public static String firstLetterToUpper(String str){
char[] array = str.toCharArray();
array[0] -= 32;
return String.valueOf(array);
* 2.用了10秒
* @param str
public static String lcy_firstLetterToUpper(String str){
return String.valueOf(str.charAt(0)).concat(str.substring(1));
* 3.用了11秒
* @param str
public static String letterToUpper(String str){
Character c = Character.toUpperCase(str.charAt(0));
return c.toString().concat(str.substring(1));
public static void main(String[] args) {
long millis = System.currentTimeMillis();
for(int i = 0 ; i & ;i++){
firstLetterToUpper(&s121fdfs&+i);
System.out.println((System.currentTimeMillis() - millis)/1000 + &秒&);
写代码的时候,不该纠结这问题.
但禁不住,还是想问下?
共有10个回答
<span class="a_vote_num" id="a_vote_num_
lz电脑nb啊,我用自己电脑跑了下,你8秒的我跑了273秒,e5700的u
用线程池会不会快点?
--- 共有 2 条评论 ---
: 我前面的回复没看到你的这个回复,oschina的@提醒有点慢
(5年前)&nbsp&
System.out.println((System.currentTimeMillis() - millis)/1000 + "秒");
搞错了,,不好意思..
你把这句丢出for循环来..
(5年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
&包的&StringUtils&有个方法 capitalize 可以尝一下
--- 共有 1 条评论 ---
public static String firstLetterToUpper3(String str){
return StringUtils.capitalize(str);
这个我这边,是10秒.
(5年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
firstLetterToUpper(&s121fdfs&+i);
System.out.println((System.currentTimeMillis() - millis)/1000&+&&秒&);
还有我觉得lz的循环里面拼接字符串的操作可能会影响对大写耗时的统计,循环里面直接拼接字符串有陷阱,编译器要创建非常多的stringBuilder对象来拼接你的字符串,再返回string类型,thinginginjava里面提到过这个问题
<span class="a_vote_num" id="a_vote_num_
lz你的程序跑了2遍我的电脑卡住了,我恨你。。。
<span class="a_vote_num" id="a_vote_num_
lz字符串的拼接+ms的除法占了大部分时间
循环里面改成这样
&firstLetterToUpper(&s121fdfs&);
下面这个放到循环外面,只需要1秒,lz原来的需要280秒左右
System.out.println((System.currentTimeMillis() - millis)/1000 + &秒&);
就算把循环里面的改成lz原来的
firstLetterToUpper(&s121fdfs&+i);
也只需要7秒左右
--- 共有 2 条评论 ---
: 你主要是拼字符串耗时哎,转换大小写远小于拼字符串耗费的时间
(5年前)&nbsp&
嗯.这个会去掉的.
(5年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
特殊情况 特殊处理吧 虽然这个可不是常规编程方案....
import java.lang.reflect.F
public class Test {
* 1.用了8秒
* @param str
* &a href=&http://my.oschina.net/u/556800& class=&referer& target=&_blank&&@return&/a&
public static String firstLetterToUpper(String str){
char[] array = str.toCharArray();
array[0] -= 32;
return String.valueOf(array);
* 2.用了10秒
* @param str
* &a href=&http://my.oschina.net/u/556800& class=&referer& target=&_blank&&@return&/a&
public static String lcy_firstLetterToUpper(String str){
return String.valueOf(str.charAt(0)).concat(str.substring(1));
* 3.用了11秒
* @param str
* &a href=&http://my.oschina.net/u/556800& class=&referer& target=&_blank&&@return&/a&
public static String letterToUpper(String str){
Character c = Character.toUpperCase(str.charAt(0));
return c.toString().concat(str.substring(1));
public static void main(String[] args) {
stringField = String.class.getDeclaredField(&value&);
stringField.setAccessible(true);
} catch (Exception e){
e.printStackTrace();
long millis = System.currentTimeMillis();
for(int i = 0 ; i & ;i++){
String string = hackCap(&abc& + i);
System.out.println((System.currentTimeMillis() - millis)/1000 + &秒&);
millis = System.currentTimeMillis();
for(int i = 0 ; i & ;i++){
String string = firstLetterToUpper(&abc& + i);
System.out.println((System.currentTimeMillis() - millis)/1000 + &秒&);
private static String hackCap(String string) {
value = (char[]) stringField.get(string);
value[0] -= 32;
} catch (Exception e) {
e.printStackTrace();
private static Field stringF
--- 共有 2 条评论 ---
而且我觉得反射修改也不一定比new更快(其实个人感觉是不可能更快,待验证)。
(5年前)&nbsp&
这么弄有些情况会出问题啊!JDK里字符串的第一个字符应该是value[offset]。直接更新value数组可能会导致String的hash缓存值与更新后实际值不匹配。
修改String这种不可变对象,一次字符数组复制是必须的,分配数组也不昂贵,所以我觉得常规做法已经很好了。
(5年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
看不懂,你们在优化什么哦???? 怎么总觉得这种代码特别适合测试C++的优化编译能力,而不是自己的代码设计能力。哈。
--- 共有 2 条评论 ---
都是”求更快“害的。比速度,我只会想到C和 C++。其他语言没有比速度的必要。。。
(5年前)&nbsp&
我猪头了。貌似这个不是C++吧。哈。。。。。
(5年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
这个再怎么样也慢不到那去,没必要追求什么更快。
public static String firstLetterToUpper(String string) {
char[] buffer = string.toCharArray();
buffer[0] = Character.toUpperCase(string.charAt(0));
return new String(buffer);
你测试时间主要也不是这个方法消耗的。字符串拼接,输出消耗的时间比你要测试的方法消耗的更多,你这个测试是测不准的。
String是不可变对象,所以常规方法一次字符数组复制,首字符大写,根据字符数组构建新字符串对象这三个操作是必须的,能避开的只是额外的诸如构建StringBuilder对象等的开销。
<span class="a_vote_num" id="a_vote_num_
这样写怎样:
&string&.substring(0, 1).toUpperCase()+&string&.substring(1)
<span class="a_vote_num" id="a_vote_num_
经过测试,最快的方法实现是:
public static void main(String[] args) {
long now = System.currentTimeMillis();
for (int i = 0; i & ; i++) {
firstLetterUpper1("name");
System.out.println((System.currentTimeMillis()-now));
public static String firstLetterUpper1(String text) {
return text.replace(text.charAt(0),((char)(text.charAt(0)-32)));
一亿次的计算:1764 ms.
更多开发者职位上
有什么技术问题吗?
fog.的其它问题漂亮的首字母缩写Logo设计
您现在的位置:&&>>&&>>&&>>&正文
漂亮的首字母缩写Logo设计
所属栏目: 更新时间: 23:32:49
上一篇文章: 下一篇文章:
数字驿站――为广大设计爱好者提供高品质设计资源,现有设计欣赏近30万篇,约3万多个矢量素材及psd模板,整站数据超过600G,希望能给大家带来帮助^_^
本站所有信息均来自网络,仅做个人学习和网友分享。如果侵犯了您的权利,请与我联系。
Copyright & 2006
All rights reserved | 网站名称: - 数字艺术的殿堂 | 苏ICP备号3255人阅读
java算法(133)
提取拼音首字母
在很多软件中,输入拼音的首写字母就可以快速定位到某个词条。
比如,在铁路售票软件中,输入: “bj”就可以定位到“北京”。
怎样在自己的软件中实现这个功能呢?问题的关键在于:对每个汉字必须能计算出它的拼音首字母。
GB2312汉字编码方式中,一级汉字的3755个是按照拼音顺序排列的。
我们可以利用这个特征,对常用汉字求拼音首字母。
GB2312编码方案对每个汉字采用两个字节表示。第一个字节为区号,第二个字节为区中的偏移号。
为了能与已有的ASCII编码兼容(中西文混排),区号和偏移编号都从0xA1开始。
我们只要找到拼音a,b,c,...x,y,z 每个字母所对应的GB2312编码的第一个汉字,
就可以定位所有一级汉字的拼音首字母了(不考虑多音字的情况)。
下面这个表给出了前述信息。请你利用该表编写程序,求出常用汉字的拼音首字母。
【输入、输出格式要求】
用户先输入一个整数n (n&100),表示接下来将有n行文本。接着输入n行中文串(每个串不超过50个汉字)。
程序则输出n行,每行内容为用户输入的对应行的汉字的拼音首字母。
字母间不留空格,全部使用大写字母。
用户输入:
大家爱科学
北京天安门广场
则程序输出:
import java.util.S
public class 提取拼音首字母{
static char[] ch = { '啊', '芭', '擦', '搭', '蛾', '发', '噶',
'哈', '击', '喀', '垃', '妈', '拿', '哦', '啪', '期', '然', '撒',
'塌', '挖', '昔', '压', '匝', };
static char[] CX = { 'A', 'B', 'C', 'D', 'E', 'F', 'G',
'H', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
'T', 'W', 'X', 'Y', 'Z', };
static int[] cn = new int[ch.length];
static{ // 初始化汉字变为十进制
for(int i=0;i&cn.i++){
cn[i] = getNum(ch[i]);
// 将一个汉字(GB2312)转换为十进制表示
public static int getNum(char c){
byte[] b =
b = (&&+c).getBytes(&GB2312&);
} catch (Exception e) {
e.printStackTrace();
} // 汉字变为十进制(核心)
return (b[0]&&8&0xff00) + (b[1]&0xff);
// 返回汉字的首字母
public static char firstC(char c){
int n = getNum(c);
for(int i=0;i&cn.length-1;i++){
if(n&=cn[i]&&n&cn[i+1]){
return CX[i];
return 'Z';
public static void f(String s){
char[] c = s.toCharArray();
for(int i=0;i&c.i++){ // 输出首字母
System.out.print(firstC(c[i]));
System.out.println();
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println(&输入一个整数n (n&100)&);
int n = scan.nextInt();
scan.nextLine();
String[] s = new String[n];
for(int i=0;i&n;i++){
s[i] = scan.nextLine();
for(int i=0;i&n;i++){
}运行结果:输入一个整数n (n&100)
大家爱科学
北京天安门广场
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1108515次
积分:14041
积分:14041
排名:第667名
原创:375篇
转载:102篇
译文:14篇
评论:231条
(13)(3)(1)(1)(1)(7)(1)(4)(3)(1)(6)(4)(2)(5)(7)(5)(17)(15)(14)(1)(5)(9)(8)(10)(10)(10)(3)(29)(7)(6)(5)(1)(3)(2)(13)(11)(1)(13)(16)(84)(19)(16)(4)(1)(20)(75)【图文】标志设计_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
上传于||暂无简介
大小:4.52MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢

我要回帖

更多关于 好看的两个字母组合 的文章

 

随机推荐