Java自学笔记(15):字符串:简介,不可变性,String类常用方法与可变字符串StringBuffer类...

字符串:由0到多个字符组组成的字符序列

“”为空串null

public class StringDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str = "Hello";
        System.out.println(str);
    }

}

String不是基本数据类型,而是引用数据类型

如何创建字符串对象:

方法声明功能描述
String()创建一个内容为空的字符串对象
String(char[] value)根据指定的字符数组船舰一个字符串对象
String(String value)根据指定的字符串内容创建对象
public class StringDemo {

    public static void main(String[] args) {
        // String三个方法的使用
        String str = new String();  //输出值为空
        System.out.println(str);
        char[] ch = {'H','e','l','l','o'};
        String str1 = new String(ch);  //输出Hello,由字符数组拼接而来
        System.out.println(str1);
        String str2 ="一人血怒,全家升天";  
        String str3 = new String(str2);  //输出str3
        System.out.println(str3);
    }

}

直接赋值出的对象和new出的对象储存位置不同

public class StringDemo {

    public static void main(String[] args) {
        String str1="Welcome to Java";
        String str2=new String("Welcome to Java");
        String str3="Welcome to Java";
        System.out.println(str1==str2);  //false
        System.out.println(str1==str3);  //true
    }

}

inter方法,通过debug查看str的值

public class StringDemo {

    public static void main(String[] args) {
        String str1="Welcome to Java";
        String str2=new String("Welcome to Java");
        str2=str2.intern();    //将常量池中的值的引用赋值给str2
        String str3="Welcome to Java";
        System.out.println(str1==str2);  //true
        System.out.println(str1==str3);  //true
    }

}

字符串的不可变性

值相同的两个字符串只保留一份,String对象是不可变的,他的内容是不能改变的

public class StringDemo {

    public static void main(String[] args) {
        //字符串不可变性演示
        String str = "Java";
        str = "Hello";
        System.out.println(str);  //Hello  
    }

}

为什么是Hello呢?

其实是str的储存位置发生了变化,生成了新的字符串,在调试模式中可以看到id发生了变化:


String 类常用方法

字符与字符串的相互转换

方法类型描述
public String (char[] value)构造将全部的字符数组内容变为字符串
public String (char[] value,int offset,int count)构造

将部分的字符数组内容变为字符串,offset为开始点,

count表示要操作的长度

public char charAt(int index)普通取得指定索引位置上的字符
pubkic char[] toCharArray()普通将字符串转换为字符数组

字符串与字节

方法类型描述
public String(byte[] bytes)构造将全部的字节数组内容变为字符串
public String (byte[] bytes,int offset,int length)构造

将部分的字节数组内容变为字符串,offset为开始点,

length表示要操作的长度

public byte[] getBytes();

普通将字符串变为字节数组

public byte[] getBytes(String charsetName) throws

UnsupportedEncodingException

普通字符串转码操作

 

 字符串比较

方法类型描述
public booiean equals(String anObject)普通区分大小写的相等判断
public boolean equalsIgnoreCase(String anotherString)普通不区分大小写的相等判断
public int compareTo(String anotherString)普通比较两个字符串的大小,返回的是编码差值

字符串查找(表格太难写了!!)

 

   方法名称                                                         类型  描述

  public  boolean contains(String str)                      普通  判断指定内容是否存在

  public  int indexOf(String str)                                普通  右前向后查找指定字符串位置,如果超找到了则返回(第一个字母)位置索引,如果找不到返回-1

  public  int indexOf(String str,int fromIndex)          普通  由指定位置从前向后查找指定字符串的位置,找不到返回-1

  public  int lastIndexOf(String str)                  普通  由后向前查找字符串位置,找不到返回-1

  public  int lastIndexOf(String str,int fromIndex)          普通  从指定位置由后向前查找字符串位置,找不到返回-1

  public  boolean startsWith(String prefix)                    普通  判断是否以指定的字符开头

  public  boolean startsWith(String prefix,int toffset)    普通  从指定位置开始判断是否以指定的字符开头

  public  boolean endWith(String suffix)                       普通  判断是否以指定的字符串结尾

 

 字符串替换操作

public String relaceAll(String regex,String replacement)              普通             全部替换

public String relaceFirst(String regex,String replacement)       普通    替换首个

 

字符串截取

public String substring (int beginIndex)普通 从指定位置截取到结尾

 public String substring (int beginindex,int endIndex)截取指定范围的内容

 

字符串拆分

············  split(String regex)       ```         按照指定的字符串全拆分

············  split(String regex,int limit)       ```         拆分为指定的长度

其他方法

isEmply()   判断是否为空字符串

length() 取得长度

trim() 去掉左右空格

toLowerCase() 将全部字符串转化为小写

toUpperCase() 大写

intern() 入池

concat(String str) 字符串连接

 

折磨多累死个人


 

StringBuffer类

和String一样,也用来代表字符串

进行字符串处理时不生成新的对象

如果经常对一个字符串进行修改,使用StringBuffer更加适合

StringBuffer是一个线程安全的,但是效率慢些

 

初始化:

StringBuffer s = new StringBuffer();

StringBuffer s = new StringBuffer("abc");

String与StringBuffer之间没有联系     StringBuffer s =   "abc";是错误的

方法:

append()  追加字符串

deleteCharAt () 删除指定位置的字符

delete()  删除指定长度的字符  (int start ,int end)

insert() 将指定内容插入指定位置

reverse() 倒置字符串,生成新的字符串

public class StringDemo {

    public static void main(String[] args) {
        StringBuffer str = new StringBuffer("Welcome to Java");
        StringBuffer str1=str.reverse();
        System.out.println(str1.toString());  //avaJ ot emocleW

    }

}

 

setCharAt() 用指定字符修改指定位置的字符

trimTOSize() 将字符串的空间缩短为字符串长度 

 

转载于:https://www.cnblogs.com/tkj521Ya/p/11258110.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值