第六周Java作业

一、概述

    字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了。

    如果需要对字符串做很多修改,那么应该选择使用StringBuffer & StringBuilder类,和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

    StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

    由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

二、String类 

    String是java中的字符串类,是一种引用类型,修改字符串的值时,会重新创建一个新字串:

StringDemo1.java

public class StringDemo1 {

    public static void main(String[] args) {
        String s1 = "Hello,world!";
        String s2 = "Hello,world!";   //与s1指向同一地址,"Hello,world!"存储在堆的常量池中
        String s3 = new String("Hello,world!"); //创建了一个新对象

        System.out.println(s1==s2); //true      地址相等
        System.out.println(s1==s3); //false
        System.out.println(s1.equals(s3));//true 内容相等 重写了Object的

        byte[] bytes={65,66,67,68};  正数:字母  负数:汉字(两个字节)
        String str=new String(bytes);    // byte数组 转 字符串
        String str=new String(bytes,1,2); //(数组,始值  个数)
        byte[] bytes = str.getBytes();  // 字符串 转 byte数组
        char[] ch={'中','a','2'};

        String str=new String(ch);     // 字符数组 转 字符串
        String str=new String(ch,0,1);  // 字符数组 转 字符串
        char[] chs = str.toCharArray();  //字符串 转 字符数组

    }
}

String的常用方法:

str.toString(); 获取字符串对象的内容  输出时 自动调用

str.isEmpty(); 判断字符串是不是空串

str.length(); 返回字符串长度

str.charAt(0); 返回索引处字符

str.equals(str2); 判断字符串 与 指定字符串的内容是否相同

str.equalsIgnoreCase(str3); 判断字符串内容是否相同  忽略大小写

str.substring(1); 截取开始索引 到最后 的字符串

str.substring(2, 4); 截取开始索引 到终止索引(不包括) 的字符串

str.indexOf("bcd"); 返回第一次出现该字符串的索引,没有返回-1

str.contains("bcd"); 判断是否包含指定字符串,返回true/false

str.startsWith("Demo"); 判断是否以给定字符串开头

str.endsWith("java"); 判断是否以给定字符串结尾

str.toLowerCase(); 把字符串转换为小写字符串

str.toUpperCase(); 把字符串转换为大写字符串

str.trim();     去掉字符串两端空格

str.replace(oldChar, newChar);   将替换字符串中的老字符替换为新字符

str.replace(oldstr, newstr); 将字符串中的老字符串,替换为新字符串

String[] strArray = str.split(",");   按照指定符号分割字符串

三、StringBuilder类

    StringBuilder是java 1.5中新提供的字符串类,效率非常高,与StringBuffer类的用法相同。StringBuffer是线程安全的,StringBuilder是非线程安全的。

public class StringBuilderDemo {

    public static void main(String[] args) {

        StringBuilder sb = new StringBuilder(); //构造方法   初始为空串

        StringBuilder sb = new StringBuilder("world");//构造方法 str 转sb

        String str = sb.toString();       //str 转sb    输出时 自动调用


        StringBuilder sb2 = sb.append("hello");//添加数据(任意类型)

        System.out.println(sb == sb2); //true 地址相同


        sb.delete(1, 4);    //删除 [1,4)字符

        sb.deleteCharAt(1); //删除字符

        sb.insert(2, "it");   //在指定位置插入

        sb.replace(1, 4, "java");//替换[1,4)的字符串为"java"

        sb.reverse();反转


        sb.length();    //返回长度(字符数)

        sb.charAt(0);  //返回索引处的字符

        sb.indexOf("java",5); //查找第一次出现字符串的索引 从指定索引处


        String str = sb.substring(0,1); //截取 [0,1) 返回字符串

        String str = sb.substring(1); //截取[1,最后] 返回字符串

        sb.append("hello").append(true).append(100); //链式调用
    }

}

四、类型转换

    1、字符串、数组相互转换:

/**
 * 本Demo是字符串和字符数组之间的相互转换功能的展示
 */

import java.util.Arrays;

public class StringConvertDemo1 {
    public static void main(String[] args) {
        String sVer = "小宇飞刀!";
        char[] cArray;

        //把一个字符串转换为字符数组
        cArray = sVer.toCharArray();//或者直接:cArray = "小宇飞刀".toCharArray();

        System.out.println("字符串sVer:"+sVer);

        //使用foreach遍历输出数组中的元素值
        System.out.print("数组cArray:");
        for (char ch: cArray) {
            System.out.print(ch);
        }

        //通过Arrays静态类提供的方法输出数组的内容:Arrays.toString(数组变量)
        System.out.println("\n数组cArray:"+Arrays.toString(cArray));

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

        char[] cArray2 = {'中','国','人','民'};

        String sVer2 = String.valueOf(cArray2);//或者:String sVer2 = new String(cArray2);

        System.out.println("数组cArray2的内容:"+Arrays.toString(cArray2));
        System.out.println("字符串sVer2的内容:"+sVer2);

        System.out.println("-----------------------------------------------------------");
        System.out.println("字符串sVer:"+sVer);
        System.out.print("原始数组内容cArray:");
        System.out.println(cArray);
        System.out.println("sVer.equals(cArray):"+sVer.equals(cArray));
        System.out.println("sVer.equals(String.valueOf(cArray)):"+sVer.equals(String.valueOf(cArray)));

    }
}

    2、字符串、数字相互转换: 

public class StringConvertDemo2 {

    public static void main(String[] args) {

        // 字符串转成基本类型Xxx.parseXxx(String s);  xxx:基本数据类型

        String str="12";
        System.out.println(str+1); // 121
        int s1=Integer.parseInt(str); // str内容必须是int格式
        System.out.println(s1+1); // 13


        String str2="2.3";
        double s2=Double.parseDouble(str2);
        System.out.println(s2+1); // 3.3

        //基本类型 转 字符串

        String s=12+""; // 方法1
        System.out.println(s);

        String s3=String.valueOf(2.3); // 方法2
        System.out.println(10+s3); // 102.3


        String s4 = Integer.toString(12); // 方法3  有参数 不是重写obj
        System.out.println(s4+1); // 13

    }
}

   3.字符串的格式化

import java.text.SimpleDateFormat;
import java.util.Date;

public class StringFormatDemo {
    public static void main(String[] args) {
        int x = 16;
        char ch = 'A';
        byte bt = 97;
        double dd = 7851412.957418;

        System.out.println(x);
        System.out.println(ch);
        System.out.println(bt);
        System.out.println(dd);

        String s1 = String.format("%06d",x);
        System.out.println(s1);
        System.out.println(String.format("%-6d",x));
        System.out.println(String.format("%,3.2f",dd));
        System.out.printf("%c",ch); //使用printf()方法可以简化String.Format()的写法
        System.out.printf("\n%c\n",bt);

        Date dt = new Date(); //获取系统当前日期和时间
        //Date对象的格式化串必须以 "%t"开始 F参数表示日期格式为yyyy-MM-dd  T参数表示时间格式为HH:mm:ss
        System.out.printf("%tF %tT",dt,dt);

        System.out.println("\n===============================");

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    }
}

     更多有关字符串格式化的内容见博主的另一篇贴子:https://blog.csdn.net/xieyunc/article/details/102531684

 五、演示DEMO源代码在github上的仓库地址:

https://github.com/xieyunc/java_demo.git

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值