import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;
import java.util.StringTokenizer;
import java.util.Date;
import java.util.Scanner; public class HelloString { public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("终于到字符串这儿了,开始学习~~~"); /*********************************
* 一、创建字符串: 用双引号来声明
*/
System.out.println("\n一、创建字符串: 用双引号来声明*******************************");
// 初始化
String s = new String();
s = "good";
// 用字符数组创建字符串:String(char a[])
char a[] = { 'g', 'o', 'o', 'd', 'a', 'f', 't', 'e', 'r', 'n', 'o',
'o', 'n', '!' };
String s1 = new String(a);
// 截取字符串:String(char a[],int offset,int length),只能用字符数组截取
String s2 = new String(a, 4, 9);
System.out.println(s + "\n" + s1 + "\n" + s2); /*********************************
* 二、字符串连接
*/
System.out.println("\n二、字符串连接*******************************");
// 多个字符串连接、连接其它类型 +
String s3 = new String("Hello");
String s4 = new String("World你好世界!");
String s5 = s3 + " " + s4;
System.out.println(s5);
int runTime = 40;
float workTime = 8.77f;
System.out.println("我每天花" + runTime + "分钟跑步! 然后花" + workTime + "小时上班!");
/*********************************
* 三、获取字符串信息,长度、字符索引位置 length() 长度 indexOf() 字符首次出现位置的索引(没找到值是-1)
* lastIndexOf() 字符最后一次出现位置的索引(没找到值是-1)
*/
System.out
.println("\n三、获取字符串信息,长度、字符索引位置*******************************");
System.out.println("s5字符串\"" + s5 + "\"的长度是" + s5.length());
String s6 = "good morning";
System.out.println("字符o在字串s6:"+s6+"的位置是" + s6.indexOf("o"));
System.out.println("字符o在字串s6:"+s6+"最后的位置是" + s6.lastIndexOf("ing"));
// 如果参数是空串"",则返回结果与调用该字串的length()方法的返回结果相同!!
System.out.println("字符空串在字串s6:"+s6+"最后的位置是(与调用该字串的length()方法的返回结果相同!!)" + s6.lastIndexOf("")); /*********************************
* 四、获取指定索引位置的字符 str.charAt(int index)
*/
System.out.println("\n四、获取指定索引位置的字符*******************************");
String s7 = "I have a dream~";
char myChar = s7.charAt(3);
System.out.println("字符串s7\"I have a dream\"中索引位置是3的字符是:" + myChar); /*********************************
* 五、去除字符串中的空格 六、字符串替换
*/
System.out.println("\n五、去除字符串中的空格*******************************");
System.out.println("六、字符串替换 *******************************"); // 1.去除字符串中的前导、尾部空格 str.trim()
String s8 = " Captain America 3 , hoho!";
String s8Trim = s8.trim();
System.out.println("字串s8的长度是" + s8.length() + ";值是:" + s8);
System.out.println("字串s8Trim的长度是" + s8Trim.length() + ";去除前导尾部空格后的值是:"
+ s8Trim); // 2.去除字符串中的所有空格,该方法利用分割和追加实现去除空格的目的。 StringTokenizer(String str,String delim) StringTokenizer s8St = new StringTokenizer(s8, " "); // 使用空格来分隔字符串
StringBuffer sb = new StringBuffer(); // 定义字符串缓存对象
System.out.println("这个可以直接循环的,用空格做为分隔符提取字符串:");
while (s8St.hasMoreTokens()) { // 判断字符串中是否还有空格
sb.append(s8St.nextToken()); // 向生成器中追加内容,
System.out.println(sb.toString());
}
System.out.println("用StringTokenizer方法去掉s8所有空格之后的字符串是:" + sb);
System.out.println("用StringTokenizer方法去掉s8所有空格之后的字符串是:" + sb.toString()); // 3.去除字符串中的所有空格,用空串替换空格字符。 str.replaceAll(String regex, String
// replacement) String s8ReplaceAll = s8.replaceAll(" ", ""); // replace() 与
// replaceAll()主要区别,前者可以替换转义字符
String s8ReplaceFirst = s8.replaceFirst("America", "Chinese");
System.out.println("替换掉所有空格后:" + s8ReplaceAll);
System.out.println("实在找不到替换哪个词了,嘿嘿..."
+ "\n只替换查到的第一个词America后替换成chinese:" + s8ReplaceFirst); /*********************************
* 七、判断字符串 判断字符串是否相等、是否以指定的字符串开始和结尾
*/
System.out.println("\n 七、判断字符串 *******************************");
// 1.判断字符串是否相等 equals() equalsIgnoreCace()
// s9.equals(anObject) 严格区分大小写 str.equalsIgnoreCase(anotherString)
// 不区分大小写
String s9 = "I have a dream"; // 分配的是栈内存:先进后出
String s9Equals1 = "i have a dream";
String s9Equals2 = new String("I have a dream"); // 分配的是堆内存:顺序随意,主要存放对象
String s9Equals3 = s9;
System.out.println("s9.equals(anObject) 严格区分大小写的结果是:"
+ (s9.equals(s9Equals2)));
System.out.println("str.equalsIgnoreCase(anotherString) 不区分大小写:"
+ (s9.equalsIgnoreCase(s9Equals1)));
System.out.println("==双等号比较的是内存位置,不适宜拿来比较字符串,可以比较数值:"
+ (s9 == s9Equals3)); // 2.判断字符串的开始和结尾
// startWith() endsWith() 用于判断字符串是否以指定的字符开始或结尾的
String s10 = "angry birds!";
boolean s10Start = s10.startsWith("angry");
boolean s19End = s10.endsWith("birds!");
System.out.println(s10 + "是否以字符串angry开始的:" + s10Start
+ "\n是否以birds!结尾的:" + s19End); // 3.字母大小写转换
// str.toUpperCase(); str.toLowerCase()
String s11 = "Dreams Come True!";
System.out.println(s11 + "全部转换成大写后:" + s11.toUpperCase());
System.out.println(s11 + "全部转换成小写后:" + s11.toLowerCase()); // 4.字符串分割
// split(String sign)
String s12 = new String("meet classmate by chance, happy everyday~");
String[] s12Split = s12.split(" |,");
// 分割字符串,返回的结果是数组,num分割次数,无分割所有字符,多个字符分割用|隔开
System.out.println("按分割字符分割后的字符串是:");
for (int i = 0; i < s12Split.length; i++) {
System.out.println(s12Split[i]);
} // 5.根据指定分隔符把字符串分行
System.out.println("\n 1、根据指定分隔符把字符串分行~~~~~~~~~~~~~");
String something = "人是无法完全做到换位思考的,"
+ "因为思想、经历、感官、全都不一样,"
+ "就像我说大海很漂亮,你却说淹死过很多人。~"
+ "认清这世界,然后爱它,就这么一辈子,下一世你可能就不再在这个世界了。《龙猫》";
String st1[] = something.split("。|,|~");
System.out.println("喜欢的话,按分隔符分开后:");
for (int j = 0; j < st1.length; j++) {
System.out.println(st1[j]);
} System.out.println("\n 2、判断字符串是否是数字格式~~~~~~~~~~~~~");
String Snum = new String("889.092"); if (IsNum(Snum)) { // 调用函数,也可以写HelloString.IsNum()
System.out.println(Snum + "是数字格式");
} else {
System.out.println(Snum + "不是数字格式");
} System.out.println("\n 3、格式化字符串:日期格式化、时间格式化、日期/时间组合格式化等~~~~~~~~~~~~~");
// format(String format,Object...args) 返回值都是一个格式化的字符串
// format(Local 1,String format ,Object...args) local是否进行本地化
// 日期格式化
Date date = new Date();
System.out.println("当前的日期是(未格式化):" + date);
String x1 = String.format(Locale.CHINA, "%tb", date);
String x2 = String.format(Locale.US, "%tb", date) + ":月份简称 \n ";
String x3 = String.format(Locale.US, "%te", date) + ":一个月中的某一天 \n";
String x4 = String.format(Locale.US, "%tB", date) + ":月份全称 \n ";
String x5 = String.format(Locale.US, "%ta", date) + ":指定环境的星期几简称\n ";
String x6 = String.format(Locale.US, "%tA", date) + ":指定环境的星期几全称\n";
String x7 = String.format(Locale.US, "%tc", date) + ":包括全部日期和时间\n ";
String x8 = String.format(Locale.US, "%tY", date) + ":四位年份\n ";
String x9 = String.format(Locale.US, "%tj", date) + ":一年中的第几天\n ";
String x10 = String.format(Locale.US, "%tm", date) + ":月份\n ";
String x11 = String.format(Locale.US, "%td", date) + ":一个月中的第几天\n ";
String x12 = String.format(Locale.US, "%ty", date) + ":两位年份\n "; System.out.println(x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10
+ x11 + x12); // 时间格式化
// 转换符:%tH %tI %tk %tl %tM %tS %tL %tN %tp %tz %tZ %ts %tQ
String y1 = String.format("%tH", date) + ":两位数字的24小时制的小时(00~23)\n ";
String y2 = String.format("%tI", date) + ":两位数字的12小时制的小时(01~12)\n ";
String y3 = String.format("%tk", date) + ":两位数字的12小时制的小时(0~23)\n ";
String y4 = String.format("%tl", date) + ":两位数字的12小时制的小时(1~12)\n ";
String y5 = String.format("%tM", date) + ":两位数字的分钟\n ";
String y6 = String.format("%tS", date) + ":两位数字秒数\n ";
String y7 = String.format("%tL", date) + ":三位数字的毫秒数\n ";
String y8 = String.format("%tN", date) + ":九位数字的微秒数\n ";
String y9 = String.format("%tp", date) + ":指定语言环境的上午或下午标记 am 上午\n ";
String y10 = String.format("%ts", date)
+ ":1970-01-01 00:00:00到现在经过的秒数,即时间戳\n ";
String y11 = String.format("%tQ", date)
+ ":1970-01-01 00:00:00到现在经过的毫秒数\n ";
String y12 = String.format("%tZ", date) + ":时区缩写形式的字符串\n "; System.out.println(y1 + y2 + y3 + y4 + y5 + y6 + y7 + y8 + y9 + y10
+ y11 + y12);
// 日期时间组合格式化
// 转换符:%tF %tD %tc %tr %tT %tR
String z1 = String.format("%tF", date) + ":年-月-日 四位年份\n ";
String z2 = String.format("%tD", date) + ":月/日/年 两位年份\n ";
String z3 = String.format("%tc", date) + ":全部日期和时间信息\n ";
String z4 = String.format("%tr", date) + ":时:分:秒 PM(AM) 12小时制\n ";
String z5 = String.format("%tT", date) + ":时:分:秒 24小时制\n ";
String z6 = String.format("%tR", date) + ":时:分 24小时制\n ";
System.out.println(z1 + z2 + z3 + z4 + z5 + z6); // 常规类型格式化
/***********************
* *%b %B 格式化为布尔类型
* %h %H 格式化为散列码
* %s %S 格式化为字符串类型
* %c %C 格式化为字符类型
* %d 格式化为十进制整数
* %o 格式化为八进制整数
* %x %X 格式化为十六进制整数
* %e 格式化为用科学计数法表示的十进制数 1.7000000e+01
* %a 格式化为带有交位数和指数的十六进制浮点值 0X1.C00000001P4
* %n 格式化为特定于平台的行分隔符 %% 字面值%
*/ // 将金额格式化成大写,太难了,先放弃了~~
// test
String name = "sunshine.liu";
String nameSub = name.substring(0, name.indexOf('.')); // 截取字符串
int r = name.indexOf('.');
System.out.println(nameSub + "\n" + r); // 将数字格式转换为货币格式
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个数字,将数字格式转换为货币格式:");
double money = scan.nextDouble();
scan.close();// 关闭资源~~~
System.out.println("Locale类的常量作为构造参数获得不同的货币格式:");
NumberFormat format = NumberFormat.getCurrencyInstance(Locale.CHINA);
System.out.println("Locale.CHINA \t" + format.format(money));
format = NumberFormat.getCurrencyInstance(Locale.US);
System.out.println("Locale.US \t" + format.format(money)); } public static boolean IsNum(String str) { char[] c = str.toCharArray();
for (int n = 0; n < c.length; n++) {
if (Character.isDigit(c[n])) { // 判断字符是否是数字函数
} else {
return false;
}
}
return true;
}
}

