Java学习笔记Day11:String类

Java学习笔记Day11:String类String 类已经重写了 Object 中的 equals 方法 str equals str2 是用来比较 str1 变量本身所占内存的值所指向的对象和 str2 变量本身所占内存的值所指向的对象内容是否相同 String 类的 equals 方法是用来判断两个对象的内容是否相等 Object 类的 equals 方法是用来判断两个对象是否是同一个对象 如果希望不同内存但内容相同的两个对象 equals 时返回 true zaa

String赋值方法

  • String str=“fsdf” 直接赋值构造字符串
  • String str2=new String(“fdjs”);
  • char[] array={‘a’,‘b’,‘c’};

    String str3=new String(array);

"fsdf"放到堆里的常量池,常量池里的字符串只存在一份

String str="abcdef"; String str1="abc"+"def";System.out.println(str==str1); //true,在编译时已经进行拼接了 
String str="abcdef"; String str2="abc"+new String("def"); System.out.println(str==str2); //false,构造方法在运行时调用 
String str1="abc"; String str2="def"; String str3=str1+str2; String str="abcdef"; System.out.println(str==str3);//false 
int a=360; String str="abc"+"def"+a; //产生两个对象,会调用StringBuilder类的append方法 

equals方法

  • String类已经重写了Object中的equals方法
  • str.equals(str2):是用来比较str1变量本身所占内存的值所指向的对象和str2变量本身所占内存的值所指向的对象内容是否相同
  • String类的equals方法是用来判断两个对象的内容是否相等,Object类的equals方法是用来判断两个对象是否是同一个对象;

如果希望不同内存但内容相同的两个对象equals时返回true,则我们需要重写父类的equals方法,如下

class A{ 
    int i; public A(int i){ 
    this.i=i; } public boolean equals(Object obj){ 
    A aa=(A)obj; if(this.i==obj.i){ 
    return true; }else{ 
    return false; } } } 

字符串比较大小方法

str.compareTo(str1); 

intern方法

  • 常量池当中存在返回常量池当中字符串对象的地址
  • 常量池当中不存在,那么在常量池当中生成该对象的
String str=new String("hello").intern(); String str1="hello"; System.out.println(str==str1);//true; 

反射-》Java的自省

String str="hello"; Class clc=String.class; // 获取 String 类中的 value 字段. 这个 value 和 String 源码中的 value 是匹配的.  Field valueField = String.class.getDeclaredField("value"); // 将这个字段的访问属性设为  true valueField.setAccessible(true); // 把 str 中的 value 属性获取到.  char[] value = (char[]) valueField.get(str); // 修改 value 的值 value[0] = 'h';  System.out.println(str); 

String类常用方法:

  • public char charAt(int index):返回字符串中第index个字符
  • public int length():返回字符串的长度
  • public int indexOf(String str):返回字符串中出现str的第一个位置
  • public int indexOf(String str,int
    fromIndex):返回字符串中从fromIndex开始出现str的第一个位置
  • public boolean equalsIgnoreCase(String
    another):比较字符串是否与another是否一样(忽略大小写)
  • public String replace(char oldChar,char
    newChar):在字符串中用newChar字符替换oldChar字符
  • public String toUpperCase():返回一个字符串为该字符串的大写形式
  • public String toLowerCase():返回一个字符串为该字符串的小写形式
  • public String[] split(String regex)
    public Stirng[] split(Stirng regex,int limit)
    注意事项:
  1. 字符"|","*","+“都得加上转义字符,前面加上”".
  2. 而如果是"",那么就得写成"\".
  3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符

查找关键字ctrl+f键

String类静态重载方法:

  • public static String valueOf(double d):可以将基本数据类型转换为字符串
  • public Strin[] split(String regex):可以将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组

练习题:

1、统计一个String对象中大写字母、小写字母、非字母各自出现的个数

class A{ 
    public static void main(String[] args){ 
    String str="asFDSdfs!12"; int cntU=0; int cntL=0; int cntOther=0; int i; for(i=0;i<str.length();i++){ 
    char ch=str.charAt(i); if(Character.isUpperCase(ch)){ 
    cntU++; }else if(Character.isLowerCase(ch)){ 
    cntL++; }else{ 
    cotOter++; } } } 

2、统计一个字符串在另一个字符串中出现的次数

public class A{ 
    public static void main(String[] args){ 
    String str1="abcasdabcabc"; String str2="abc"; int index=-1; int cnt=0; index=str1.indexOf(str2); while(-1!=index){ 
    cnt++; index=str1.index(str2,index+str2.length()); } System.out.println(cnt); } } 

十六进制表示:Integer.toHexString(m).toUpperCase()

字符串和字符数组的转换

  • public String(char value[])
  • public String(char value[],int offset,int count)
  • public char charAt(int index)
  • public char[] toCharArray()

字节与字符串的转换

  • public String(byte bytes[])
  • public String(byte bytes[],int offset,int length)
  • public byte[] getBytes()
  • public byte[] getBytes()(String charsetName) throws
    UnsupportedEncodingException
今天的文章 Java学习笔记Day11:String类分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-15 11:06
下一篇 2024-12-15 11:01

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/87181.html