Java第五章总结

1. String 类

字符串是 Java 中特殊的类,使用方法像一般的基本数据类型,被广泛应用在 Java 编程中。
Java 没有内置的字符串类型,而是在标准 Java 类库中提供了一个 String 类来创建和操作字符串。
 
在 Java 中定义一个字符串最简单的方法是用双引号把它包围起来。
这种用双引号括起来的一串字符实际上都是 String 对象,如字符串“Hello”在编译后即成为 String 对象。
因此也可以通过创建 String 类的实例来定义字符串。
 
不论使用哪种形式创建字符串,字符串对象一旦被创建,其值是不能改变的,但可以使用其他变量重新赋值的方式进行更改。

1.1引用字符串常量

' ' 字符 1个

" " 字符串 多个

String a = "建团一百周年";

String a;

a = "建团一百周年"; 

1.2 String()

初始化一个新创建的 String 对象,表示一个空字符序列。

 

1.3 利用字符数组 

char[ ] ch = {'建','团','一','百','周','年'};

String a = new String(ch)

1.4 提取字符数组中的一部分 

char[ ] ch = {'举','办','建','团','一','百','周','年','晚','会'};

String a = new String(ch,2,8);

2 连接字符串

2.1 连接字符串

​
与绝大多数的程序设计语言一样,Java 语言允许使用“+”号连接(拼接)两个字符串。
“+”运算符是最简单、最快捷,也是使用最多的字符串连接方式。
在使用“+”运算符连接字符串和 int 型(或 double 型)数据时,
“+”将 int(或 double)型数据自动转换成 String 类型。
 
​
int[] no = new int[] { 501, 101, 204, 102, 334 }; // 定义学号数组
String[] names = new String[] { "张城", "刘丽丽", "李国旺", "孟红霞", "贺宁" }; // 定义姓名数组
String[] classes = new String[] { "数学", "语文", "数学", "英语", "英语" }; // 定义课程数组
System.out.println("本次考试学生信息如下:");
// 循环遍历数组,连接字符串
for (int i = 0; i < no.length; i++) {
System.out.println("学号:" + no[i] + "|姓名:" + names[i] + "|课程:" + classes[i] + "|班级:" + "初二(三)班");
}
}

本次考试学生信息如下:
学号:501|姓名:张城|课程:数学|班级:初二(三)班
学号:101|姓名:刘丽丽|课程:语文丨班级:初二(三)班
学号:204|姓名:李国旺|课程:数学|班级:初二(三)班
学号:102|姓名:孟红霞|课程:英语|班级:初二(三)班
学号:334|姓名:贺宁|课程:英语|班级;初二(三)班

 2.使用 concat() 方法

在 Java 中,String 类的 concat() 方法实现了将一个字符串连接到另一个字符串的后面。
 
字符串 1.concat(字符串 2);

public static void main(String[] args) {
String info = "三国演义、";
info = info.concat("西游记、");
info = info.concat("水浒传、");
info = info.concat("红楼梦");
System.out.println(info);
String cn = "中国";
System.out.println(cn.concat("北京").concat("海淀区").concat("人民公园"));
}
执行该段代码,

 三国演义、西游记、水浒传、红楼梦
中国北京海淀区人民公园

 2.3.连接其他类型数据

前面介绍的例子都是字符串与字符串进行连接,其实字符串也可同其他基本数据类型进行连接。如果将字符串同这些数据类型数据进行连接,此时会将这些数据直接转换成字符串。

System.out.println("我买了一本图书,名字是:"+book+"\n 价格是:"+price+"\n我每天阅读"+(price+readtime)+"小时");

3 提取字符串信息

1.长度 字符串名.length();

String a = "建团一百周年";

int b = a.length();

2.获取指定字符 字符串名.charAt(序号);

String a ="建团一百周年";

char b = a.charAt(3);//百 

获取字符串位置

String a = "abacadaeaf";

int b = a.indexof("a");//0

int c = a.lastIndexof("a");//8

int d = a.indexof("a",3);

int e = a.last

 在学生信息管理系统中对管理员密码有这样的规定,即密码长度必须大于 6 位且小于 12 位。因为密码太短容易被破解,太长的话又不容易记住。这就需要首先获取用户输入的密码字符串,然后调用 length() 方法获取长度,再做进一步的长度判断,最终实现代码如下所示:

public static void main(String[] args) {
String sys = "学生信息管理";// 字义一个字符串表示系统名称
System.out.println("欢迎进入《" + sys + "》系统");// 输出系统名称
System.out.println("请设置一个管理员密码:");
Scanner input = new Scanner(System.in);
String pass = input.next();// 获取用户输入的密码
int length = pass.length();// 获取密码的长度
if (length > 6 && length < 12) {
System.out.println("密码长度符合规定。");
System.out.println("已生效,请牢记密码:" + pass);
} else if (length >= 12) {
System.out.println("密码过长。");
} else {
System.out.println("密码过短。");
}
}