输出结果:

 终于到字符串这儿了,开始学习~~~

 一、创建字符串: 用双引号来声明*******************************
good
goodafternoon!
afternoon 二、字符串连接*******************************
Hello World你好世界!
我每天花40分钟跑步! 然后花8.77小时上班! 三、获取字符串信息,长度、字符索引位置*******************************
s5字符串"Hello World你好世界!"的长度是16
字符o在字串s6:good morning的位置是1
字符o在字串s6:good morning最后的位置是9
字符空串在字串s6:good morning最后的位置是(与调用该字串的length()方法的返回结果相同!!)12 四、获取指定索引位置的字符*******************************
字符串s7"I have a dream"中索引位置是3的字符是:a 五、去除字符串中的空格*******************************
六、字符串替换 *******************************
字串s8的长度是34;值是: Captain America 3 , hoho!
字串s8Trim的长度是29;去除前导尾部空格后的值是:Captain America 3 , hoho!
这个可以直接循环的,用空格做为分隔符提取字符串:
Captain
CaptainAmerica
CaptainAmerica3
CaptainAmerica3,
CaptainAmerica3,hoho!
用StringTokenizer方法去掉s8所有空格之后的字符串是:CaptainAmerica3,hoho!
用StringTokenizer方法去掉s8所有空格之后的字符串是:CaptainAmerica3,hoho!
替换掉所有空格后:CaptainAmerica3,hoho!
实在找不到替换哪个词了,嘿嘿...
只替换查到的第一个词America后替换成chinese: Captain Chinese 3 , hoho! 七、判断字符串 *******************************
s9.equals(anObject) 严格区分大小写的结果是:true
str.equalsIgnoreCase(anotherString) 不区分大小写:true
==双等号比较的是内存位置,不适宜拿来比较字符串,可以比较数值:true
angry birds!是否以字符串angry开始的:true
是否以birds!结尾的:true
Dreams Come True!全部转换成大写后:DREAMS COME TRUE!
Dreams Come True!全部转换成小写后:dreams come true!
按分割字符分割后的字符串是:
meet
classmate
by
chance happy
everyday~ 1、根据指定分隔符把字符串分行~~~~~~~~~~~~~
喜欢的话,按分隔符分开后:
人是无法完全做到换位思考的
因为思想、经历、感官、全都不一样
就像我说大海很漂亮
你却说淹死过很多人 认清这世界
然后爱它
就这么一辈子
下一世你可能就不再在这个世界了
《龙猫》 2、判断字符串是否是数字格式~~~~~~~~~~~~~
889.092不是数字格式 3、格式化字符串:日期格式化、时间格式化、日期/时间组合格式化等~~~~~~~~~~~~~
当前的日期是(未格式化):Tue Jun 07 18:06:36 CST 2016
六月Jun:月份简称
7:一个月中的某一天
June:月份全称
Tue:指定环境的星期几简称
Tuesday:指定环境的星期几全称
Tue Jun 07 18:06:36 CST 2016:包括全部日期和时间
2016:四位年份
159:一年中的第几天
06:月份
07:一个月中的第几天
16:两位年份 18:两位数字的24小时制的小时(00~23)
06:两位数字的12小时制的小时(01~12)
18:两位数字的12小时制的小时(0~23)
6:两位数字的12小时制的小时(1~12)
06:两位数字的分钟
36:两位数字秒数
299:三位数字的毫秒数
299000000:九位数字的微秒数
下午:指定语言环境的上午或下午标记 am 上午
1465293996:1970-01-01 00:00:00到现在经过的秒数,即时间戳
1465293996299:1970-01-01 00:00:00到现在经过的毫秒数
CST:时区缩写形式的字符串 2016-06-07:年-月-日 四位年份
06/07/16:月/日/年 两位年份
星期二 六月 07 18:06:36 CST 2016:全部日期和时间信息
06:06:36 下午:时:分:秒 PM(AM) 12小时制
18:06:36:时:分:秒 24小时制
18:06:时:分 24小时制 sunshine
8
请输入一个数字,将数字格式转换为货币格式:
88.77
Locale类的常量作为构造参数获得不同的货币格式:
Locale.CHINA ¥88.77
Locale.US $88.77

