开发者社区> 行者武松> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Java初学者必知 关于Java字符串问题

简介:
+关注继续查看

下面我为大家总结了10条Java开发者经常会提的关于Java字符串的问题,如果你也是Java初学者,仔细看看吧:

Java初学者必知 关于Java字符串问题

1、如何比较字符串,应该用”==”还是equals()?

总的来说,”==”是用来比较字符串的引用地址,而equals()才是比较字符串的值。两个值相同的字符串用”==”比较结果有可能是false,而用equals()则一定为true。除非两个字符串是同一个new出来的对象,不然比较字符串值是否相同应该要用equals()。

2、对那些安全敏感的信息,为什么用char[]存储要优于String?

String是不可变的,这就意味着它一旦被创建,就将永久驻留在内存中,直到垃圾回收器将其回收为止。然而用数组存储方式,你可以明确地改变数组中的元素,因此用数组方式,安全信息将有可能不存在系统内存的任何地方。

3、能否用字符串来声明switch语句?

JAVA 7及以后的版本是支持的。在JDK 7中,允许你使用字符串做switch语句的比较条件。jdk 6以前的版本,不能这样使用:


  1. // java 7 only! 
  2. switch (str.toLowerCase()) { 
  3.       case "a"
  4.            value = 1
  5.            break
  6.       case "b"
  7.            value = 2
  8.            break

4、如何将字符串转换成数字int类型?


  1. int n = Integer.parseInt("10"); 

很简单,但却会经常用到,也很容易被忽略。

5、如何用空格字符来分割字符串?

我们可以很方便地用正则表达式来分割字符串,”s”表示空格字符,比如” “, “t”, “r”, “n”


  1. String[] strArray = aString.split("s+"); 

6、substring()方法究竟是什么?

在jdk 6中,substring()方法在原来字符串中提供了一个截取字符的窗口,它并没有创建一个新的String实例。如果你想创建新的字符数组,你可以在substring()后加一个空字符,就像这样:


  1. str.substring(m, n) + "" 

这样就会创建一个新的String实例,上面的方法有时候可以让你的程序运行速度更快,因为垃圾回收器可以将没用的大字符串回收走,并保留其子字符串。

7、String、StringBuilder和StringBuffer哪个更优?

String和StringBuilder:StringBuilder是可变的,也就是说用StringBuilder创建的字符串你可以随时改变它。StringBuilder和StringBuffer:StringBuffer是同步的,它是线程安全(thread-safe)的,但效率要比StringBuilder差得多。

8、如何重复输出字符串?

在Python中,我们只需要为字符串乘上一个数字就可以重复输出该字符串了。然而在Java中,我们可以用StringUtils的repeat()方法来实现,StringUtils是Apache公共语言库的其中一个类库成员。


  1. String str = "abcd"
  2.  
  3. String repeated = StringUtils.repeat(str,3); 
  4.  
  5. //abcdabcdabcd 

9、如何将字符串转换成日期类型?

你可以按以下方法来做,代码如下:


  1. String str = "Sep 17, 2013"
  2.  
  3. Date date = new SimpleDateFormat("MMMM d, yy", Locale.ENGLISH).parse(str); 
  4.  
  5. System.out.println(date); 
  6.  
  7. //Tue Sep 17 00:00:00 EDT 2013 

10、如何统计指定字符在字符串中出现的频率

同样我们利用了Apache公共语言库中的StringUtils,代码如下:


  1. int n = StringUtils.countMatches("11112222""1"); 
  2. System.out.println(n); 

以上这10个关于Java字符串的问题,你遇到过多少?另外,你觉得还有哪些问题会对Java开发者产生困惑,评论中告诉我们,让我们一起来探讨。


来源:51CTO

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java---练习(面试题) :字符串截取(2-最终版)
Java---练习(面试题) :字符串截取(2-最终版)
45 0
Java---练习(面试题) :字符串截取(1)
Java---练习(面试题) :字符串截取(1)
51 0
Java---练习(面试题) :字符串截取(2-最终版)
在java中,字符串“abcd”与字符串“ab你好”的长度是一样,都是四个字符。 但对应的字节数不同,一个汉字占两个字节。 定义一个方法,按照指定的字节数来取子串。 如:对于“ab你好”,如果取三个字节,那么子串就是ab与“你”字的半个,那么半个就要舍弃。
1021 0
Java---练习(面试题) :字符串截取(1)
在java中,字符串“abcd”与字符串“ab你好”的长度是一样,都是四个字符。 但对应的字节数不同,一个汉字占两个字节。 定义一个方法,按照指定的字节数来取子串。 如:对于“ab你好”,如果取三个字节,那么子串就是ab与“你”字的半个,那么半个就要舍弃。
952 0
Java 集合:Collection,List,ArrayList,Vector,LinkedList(实现方式,对比)
Collection 与 List Collection 是 Java 集合的一个根接口,JDK 没有它的实现类。 内部仅仅做 add(),remove(),contains(),size() 等方法的声明。 List 接口是Collection 接口的一个子类,在Collection 基础上扩
1895 0
Java DNS查询内部实现
源码分析 在Java中,DNS相关的操作都是通过通过InetAddress提供的API实现的。比如查询域名对应的IP地址: String dottedQuadIpAddress = InetAddress.
2257 0
一个让开发人员仅通过声明式代码的方式实现智能数据结构的Java框架
一个朋友的框架发布1.1版本,和1.0在运行时生成额外字节码不同,1.1在编译时通过maven插件生成额外字节码,因此避免了暴露微量的设计模式给用户,让用法更简单粗暴,性能也更高。很大一部分不太像框架了,而更像是java语言的扩展,是个重大升级。此外,充分吸取1.0的教训,给出架构图并,让所有文档中英文双版,避免别人不明全局。另外,不再兼容java7。原文 - https://githu
5558 0
JAVA之旅(二十)—HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习
JAVA之旅(二十)—HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习 我们继续说一下集合框架 Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复 Set集合的功能和Collection是一致的 我们重点关注的是子类对象 我们来聊聊 一.
926 0
使用监听器实现Java Web的定时执行
定时器GoogleListener类: import java.util.Timer;//定时器类 import javax.
545 0
利用java代码和web拦截器轻松实现一个app抓包工具
    目前app测试时我们需要对接口数据进行抓包,对于app的抓包,我们可以使用很多现成的工具,比如fiddler、wireshark、charles等,基本上可以满足要求,但是对于一些定制化的需求,比如说:我们需要将抓包的数据进行篡改后再发送到服务器,或者对请求的数据新增标志字段以便定位问题,或者更多需要更改数据的需求,传统抓包工具已经很难实现,需要我们探索新的方式方法。
1505 0
+关注
行者武松
杀人者,打虎武松也。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Java基础入门(四)-泛型、反射、注解
立即下载
Java开发手册-孤尽秘传版
立即下载
Java开发手册1.1.0
立即下载