欢迎进入《学生信息管理》系统
请设置一个管理员密码:
123456
密码过短。
欢迎进入《学生信息管理》系统
请设置一个管理员密码:
abc12345678
密码长度符合规定。
已生效,请牢记密码:abc12345678

4.判断首尾内容 

String a = "建团一百周年";

Bollean b = a.startWith("建团");//判断是否以建团结尾; 

Bollean c = a.endWith("建团");//判断是否以建团开始;

获取字符串数组 char[]ch = 字符串.toCharArray(); 

String a = "建团一百周年";

char[ ] ch = a.toCharArray();

 判断子串是否存在 Boolean b = 字符串名.contains(子串);

String a = "建团一百周年";

Boolean b =a.contain("一百");

 5.字符串的操作

1.截取字符串  substring(前序号,后序号);

String a = "建团一百周年";

String b = a.substring(2,4);

substring(前序号,后序号)
 部分替换  String restr=str.replace; 全部替换        正则表达式(数字)      String restrAll=str.replaceAll

 2.字符串替换

replace:

String a = "建团一百周年";

a.replace("团","校");

replaceAll(老<可传正则表达时>,新):

String a = "建团一百周年";

a.replaceAll("团",“校”);

 3.字符串分割

 字符串.split(子串);

String a = "建团一百周年";

a.split("一百");

      // TODO Auto-generated method stub
        String str = "192.168.0.1";//创建字符串
        String[] firstArray=str.split("\\.");//按照“”进行分割
        String[]secondArray=str.split("\\.",2);//按照“”进行两次分制
        System.out.println("str的原值为:["+str+"]");//输出s原值
        //输出全部分结果
        System.out.print("全部分割的结果:");
        for (String a :firstArray) {
        System.out.print("[" +a+"]");
        }
        System.out.println();//换行
        //输出分两次结果
        System.out.print("分割两次的结果:"); 
        for (String a :secondArray){
        System.out.print("["+a+"]");
        }
        System.out.println();
    }
    }

 字符串.split(子串<可传正则表达时>,次数);

大小写转换

大转小:字符串.toLowerCase();

小转大:字符串.toUpperCase(); 

 

*比较字符串是否相等

 a==b           位置

a.equals      值 

a.equalsIgnoreCase(b)

 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str="a b cd efg";//利用正则表达式,将字符串中所有的空白内容都换成"";
                String shortstr= str.replaceAll("\\s", "") ;// 创建字符串堆 
                System.out.println("str的原值是:[" + str + "]");//输出结果
                System.out.println("删除空内容之后的值是:["+ shortstr + "]");//输出结果
    }
 
}

 去除空白内容

字符串.trim();

*比较字符串是否相等

a==b      位置

a.equals(b)    值

a.equalsIgnoreCase(b)

 格式化字符串  format("格式", . . . )

 日期和时间字符串格式化

Date d = new Date

String str = String.format("转换符",d)

 可变字符串 

类名                                                     对象类型       执行效率                             线程安全性

String      指向另外的空间                        常量             慢                                       不安全

StringBuffer    指向在原来的基础上添加  变量             中              有锁                    安全

Stringbuilder    在原来的基础上添加        变量            快               无 锁                  不安全

StringBuffer和Stringbuilder 的使用方法:
追加 字符串名.append (需要追加的值);

修改某个元素的值  字符串名.setCharAT(序号,值);

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        StringBuffer sbf=new StringBuffer("门前大桥下,");//创建StringBuffer 对象 
        sbf.append("游过一群鸭,");// 追加字符串常量
        StringBuffer tmp=new StringBuffer("快来快来数一数,");// 追加StringBuffer 对象 
        sbf.append(tmp); int x=24678;
        sbf.append(x);//追加整型变量
        System.out.println(sbf.toString());// 输出}
    }
 
}

StringBuffer和Stringbuilder 的使用方法:

插入   字符串名.insert(序号,值);

反转   字符串名.reverse();

删除   字符串名.delate(前序号,后序号);
 

 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        StringBuffer sbf = new StringBuffer("ABCDEFG");// 创建字符串序列
        int lenght = sbf.length();// 获取字符串序列的长度
        char chr = sbf.charAt(5); // 获取索引为5的字符
        int index = sbf.indexOf("DEF");// 获取DEF字符串所在的索引位置
        String substr = sbf.substring(0, 2);// 截取从索引0开始至索引2之间的字符串
        StringBuffer tmp = sbf.replace(2, 5, "1234");// 将从索引2开始至索引5之间的字符序列替换成"1234"
        System.out.println("sbf的原值为:" + sbf);//输出
        System.out.println("sbf的长度为:" + lenght);//输出
        System.out.println("索引为5的字符为:" + chr);//输出
        System.out.println("DEF字符串的索引位置为:" + index);//输出
        System.out.println("索引0开始至索引2之间的字符串:" + substr);//输出
        System.out.println("替换后的字符串为:" + tmp);//输出
    }
 
}

追加 字符串名.append(需要追加的值);

设定某一个元素值 字符串名.setCharAt(序号,值);

插入 字符串名.insert(序号,值);

反转 字符串.reverse();

删除 字符串名.delete(前序号,后序号).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值