java string常见操作题
1. 每个基本类型封装类都有将string转换为基本数据类型的方法
对于非常大的数字请使用Long,代码如下
long id = Long.parseLong("190"); // 假如值可能很大.
1.string.操作方法,默认会生成一个新的string保存在常量池中,不会改变原来常量池中的string。
因为常量池,string是final的,一经创建无法改变。
看下面代码:
String str = "abcde";
str.toUpperCase();
System.out.println(str);
//输出还是abcde,而非ABCDE。因为string是final的,string的改变内容的操作方法会生成一个新的string在常量池中。
2.引用变量指向常量池中的新的str
String str = "abcde";
str = str.toUpperCase();
System.out.println(str);
//常量池中新生成一个string,以前的引用变量指向新地址
3.字符串反转,用string缓存类,stringBuffer或者stringBuilder.
因为string缓存类,预先在堆内存中开辟一个16字符的存储空间,借以不断改变string的值
String str = "abcde";
StringBuilder stringBuilder = new StringBuilder(str);
stringBuilder.reverse();
str = stringBuilder.toString();
System.out.println(str);//输出edcba
stringBuilder是在堆内存开辟一个存储空间,对stringBuilder的修改全是在修改stringBuilder对象内存本身。
4.判断字符串是否对称:
String str = "abcde";
StringBuilder stringBuilder = new StringBuilder(str);
String str2 = stringBuilder.reverse().toString();
System.out.println(str.equal(str2));
5.输出字符串的子串,比如string str = "@abc efg . ghk";
string[] strArray = string.split("byChar");
string.split(“byChar”)方法
要求输出abc efg ghk
String str = "ab@cd ghk efg";
str = str.replaceAll("@", " ");
String[] strArray = str.split(" ");
for(String str1:strArray)
{
System.out.println(str1);
}
5. 编写一个程序,将下面的一段文本中的各个单词的字母顺序翻转,
“To be or not to be",将变成"oT eb ro ton ot eb."。
public static void main(String[] args) {
String s = "To be or not to be";
String ss[] = s.split(" ");
StringBuffer sb2 = new StringBuffer();
for (int i = ; i < ss.length; i++) {
StringBuffer sb = new StringBuffer(ss[i]);
sb.reverse();
sb2.append(sb);
if(i == ss.length-){
sb2.append(".");
}else{
sb2.append(" ");
}
}
System.out.println(sb2);
}
6.String s=”name=zhangsan age=18 classNo=090728”;
将上面的字符串拆分,结果如下:
zhangsan 18 090728
public static void main(String[] args) {
String s="name=zhangsan age=18 classNo=090728";
String[] ss = s.split(" ");
StringBuffer sb =new StringBuffer();
for (int i = ; i < ss.length; i++) {
String[] ss2 =ss[i].split("=");
sb.append(ss2[]);
sb.append(" ");
}
System.out.println(sb);
}
7.判断一个字符串是否包含另一个字符串?
答:int i = str.indexof("sss");如果不包含,则返回-1.如果包含则返回被包含字符串的起始位置。
if(str.indexof()!=-1){包含};
8.给定一个字符串,判断该字符串中是否包含某个子串.如果包含,求出子串的所有出现位置.
如:"abcbcbabcb34bcbd"中,"bcb"子串的出现位置为: 1,7,12.字符串和子串均由用户输入
String str = "abcdefghkabcdefdef";
String subStr = "def";
AppMain appMain = new AppMain();
appMain.calculateSubStrIndexFromString(str,subStr,); } public void calculateSubStrIndexFromString(String string,String subStr,int startIndexFirst) {
int startIndex = startIndexFirst;
int existingIndex = string.indexOf(subStr, startIndex);
while(existingIndex != -)
{
System.out.println("存在的index为: "+existingIndex);
calculateSubStrIndexFromString(string,subStr,existingIndex+subStr.length());
break;
} }
9.给定一个长度,随机产生一个该长度的字符串,由大写,小写字母以及数字组成
Java中随机数的生成:
java.util.Random r = new java.util.Random();
int a = r.nextInt(100): a 0-99的随机数
java char 48-57对应0-9
java char 65-90对应A-Z
java chat 97-122对应a-z
10.2.给定一个长度,随机产生一个该长度的字符串,由大写,小写字母以及数字组成
Java中随机数的生成:
java.util.Random r = new java.util.Random();
int a = r.nextInt(100): a 0-99的随机数
public static void Method_Two()
{
System.out.println("请输入一个长度");
Scanner s = new Scanner(System.in);
int n = s.nextInt();
char[] cs = new char[n]; Random random = new Random();
for (int i = ; i < n; i++)
{
int a = random.nextInt();
if(a>= && a<=)
{
a+=;
}
else if (a> && a<=)
{
// 97 - 26 = 71
a+=;
}
else
{
// 52-48 = 4
a-=;
}
cs[i] = (char)a;
}
System.out.println(cs);
}
11.给定一个由数字组成的字符串,如:"1239586838923173478943890234092",统计
出每个数字出现的次数
public static void Method_Three()
{
Scanner scanner = new Scanner(System.in);
String string = scanner.next();
int[] c = new int[];
for (int i = ; i < string.length(); i++)
{
char c1 = string.charAt(i); //48-57
int a = c1-; // 类型转换
c[a]++;
}
for (int i = ; i < c.length; i++)
{
System.out.println(i+" 出现的次数: "+c[i]);
} System.out.println("=========方法二==========");
String s = "";
char[] ch = s.toCharArray(); Map<Character, Integer> map = new HashMap<Character, Integer>();
Set<Character> set = map.keySet();
for (int i = ; i < ch.length; i++)
{
if (set.contains(ch[i])) // 判断map中已经有的char值
{
map.put(ch[i], map.get(ch[i])+);
} else
{
map.put(ch[i], ); // 第一次放入map中
}
}
Set<Character> set2 = map.keySet();
for (Character character : set2)
{
System.out.println(character+"=========="+map.get(character));
}
}
总结:字符串的常见操作无非几种
1.字符串反转 用stringBuilder.reverse();
2.字符串切割String[] strArray = str.spilt("spiltChar");
3.字符串拼接 用stringBuilder.append("str");
本文部分转自http://www.cnblogs.com/IamJiangXiaoKun/p/4639302.html
http://www.2cto.com/kf/201402/276764.html 感谢作者
/*
* 1,给定一个字符串数组。按照字典顺序进行从小到大的排序。
* {"nba","abc","cba","zz","qq","haha"}
*
* 思路:
* 1,对数组排序。可以用选择,冒泡都行。
* 2,for嵌套和比较以及换位。
* 3,问题:以前排的是整数,比较用的比较运算符,可是现在是字符串对象。
* 字符串对象怎么比较呢?爽了,对象中提供了用于字符串对象比较的功能。
*
*
*/
public class StringTest_1 { /**
* @param args
*/
public static void main(String[] args) { String[] arr = { "nba", "abc", "cba", "zz", "qq", "haha" }; printArray(arr); sortString(arr); printArray(arr); } public static void sortString(String[] arr) { for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) { if(arr[i].compareTo(arr[j])>0)//字符串比较用compareTo方法
swap(arr,i,j);
}
}
} private static void swap(String[] arr, int i, int j) {
String temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
} public static void printArray(String[] arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i != arr.length - 1)
System.out.print(arr[i] + ", ");
else
System.out.println(arr[i] + "]");
}
} }
package cn.itcast.p1.string.test; /*
* 2,一个子串在整串中出现的次数。
* "nbaernbatynbauinbaopnba"
* 思路:
* 1,要找的子串是否存在,如果存在获取其出现的位置。这个可以使用indexOf完成。
* 2,如果找到了,那么就记录出现的位置并在剩余的字符串中继续查找该子串,
* 而剩余字符串的起始位是出现位置+子串的长度.
* 3,以此类推,通过循环完成查找,如果找不到就是-1,并对 每次找到用计数器记录。
*
*/ public class StringTest_2 { /**
* @param args
*/
public static void main(String[] args) { String str = "nbaernbatnbaynbauinbaopnba";
String key = "nba"; int count = getKeyStringCount_2(str,key);
System.out.println("count="+count); } public static int getKeyStringCount_2(String str, String key) { int count = 0;
int index = 0; while((index = str.indexOf(key,index))!=-1){ index = index + key.length();
count++; } return count;
} /**
* 获取子串在整串中出现的次数。
* @param str
* @param key
* @return
*/
public static int getKeyStringCount(String str, String key) { //1,定义计数器。
int count = 0; //2,定义变量记录key出现的位置。
int index = 0; while((index = str.indexOf(key))!=-1){ str = str.substring(index+key.length());
count++;
}
return count;
} }
package cn.itcast.p1.string.test; /*
* 3,两个字符串中最大相同的子串。
* "qwerabcdtyuiop"
* "xcabcdvbn"
*
* 思路:
* 1,既然取得是最大子串,先看短的那个字符串是否在长的那个字符串中。
* 如果存在,短的那个字符串就是最大子串。
* 2,如果不是呢,那么就将短的那个子串进行长度递减的方式去子串,去长串中判断是否存在。
* 如果存在就已找到,就不用在找了。
*
*
*/
public class StringTest_3 { /**
* @param args
*/
public static void main(String[] args) { String s1 = "qwerabcdtyuiop";
String s2 = "xcabcdvbn"; String s = getMaxSubstring(s2, s1);
System.out.println("s=" + s);
} /**
* 获取最大子串
*
* @param s1
* @param s2
* @return
*/
public static String getMaxSubstring(String s1, String s2) { String max = null,min = null;
max = (s1.length()>s2.length())?s1:s2; min = max.equals(s1)?s2:s1; System.out.println("max="+max);
System.out.println("min="+min); for (int i = 0; i < min.length(); i++) { for(int a = 0,b = min.length()-i; b != min.length()+1; a++,b++){ String sub = min.substring(a, b);
// System.out.println(sub);
if(max.contains(sub))
return sub;
}
} return null;
}
}
package cn.itcast.p1.string.test; /*
* 4,模拟一个trim功能一致的方法。去除字符串两端的空白
* 思路:
* 1,定义两个变量。
* 一个变量作为从头开始判断字符串空格的角标。不断++。
* 一个变量作为从尾开始判断字符串空格的角标。不断--。
* 2,判断到不是空格为止,取头尾之间的字符串即可。
*/
public class StringTest_4 { /**
* @param args
*/
public static void main(String[] args) { String s = " ab c "; s = myTrim(s);
System.out.println("-" + s + "-");
} public static String myTrim(String s) { int start = 0, end = s.length() - 1; while (start <= end && s.charAt(start) == ' ') {
start++;
}
while (start <= end && s.charAt(end) == ' ') {
end--;
}
return s.substring(start, end + 1);
} }
编程. 已知字符串:"this is a test of java".
按要求执行以下操作:
(1) 统计该字符串中字母s出现的次数
(2) 取出子字符串"test"
(3) 用多种方式将本字符串复制到一个字符数组Char[] str中.
(4) 将字符串中每个单词的第一个字母变成大写, 输出到控制台。
(5) 用两种方式实现该字符串的倒叙输出。(用StringBuffer和for循环方式分别实现)
(6) 将本字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的额英文单词,并输出到控制台
4. 转换String为数字
对于非常大的数字请使用Long,代码如下
long id = Long.parseLong("190"); // 假如值可能很大.
java string常见操作题的更多相关文章
- java string常见操作(二)
- Java开发常见基础题大全
1.&和&&的区别? &:逻辑与(and),运算符两边的表达式均为true时,整个结果才为true. &&:短路与,如果第一个表达式为false时,第二 ...
- Java String 字符串操作小结
// 转载加编辑 -- 21 Apr 2014 1. Java字符串中子串的查找 Java中字符串中子串的查找共有四种方法,如下: 1.int indexOf(String str) :返回第一次出现 ...
- java String 的+操作导致的问题
不说别的先看代码截图: 结果如下: 很好奇为什么String对象的null加上了""就等于"null"字符串了,先给点资料看看: 这个是我找的一个人博客上的截图 ...
- java String常见的处理
import java.util.Arrays; class Demo5 { public static void main(String [] args) { String name1=" ...
- Java面试常见算法题
1.实现字符串反转 提供七种方案实现字符串反转 import java.util.Stack; public class StringReverse { public static String re ...
- android TextView字体设置最少占多少行. 及其 Java String 字符串操作 . .
① 字体设置: 修改代码 : GridViewActivity.java priceTv为 TextView priceTv.setMaxLines(3); //当多与7个字fu的时候 , 其余字 ...
- Java基础面试操作题: 获取 1-20 之间的随机数,共计 20 个,要求不能重复 获取 1-20 之间的随机数,共计 10 个,要求不能重
package com.swift; import java.util.HashSet; import java.util.Random; import java.util.Set; public c ...
- Java基础面试操作题:读取该文件内容,并按照自然顺序排序后输出到 另一个文件中
package com.swift; import java.io.FileInputStream; import java.io.FileNotFoundException; import java ...
随机推荐
- ZooKeeper常见问题
转载自原文:zookeeper(二)常见问题汇总 一.为什么zookeeper要部署基数台服务器? 所谓的zookeeper容错是指,当宕掉几个zookeeper服务器之后,剩下的个数必须大于宕掉的个 ...
- js回到顶部 动画速度 (自己记录)
x=x-20; 设置回到每10s的速度, function gotoTop(){ var x=document.body.scrollTop||document.documentElement.scr ...
- 二、 sql*plus常用命令
一.sys用户和system用户Oracle安装会自动的生成sys用户和system用户(1).sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户 ...
- hdoj1171 Big Event in HDU(01背包 || 多重背包)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1171 题意 老师有一个属性:价值(value).在学院里的老师共有n种价值,每一种价值value对应着 ...
- JS日期、时间 格式化转换方法
Date.prototype.format = function(fmt) { var o = { "M+" : this.getMonth()+1, //月份 "d+& ...
- 基于 Laravel 开发博客应用系列 —— 从测试开始(二):使用Gulp实现自动化测试
3.使用 Gulp 进行 TDD(测试驱动开发) Gulp 是一个使用 JavaScript 编写的自动化构建工具.用于对前端通用任务(如最小化.压缩.编译)进行自动构建.Gulp 还可以用来监控源代 ...
- Unity:控制粒子特效的移动方向
前几天在项目中遇到一个问题,需求是界面中先展示一段闪光特效,停顿一段时间后特效飞往一个固定的位置然后消失,类似于跑酷游戏吃到金币后金币飞往固定的金币数值显示框那种效果(具体是通过特效来实现还是直接通过 ...
- react篇章-React Props-Props 验证
React.PropTypes 在 React v15.5 版本后已经移到了 prop-types 库. <script src="https://cdn.bootcss.com/pr ...
- 美团客户端响应式框架EasyReact开源啦
前言 EasyReact 是一款基于响应式编程范式的客户端开发框架,开发者可以使用此框架轻松地解决客户端的异步问题. 目前 EasyReact 已在美团和大众点评客户端的部分业务中进行了实践,并且持续 ...
- Chrome谷歌浏览器拓展组件的2种快速安装方法(.crx)
谷歌浏览器拓展有至少2种安装方法,现在简单的介绍下. 第一种.当然是进入谷歌官方的应用商店直接安装 这种方法简单快捷,而且官方支持度够高,唯一的缺点是大陆用户需要“FQ”. 谷歌拓展组件应用商店地址: ...