`

day_05_Java字符串

阅读更多

星期四, 十一月 05, 2015   16:18:52

 

一.创建字符串

  

在java中用String类的构造方法来创建字符串变量。

 

----1.String()

         

            一个String对象,可表示一个空字符序列。

    使用String()方法初始化一个新创建的String对象

    String s =  new String();

 

 

二.字符串的操作

 

----1.字符串连接

   

        a.多个字符串的连接

 

代码案例:

package day05;

 

public class TestString {

public static void main(String[] args) {

/*字符串连接用+*/

int m = 20;

String s1 = new String("hello");

String s2 = new String("word");

/*String s = ""+s1+s2;*/

System.out.println("m先转换为字符串-->连接"+m+s1+s2);

}

}

 

运行结果:

 

m先转换为字符串-->连接20helloword

 

 

----2.连接其他数据类型

 

 

当其他数据类型与字符串相连时会自动将其转换成字符串类型,然后进行连接。

 

 

----3.获取字符串信息

 

    字符串变量是一个对象,可以通过相应方法获取字符串的有效信息,如获取字符串的长度、获取指定字符的索引位置等。

    ----1.获取字符串的长度

    ----2.获取指定字符串的索引位置,首次出现的str.indexOf(int ch)

          &最后一次出现的lastIndexOf(int ch)

    ----获取指定索引位置的字符

 

代码案例:

package day05;

 

public class TestString {

public static void main(String[] args) {

/*获取字符的指定的索引位置indexOf(int ch)

* lastIndexOflastIndexOf*/

String s = new String("hwxzwkf");

int loc = s.indexOf('w');

int loc2 = s.lastIndexOf('w');

/*charAt(int index)*/

char m = s.charAt(1);

System.out.println("w在hwxzkf中首次出现的位置="+loc);

System.out.println("w在hwxzkf中last出现的位置="+loc2);

System.out.print("索引位置为1的字符为"+m);

}

}

运行结果:

 

w在hwxzkf中首次出现的位置=1

w在hwxzkf中last出现的位置=4

索引位置为1的字符为w

 

----4.去掉字符串的空格

 

---去掉字符串中的空格有2种,1.去除字符串的前导、尾部空格,2.去除字符串中的所有空格,可以用不同方法实现。

    

    1.trim()进行去除字符串的前导、尾部空格,

 

    2.replaceAll(String regex,

 String replacement),去除字符串中的所有空格。

 

    http://blog.csdn.net/zhangjg_blog/article/details/18319521

 

       String是不可以改变解释~~

 

      -----在Java中不可能直接操作对象本身,所有的对象都由一个引用指向,必须通过这个引用才能访问对象本身,

      包括获取成员变量的值,改变对象的成员变量,调用对象的方法等。

 

      -----也就是说,s只是一个引用,它指向了一个具体的对象,当s=“123456”; 这句代码执行过之后,又创建了一个新的对象“123456”, 而引用s重新指       向了这个心的对象,原来的对象“ABCabc”还在内存中存在,并没有改变。

      -----原值在内存中还是在的;新的赋值只是将新的数据在内存中新生成,将s重新进行了指向。

 

代码案例:

 

package day05;

 

public class TestString {

public static void main(String[] args) {

String s = "  J ava ";

System.out.println("字符串中含空格的长度="+s.length());

System.out.println("字符串中使用trim去除前后空格后的长度,中间的空格未去除"+s.trim().length());

System.out.println(s=s.trim());

 

/*public String replaceAll(String regex,

                String replacement)*/

 

/*s.replaceAll(" ", "");*/

System.out.println("原s的指向="+s);

System.out.println("s的重新指向="+s.replaceAll(" ", ""));

}

}

 

运行结果:

    

字符串中含空格的长度=8

字符串中使用trim去除前后空格后的长度,中间的空格未去除5

J ava

原s的指向=J ava

s的重新指向=Java

 

 

----5.字符串替换

 

    ----replace(char oldChar,char newChar) 

            该方法用户替换所有与指定字符串相匹配的字符串

 

    ----replaceFirst(String regex,String replacement)

            该方法用于替换第一个出现的指定的字符串,而后面出现的指定字符串则不会被替换

 

代码案例:

package day05;

 

public class TestString {

public static void main(String[] args) {

/*5.字符串替换public String replace(char oldChar,

             char newChar)*/

String a = new String("bad bad girl");

a = a.replace("bad", "good");

System.out.println("repalce使用,a的新指向"+a);

 

 

/*public String replaceFirst(String regex,

                String replacement)

                             参数:

               regex - the regular expression to which this string is to be matched

               replacement - the string to be substituted for the first match*/

String b = new String("bad bad girl");

b = b.replaceFirst("bad", "good");

System.out.println("replaceFirst使用,b的新指向"+b);

 

 

}

}

 

运行结果:

repalce使用,a的新指向good good girl

replaceFirst使用,b的新指向good bad girl

 

星期四, 十一月 05, 2015 19:54:50

 

 

 

星期五, 十一月 06, 2015 09:43:25

 

----6.判断字符串

 

   6.1 判断字符串是否相等

 

       ----判断字符串是否相等equals()区分大小写,相同的字符和长度,则判等

       ---- 判断字符串是否相等,忽略大小写equalsIgnoreCase()

 

     注意:

          比较运算符"=="比较的是内存位置,不适宜拿来比较字符串,但整型等可以用比较运算符比较.

          equals()方法比较的两个字符串内容必须完全一样;

          equalsIgnoreCase()方法在或略大小写的情况下内容必须一样.

 

代码案例:

 

 

package day05;

 

public class TestStringEquals {

public static void main(String[] args) {

/* “==”比较的是内存中的位置,不适合比较字符串的大小

* 判断字符串是否相等equals()

* public boolean equals(Object anObject)

* 判断字符串是否相等,忽略大小写equalsIgnoreCase()

* public boolean equalsIgnoreCase(String anotherString)*/

 

String s1 = new String("ZhuhwJava");

String s2 = new String("Zhuhwjava");

        boolean b1 = s1.equals(s2);

        boolean b2 = s1.equalsIgnoreCase(s2);

        System.out.println("equals用法="+b1);

        System.out.print("equalsIgnoreCase用法="+b2);

 

}

 

运行结果:

equals用法=false

equalsIgnoreCase用法=true

 

   6.2判断字符串的开始与结尾 

   

        6.2.1.以参数指定的字符串开始

    

         格式:

            str.startWith(String prefix);

 

        6.2.2.以参数指定的字符串结尾

      

         格式:

           str.endWith(String suffix)

 

代码案例:

package day05;

 

public class TestString {

public static void main(String[] args) {

/*判断字符串以指定前缀开始public boolean startsWith(String prefix)

*判断字符串以指定后缀开始public boolean endsWith(String suffix)

* */

String s1 = new String("A0123456");

String s2 = new String("C0123456D");

        boolean b1 = s1.startsWith("A0");

   boolean b2 = s2.endsWith("66");

   System.out.println("前缀startsWith()="+b1);//true

   System.out.println("后缀endsWith()="+b2);//false

}

}

  

运行结果:

前缀startsWith()=true

后缀endsWith()=true

 

     6.3 字母大小写切换

 

    toLowerCase()和toUpperCase()方法

 

代码案例:

 

package day05;

 

public class TestString {

public static void main(String[] args) {

        /*字符串大小写转换public String toLowerCase()

         * 转换为大写public String toUpperCase()*/

 

String s1 = new String("ZhuHw");

System.out.println("原字符串="+s1);

System.out.println("转换为小写后="+s1.toLowerCase());

   System.out.print("转换为大写后="+s1.toUpperCase());

}

}

 

运行结果:

 

原字符串=ZhuHw

转换为小写后=zhuhw

转换为大写后=ZHUHW

 

 

     6.4.字符串拆分

 

split(String sign,int limit)方法

该方法根据给定的分隔符对字符串进行拆分,并限定拆分的份数.

语法:

    str.split(String sign,int limit)

 

代码案例:

package day05;

 

public class TestString {

public static void main(String[] args) {

/*

字符串分割public String[] split(String regex),分割后返回数组类型*/

 

String s1 = new String("A,B,C,D");

System.out.println("原字符串为"+s1);

String s2[] = s1.split(",");

for(int i = 0; i<s2.length; i++){

System.out.print(s2[i]+"\t");

}

System.out.println();

System.out.println("--------------------------------");

/* str.split(String sign,int limit)并限定拆分的份数*/

String s3 = new String("A,B,C,D");

System.out.println("原字符串为"+s3);

String s4[] = s3.split(",",2);//拆成2份,验证成功

for(int i =0 ; i<s4.length;i++) {

System.out.print(s4[i]+"\t");

}

 

 

}

}

 

运行结果:

原字符串为A,B,C,D

A B C D

--------------------------------

原字符串为A,B,C,D

A B,C,D

 

12:37:32

 

 

 

星期日, 十一月 08, 2015 11:23:22

 

6.5根据指定分隔符把字符串分行

 

注意:

    没有统一的对字符进行分割的符号,定义多个分隔符,使用符号"|"。

 

代码案例:

package day07;

 

public class StringSplit {

public static void main(String[] args) {

/*根据指定分隔符把字符串分行*/

String s1 = new String("爱是毕加索风格,尼罗河的月落,普赛的传说,青春向右;生活向左,我们都不是预知未来的使者");

String s2[] = s1.split(",|;");

for(int i = 0;i < s2.length; i++) {

System.out.println(s2[i]);

}

}

}

 

运行结果:

爱是毕加索风格

尼罗河的月落

普赛的传说

青春向右

生活向左

我们都不是预知未来的使者

 

6.6 判断字符串是否是字符串格式

 

package day07;

 

public class CheckNumber {

public static void main(String[] args) {

/*判断是否全是数字*/

 

String sa1 = new String("23544");

   if (CheckNumber.IsNumber(sa1)) {

   System.out.println("全是数字");

   }else{

   System.out.println("非全是数字");

   }

}

public static boolean IsNumber(String sa1) {

char sa2[] = sa1.toCharArray();

/*public static boolean isDigit(int codePoint)*/

for(int i =0 ;i<sa2.length;i++) {

if(Character.isDigit(sa2[i])) {

}else{

return false;

}

}return true;

}

}

 

运行结果:

全是数字

 

7.格式化字符串

 

------格式化字符串是程序中经常用到的,主要包括日期格式化、时间格式化、日期/时间组合的格式化和常规类型格式化.

 

------7.1格式化方法

 

format()方法有一下两种重载形式

 

1.format(String format,Object...args)方法

 

 该方法使用指定的格式字符串和参数,格式化后的新字符串使用本地默认的语言环境,返回格式化后的字符串。

 

format:格式化转换符

args:格式化字符串中格式说明符引用的参数。

       如果还有格式说明符以外的参数,则忽略这些额外的参数。

       此参数的书目是可变的,可以为0.

 

 

2.format(Local l,String format,Object...args)方法

 

Local:格式化话过程中要应用的语言环境。如果1位null,则不进行本地化

format:格式化转换符

args:格式化字符串中格式说明符引用的参数。

       如果还有格式说明符以外的参数,则忽略这些额外的参数。

       此参数的书目是可变的,可以为0.

 

----7.1.1 日期和时间字符格式化串

 

在应用程序设计中,经常需要显示时间和日期.

formate()方法通过给定的特殊转换字符作为参数来实现对日期和时间的格式化.

 

1.日期格式化

package day07;

 

import java.util.Date;

 

public class Formate {

public static void main(String[] args) {

/*日期格式化*/

/*实现当前日期信息易4位年份、月份全称、2位日期形式输出。*/

@SuppressWarnings("unused")

Date date = new Date();

String s1 = String.format("%tY",date);

System.out.println(s1);

String s2 = String.format("%tB",date);

System.out.println(s2);

String s3 = String.format("%td",date);

System.out.println(s3);

}

}

运行结果:

2015

十一月

08

 

 

 

2.时间格式化

 

例子:

     实现将当前时间信息以2位小时。2位分钟数、2位秒钟数形式输出。

 

代码案例:

package day07;

 

import java.util.Date;

 

public class Formate {

public static void main(String[] args) {

/* 实现将当前时间信息以2位小时。2位分钟数、2位秒钟数形式输出。*/

Date date = new Date();

String d1 = String.format("%tH", date);

System.out.print(d1+":");

String d2 = String.format("%tM", date);

System.out.print(d2+":");

String d3 = String.format("%tS", date);

System.out.print(d3);

}

}

运行结果:

12:46:20

 

 

 

3.格式化常见的日期时间组合

 

例子:

    在主方法中实现将当前日期时间的全部信息以及指定格式的日期输出。

 

代码案例:

package day07;

 

import java.util.Date;

 

public class DateAndTime {

public static void main(String[] args) {

/*在主方法中实现将当前日期时间的全部信息以及指定格式的日期输出。*/

Date date = new Date();

String dt1 = String.format("%tc", date);

System.out.println(dt1);

String dt2 = String.format("%tF", date);

System.out.println(dt2);

}

}

 

运行结果:

星期日 十一月 08 12:51:11 CST 2015

2015-11-08

 

 

----7.2.2 常规类型格式化

 

在程序设计过程中,经常需要对常规类型的数据进行格式化,

如格式化为整数、格式化为科学技术表示等。

在Java语言中可以使用常规类型的格式化转换字符来实现。

 

 

代码案例:

package day07;

 

import java.util.Date;

 

public class General {

public static void main(String[] args) {

/*实现不同数据类型到字符串的转换*/

String str1 = String.format("%d", 400/2);//10

String str2 = String.format("%b", 3>5);//boolean

String str3 = String.format("%x", 200);//16

System.out.println("400的一半是"+str1);

System.out.println("3>5正确吗?"+str2);

System.out.println("200的十六进制是"+str3);

}

}

运行结果:

400的一半是200

3>5正确吗?false

200的十六进制是c8

 

 

 

8.使用正则表达式

 

 

  在程序设计过程中,经常需要对输入的数据格式进行检查,

这时就会用到正则表达式,匹配正则表达式则数据格式正确,

否则格式错误。

 

 

 

----8.1 判断是否符合正则表达式的方法

 

1.语法格式:

 

boolean matches(String regex)

 

 

regex:指定的正则表达式

返回值:返回值boolean类型

 

2.正则表达式的元字符

 

 

注意:

    在正则表达式中,"."代表任何一个字符,因此在正则表达式中如果想使用普通意义的点字符“.”,必须使用转义字符“\”。

 

在主方法中实现使用正则表达式来判定的变量是否是合法的E-mail地址。

 

代码案例:

package day07;

 

import java.util.Date;

 

public class Judge {

public static void main(String[] args) {

/*在主方法中实现使用正则表达式来判定的变量是否是合法的E-mail地址。*/

String regex = "\\w{0,}\\@\\w{0,}\\.{1}\\w{0,}";

String str1 = "aaa@";

String str2 = "aaaa";

String str3 ="zhuhw_yzxe@163.com";

boolean b1 = str1.matches(regex);

boolean b2 = str2.matches(regex);

boolean b3 = str3.matches(regex);

System.out.println(b1);

System.out.println(b2);

System.out.println(b3);

}

}

 

运行结果:

false

false

true

 

 

9.字符串生成器

 

J2SE5.0新增了可变的字符序列StringBuilder类,大大提高了频繁增加字符串的效率。

 

如果在程序中频繁的附加字符串,建议使用StringBuilder。

新建的StringBuilder初始容量是16个字符,可以自行指定初始长度。

 

例子:

    验证字符串操作和字符串生成器操作的工作效率。

 

代码案例:

package day07;

 

import java.util.Date;

 

public class StringBuilderTest {

public static void main(String[] args) {

/*验证字符串操作和字符串生成器操作的工作效率.*/

String str = new String("");

long startTime = System.currentTimeMillis();

for(int i = 0;i < 10000; i++) {

str = str+i;

}

long endTime = System.currentTimeMillis();

long time = endTime - startTime;

System.out.println("String消耗的时间为"+time);

 

 

/*@SuppressWarnings("unused")*/

StringBuilder builder = new StringBuilder("");

startTime= System.currentTimeMillis();

for(int j = 0 ;j<10000;j++) {

builder.append(j);

}

endTime = System.currentTimeMillis();

time = endTime - startTime;

System.out.print("StringBuilder消耗的时间为"+time);

 

}

}

 

运行结果:

String消耗的时间为301

StringBuilder消耗的时间为2

 

若要使用StringBuider最后输出字符串结果,可使用toString()方法。

 

 

利用StringBuider可以动态的增加、删除、插入等对字符串的操作。

该类常用的方法:

1.append(content)

  content表示要追加到字符串生成器中的内容。可以是任何类型的数据或者其他对象。

2.insert(int offset,arg)方法

  位置+参数

3.delete(int start,int end)

 

API参考:

    java.lang.StringBuider说明

 

 

星期日, 十一月 08, 2015 14:40:25

 

0
0
分享到:
评论

相关推荐

    01day_01mybatis_java_

    6. **动态 SQL**: MyBatis 的一大亮点是支持动态 SQL,可以在 XML 或注解中编写条件语句,避免了大量的字符串拼接,提高了代码的可读性和可维护性。 7. **参数映射和结果映射**: MyBatis 自动处理 SQL 参数和结果集...

    传智播客_Java培训_毕向东_Java基础源代码day03

    2. **字符串(String)**:Java中的String类是不可变对象,广泛用于处理文本信息。了解其构造方法、常用方法如concat(), substring(), equals()等对于日常编码至关重要。 3. **运算符与表达式**:包括算术运算符、...

    day13_Character_java_

    在"day13_Character_java_"这个主题中,我们主要探讨的是Java在字符处理方面的知识,这包括但不限于字符串操作、字符编码以及面向对象编程的应用。 首先,Java中的字符是通过Unicode编码表示的,这意味着Java可以...

    day13_StringBuffer_java_

    在Java编程语言中,"StringBuffer" 是一个非常重要的类,尤其在处理字符串操作时,尤其是在多线程环境中。在本教程"day13_StringBuffer_java_"中,我们将深入探讨这个类及其在Java中的作用。 Java是C++的优化版本,...

    传智播客_Java培训_毕向东_Java基础源代码_day02

    6. **字符串**:在Java中,String是一个特殊的类,用于处理文本。学习如何创建、操作和比较字符串对于日常编程非常实用。 7. **异常处理**:Java通过try-catch-finally语句块进行异常处理,帮助程序在遇到错误时...

    传智播客_Java培训_毕向东_Java基础源代码day02

    6. **字符串处理**:Java中的String类提供了许多用于处理字符串的方法,如连接、查找、替换等。字符串在编程中经常被用到,因此熟悉其特性和用法至关重要。 7. **异常处理**:Java通过try-catch-finally语句块进行...

    GSDN_day_01.pdf

    最后,使用java命令来运行编译后的.class文件,如果控制台输出了预期的字符串,如"HelloWorld!!!",则表示程序运行成功。 在编写Java程序时,适时添加注释是非常重要的。注释可以帮助理解代码逻辑,提高代码的...

    java2 使用教程(第三版) 实验指导 上机实践5 字符串、时间与数字

    java2 使用教程(第三版) 实验指导 上机实践5 字符串、时间与数字 String 类的常用方法 比较日期的大小 (日期比较中【代码2】和【代码4】处的public final void set(int year,int month,int date) 方法在设置月份时...

    Wiley_Java in 60 Minutes a Day_2003

    4. **字符串处理**:Java中的String类是非常重要的,学习如何创建、操作和比较字符串。 5. **异常处理**:Java提供了异常处理机制,通过try-catch-finally块来捕获和处理运行时错误。 6. **输入/输出流**:理解I/O...

    学习笔记java\CoreJava笔记\CoreJava_day05

    在CoreJava_day05的学习笔记中,我们主要探讨了数组、二维数组以及生成随机数的三种方法。同时,还涉及到了String对象的不同状态。 首先,数组是Java中的基础数据结构,它是一个元素的集合,可以存储基本类型(如...

    java获取昨天日期字符串的方法

    在Java编程中,获取昨天日期字符串涉及到对日期和时间的操作,这通常需要用到`java.util`和`java.text`包中的类。以下是一个详细的解释和示例代码,展示如何实现这个功能。 首先,我们需要导入必要的库: ```java ...

    basic_day01_v1_pm_all.zip

    6. **字符串处理**:Java中的String类是常被使用的,学习其不可变性,以及如何进行字符串连接,查找,替换,截取等操作。 7. **异常处理**:理解Java的异常处理机制,如try-catch-finally语句块,以及不同类型的...

    java_NextDay

    `DateTimeFormatter`类可以帮助完成这个任务,创建一个自定义的格式器,然后用`format()`方法将日期对象转换为字符串。 5. **异常处理**: 输入验证是必不可少的,因为用户输入的日期可能无效。需要处理`...

    Java 比较字符串实例详解

    Java 比较字符串实例详解 Java 比较字符串实例详解是指在 Java 中比较两个字符串实例的大小关系的方法。具体来说,就是使用 CompareTo() 方法来比较两个字符串的大小关系。下面将详细介绍 CompareTo() 方法的使用和...

    day09_字节流、字符流2

    在练习二中,我们可以使用`write(byte[])`方法一次性写出字节数组,例如写出字符串"I love java"的字节表示。 2. 文件的续写与换行: 练习三要求在已存在的文件末尾追加内容而不覆盖原有数据,这需要使用`...

    java_javasecore1_day05

    字符串的序列化主要指的是如何将字符数组(`char[]`)转换为字节序列(`byte[]`),以便于存储或传输。 #### 编码规范 - **UTF-16BE编码方案** - UTF-16BE是一种大端序的Unicode编码方式,将每个`char`类型的16位...

    学习笔记 java\CoreJava笔记\CoreJava_day06

    在示例中,`Teacher`类重写了`Person`类的`getName()`方法,返回的字符串在父类的基础上添加了"老师",这展示了如何通过方法覆盖来改变父类的行为。 集成开发环境(IDE)如Eclipse使得编写和管理Java代码更加便捷。...

    java日期格式函数的用法与实例

    接下来,我们讨论如何将字符串转换为`java.util.Date`对象。这通常涉及`SimpleDateFormat`类,它提供了日期和时间格式化的强大功能。例如,如果我们有一个日期字符串"2022-08-31",我们可以这样转换: ```java ...

    Javaw基础课程笔记.zip

    Java 视频教程目录: ...day08:Java 字符串的基本操作_静态static关键字 day09:Java 类的继承_super和this关键字。 day10:Java 接口。 day11:Java final 关键字_内部类_成员内部类_局部内部类_匿名内部类。

    day09_字节流、字符流-答案1

    此练习中,我们使用`FileOutputStream`的`write(byte[] buf)`方法,将字符串"I love java"转换成字节数组后写入b.txt文件。这个方法可以一次性写入整个字节数组。 ```java FileOutputStream fos = new ...

Global site tag (gtag.js) - Google Analytics