No1_5.字符串的基本操作_Java学习笔记的更多相关文章

  1. No1_6.字符串的基本操作2_Java学习笔记

    import java.util.Scanner; import java.util.regex.Pattern; public class HelloString2 { public static ...

  2. No1_4.数组的基本操作_Java学习笔记

    import java.util.Arrays; public class HelloArrayOp { public static void main(String[] args) { // TOD ...

  3. BZOJ 3555: [Ctsc2014]企鹅QQ [字符串哈希]【学习笔记】

    3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 2046  Solved: 749[Submit][Statu ...

  4. No2_5.类的高级特性_Java学习笔记_抽象类和成员内部类

    一.抽象类1.所谓抽象类,只声明方法的存在而不去实现它的类:2.抽象类不能被实例化,即不能实现其对象:3.abstract class 类名{ 类体 }4.包含一个或多个抽象方法的类必须声明成抽象类: ...

  5. No2_3.接口继承多态_Java学习笔记_多态

    ***多态***1.多态性:通常使用方法的重载(Overloading)和重写(Overriding)实现类的多态:2.重写之所以具有多态性,是因为父类的方法在子类中被重写,方法名相同,实现功能不同. ...

  6. No2_1.接口继承多态_Java学习笔记_接口

    接口.继承与多态 1.继承和多态是面向对象开发语言中的重要一个环节,使用得当,可以将整个程序的架构变得非常有弹性,减少代码冗余: 2.继承:复用定义好的类: 3.多态:可以动态调整对象的调用,降低对象 ...

  7. Linxu内核版本号后面多出字符串或者+号【学习笔记】

    作者:庄泽彬 之前一直没有留意到但是最近在编译内核的时候版本号竟然多出了个加号+号或字符串, 后面终于找到原因了,原来config如果设置了CONFIG_LOCALVERSION_AUTO=y,内核的 ...

  8. 字符串Hash/树Hash学习笔记

    哈希 Tags:字符串 作业部落 评论地址 一.概述 百度百科: 散列表(Hash table/哈希表),是根据关键码值(Key value)而直接进行访问的数据结构. 哈希表常用于比较两个字符串是否 ...

  9. No2_4.接口继承多态_Java学习笔记_经典案例

    import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Collections; import jav ...

随机推荐

  1. c#解析XML和JSON

    http://guwei4037.blog.51cto.com/3052247/1344190  

  2. android studio gradle自动签名构建实现

    我为自己代言: 一.在android studio中生成签名文件. 1.在android studio 选中项目,在菜单栏中选择Build. 2.点击Generate Signed APK选项卡. 3 ...

  3. 转发细节——forward

    1)forward()方法之前的输出,如果是输出到缓冲区,再转发到其它Servlet,那么原缓冲区的数据忽略不计:2)forward()方法之前的输出,如果真正输出到浏览器,再转发到其它Servlet ...

  4. 瞬态抑制二极管TVS的基本知识

    二极管是大家熟悉的元件,但瞬态抑制二极管就可能不太熟悉了.本文将介绍这种特殊二极管的用途. 工作原理等基本知识.各种电子设备中的各种半导体器件,一般都在直流低电压范围各作;如果在电源中串入一个瞬间上百 ...

  5. AIX和Linux中wtmp的不同处理方式

    wtmp 记录用户登录和退出事件.它和utmp日志文件相似,但它随着登陆次数的增加,它会变的越来越大,有些系统的ftp访问也在这个文件里记录,同时它也记录正常的系统退出时间,可以用ac和last命令访 ...

  6. OR扩展

    <pre name="code" class="sql">SQL> select substr(xx.acct_no,1,5) agent_o ...

  7. mysql常用查询归纳

    一.mysql查询的五种子句 where(条件查询).having(筛选).group by(分组).order by(排序).limit(限制结果数) .where常用运算符: 比较运算符 > ...

  8. CH Round #53-数据备份

    描述 已知有N座办公楼位于同一条街上.你决定给这些办公楼配对(两个一组).每一对办公楼可以通过在这两个建筑物之间铺设网络电缆使得它们可以互相备 份.然而,网络电缆的费用很高.当地电信公司仅能为你提供K ...

  9. BZOJ1671: [Usaco2005 Dec]Knights of Ni

    1671: [Usaco2005 Dec]Knights of Ni Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 175  Solved: 107[Su ...

  10. HDU--3487 Play with Chain (Splay伸展树)

    Play with Chain Problem Description YaoYao is fond of playing his chains. He has a chain containing ...