No1_5.字符串的基本操作_Java学习笔记
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学习笔记的更多相关文章
- No1_6.字符串的基本操作2_Java学习笔记
import java.util.Scanner; import java.util.regex.Pattern; public class HelloString2 { public static ...
- No1_4.数组的基本操作_Java学习笔记
import java.util.Arrays; public class HelloArrayOp { public static void main(String[] args) { // TOD ...
- BZOJ 3555: [Ctsc2014]企鹅QQ [字符串哈希]【学习笔记】
3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 2046 Solved: 749[Submit][Statu ...
- No2_5.类的高级特性_Java学习笔记_抽象类和成员内部类
一.抽象类1.所谓抽象类,只声明方法的存在而不去实现它的类:2.抽象类不能被实例化,即不能实现其对象:3.abstract class 类名{ 类体 }4.包含一个或多个抽象方法的类必须声明成抽象类: ...
- No2_3.接口继承多态_Java学习笔记_多态
***多态***1.多态性:通常使用方法的重载(Overloading)和重写(Overriding)实现类的多态:2.重写之所以具有多态性,是因为父类的方法在子类中被重写,方法名相同,实现功能不同. ...
- No2_1.接口继承多态_Java学习笔记_接口
接口.继承与多态 1.继承和多态是面向对象开发语言中的重要一个环节,使用得当,可以将整个程序的架构变得非常有弹性,减少代码冗余: 2.继承:复用定义好的类: 3.多态:可以动态调整对象的调用,降低对象 ...
- Linxu内核版本号后面多出字符串或者+号【学习笔记】
作者:庄泽彬 之前一直没有留意到但是最近在编译内核的时候版本号竟然多出了个加号+号或字符串, 后面终于找到原因了,原来config如果设置了CONFIG_LOCALVERSION_AUTO=y,内核的 ...
- 字符串Hash/树Hash学习笔记
哈希 Tags:字符串 作业部落 评论地址 一.概述 百度百科: 散列表(Hash table/哈希表),是根据关键码值(Key value)而直接进行访问的数据结构. 哈希表常用于比较两个字符串是否 ...
- No2_4.接口继承多态_Java学习笔记_经典案例
import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Collections; import jav ...
随机推荐
- 网站的优化----首页优化---app调取服务端数据
高并发经常会发生在有大活跃用户量来访问网站的某个点,例如用户高聚集的业务场景中,如:抢购,促销等.为了让用户流畅的访问网站,来根据自己的业务设计适合系统的处理方案. //对于APP网站首页数据,通常是 ...
- Idea使用记录--添加Problems&&解决Autowired报错could not autowire
今天在使用Idea的时候,发现Idea在整个每次找到错误代码非常不方便(Idea如果类中有错误,没有打开过类并不会提示,比如构建工程后缺少jar包问题).我想快速看到工程哪里出问题类似于eclipse ...
- USART笔记 基于STM32F107VCT6
USART 通用同步异步收发器 通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换.USART利用分数波特率发生器提供宽范围的 ...
- 基于QT开发的第三方库
基于Qt开发的第三方库 分类: Qt2014-02-12 11:34 1738人阅读 评论(0) 收藏 举报 QT第三方库 目录(?)[+] 文章来源:http://blog.csdn.net ...
- expect 传参
AAAAAAAAA(A)/app/cbsrun/sbin> cat reloadtuxconfig.exp puts "Start" set i 1 set max_i [l ...
- 奇葩的SQL*Net more data from client等待,导致批处理巨慢
<pre name="code" class="sql"><pre name="code" class="sql ...
- Android 对话框简介
对话框(Dialog)是程序运行过程中弹出的窗口,Android中有好多种对话框,如警告对话框,进度对话框,列表对话框,单选对话框,日期选择对话框,时间选择对话框等: 下面用几个例子来演示一下各种对话 ...
- Python partial函数
以前都是摘录的其他网友的博客,很少是自己写的,学习阶段,多多学习.今天开始自己写了,首先写一下刚刚遇到的partial函数. 1.partial函数主要是对参数的改变,假如一个函数有两个参数,而其中一 ...
- sql的交叉连接,内连接,左外连接,右外连接,全外连接总结
实践是最好的检验,一直都对这几个连接查询出来的结果有什么不同不大理解,然后自己放一块查询比较了一下,用结果来说话~ 先建两张表如下: t1: id name age 1 张三 18 2 李四 25 t ...
- Android 读取手机某个文件夹目录及子文件夹中所有的txt文件
1. activity_main.xml文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/andro ...