String类

下面是关于String类1相关的知识点

关于Java JDK 中内置的一个类: java. lang. String
1、String表示字符串类型,属于引用数据类型,不属于基本数据类型。
2、在java 中随便使用双引号括起来的都是String对象。例如: “abc”,“def” , “hello world!” ,这是3个String对象。
3、java中规定,双引号括起来的子符串,是不可变的,也就是说"abc"自出生到最终死亡,不可变,不能变成"abcd"。
4、在JDK当中双引号括起来的字符串,例如: “abc” “def” 都是直接存储在“方法区”的“字符串常量池”当中的。
**为什么SUN公司把字符串存储在一个“字符串常量池”当中呢。
—因为字符串在实际的开发中使用太频繁。为了执行效率,所以把字符串放到了方法区的字符串常量池当中。

9539d9c2c4014774ad8ab536df17318d.png
🎽关于String对象(类似 s=new String() )
952673a53da04baaaf6f34c00d3ca13e.png

 class User1{
    private String name;
    private int id;
    public User1(){}
     public User1(int id,String name){
       this.id=id;
     this.name=name;
     }
}
public class Test17 {
    public static void main(String[] args){
        //这两行代码表示底层创建了3个字符串对象,都在字符串常量池当中。
        String s1="abcdef";
        String s2="abcdef"+"xy";
        /*
        思考以下:
        这是使用new的方式创建的字符串对象,这个代码中的“xy"是从哪里来的?
        凡是双引号括起来的都在字符串常量池中有一份,
        new对象的时候一定在堆内存当中开辟空间
         */
        String s3=new String("xy");
       User1 s4=new User1(110,"张三");
    }
    
}


57f11ad8cf5647588769662a22083ee0.png
🎿回顾知识点:

public class Test17 {
    public static void main(String[] args){

        String s1="hello";
        /*
        "hello"是存储在方法区的字符串常量池当中
        所以这个”hello"不会新建。(因为这个对象已经存在了!)
         */
        String s2="hello";
        //分析结果是true还是false?
        //==双等号比较的是不是变量中保存的内存地址?答案:是的!
        System.out.println(s1==s2);//true
        String x=new String("xyz");
        String y=new String("xyz");
        //分析结果是true还是false?
        //==双等号比较的是不是变量中保存的内存地址?答案:是的!
        System.out.println(x==y);//false
    }

}

c4b6770c621244af9bb6b61629190c34.png

敲重点!!!(记熟)
🏯通过查阅API文档,可以了解关于String常用的构造方法:

  • int lastIndexOf(String str)
  • int lastIndexOf(String str,int fromIndex)
    返回与字符串str匹配的最后一个子串的开始位置。从原始字符串末尾或fromIndex开始匹配
  • boolean startsWith(String prefix)
  • boolean endsWith(String suffix)
    判断某个字符是否是某个子字符串开始或结束
  • String substring(int beginIndex)
  • String substring(int beginIndex,int endIndex)
    返回一个新的字符串。这个字符串包含原始字符串中从beginIndex到字符串末尾或endIndex-1的所有代码单元。
  • char[] toCharArray()
    将字符串转换成char数组
  • String中只有一个方法是静态的,不需要new对象,这个方法叫做valueOf(),其作用是将“非字符串”转换成“字符串”。
class Customer{
       Customer(){}
    //重写toString方法
    public  String toString(){
           return "我是高级用户";
    }
}

public class IntegerTest01 {
    public static void main(String[] args){
        String s1=String.valueOf(true);
        String s2=String.valueOf(100);
        String s3=String.valueOf(3.14);
        System.out.println(s1+" "+s2+" "+s3);
        //这个静态的valueOf()方法,参数是一个对象的时候,会自动调用该对象的toString()方法嘛?
        String s4=String.valueOf(new Customer());
       // System.out.println(s4);//没有重写toString()方法之前是对象的内存地址:Customer@15aeb7ab
        System.out.println(s4);
    }
}

  • String replace(CharSequence target,CharSequence)
    替换 String的父接口就是CharSequence
  • String[] split(String regex)
    拆分数组
  • Java中的 split 函数是用于按指定字符(串)或正则去分割某个字符串,结果以字符串数组形式返回;
import java.util.*;
public class Test06 {
    public static void main(String[] args){
        /*替换*/
        String newString1="http://www.baidu.com".replace("http://","https://");
        System.out.println(newString1); //https://www.baidu.com
        String newString2="name=zhangsan&password=123&age=23".replace("=",":");
        System.out.println(newString2);//name:zhangsan&password:123&age:23
        /*拆分*/
        String[] ymd="1980-10-11".split("-");
        for(int i=0;i<ymd.length;i++){
            System.out.println(ymd[i]);//1980 10 11
        }
        String param="name=zhangsan&password=123&age=23";
        String[] params=param.split("&");
        for(int i=0;i<params.length;i++){
            System.out.println(params[i]);
        }
        /*
         name=zhangsan
         password=123
         age=23
         */

    }
}

  • String toLowerCase()
    转换为小写
  • String toUpperCase()
    转换为大写
  • String trim()
    去除字符串前后空白
  • char charAt(int index)
    返回给定位置的代码单元。
  • int comparaTo(String other)
    按照字典顺序,如果字符串位于other之前,返回一个负数;如果字符串位于other之后返回一个1正数;如果两个字符串相等,返回0。
  • int length()
    返回字符串代码单元的个数
/*创建格式化字符串*/
import java.util.*;
public class Test3 {
    public static void main(String[] args){
        float floatVar=1;
        int intVar=2;
        char stringVar='a';
        //方法一:
      System.out.printf("浮点变量的值为"+"%f,整型变量的值为"+
                "%d, 字符串变量的值为"+
                "is %s",floatVar,intVar,stringVar);
        System.out.print("\n");
        //方法二
        String fs;
        fs=String.format("浮点变量的值为"+"%f,整型变量的值为"+
                "%d, 字符串变量的值为"+
                "is %s",floatVar,intVar,stringVar);
        System.out.println(fs);
    }
}

java.util.Arrays
    ●static String toString(xxx[] a)
返回包含a中元素的一个字符串,这些元素用中括号包围,并用逗号分隔。在这种方法以及后面的方法中,数据元素类型xxx可以是int 、long、short、char、 byte、 boolean、 float 或double
    ●static xxx[] copyOf(xxx[] a,int end)
    ●static xxx[] copyOfRange(xxx[] a,int start,int end)
返回与a类型相同的一个数组,其长度为length或者end-start,数组元素为a的值。如果end大于a.length,结果填充0或者false值。
    ●static void sort(xxx[] a)
使用优化的快速排序算法对数组进行排序。
    ●static int binarySearch (xxx[] a,xxx v)
    ●static int binarySearch (xxx[] a,int start,int end,xxx v)
使用二分查找算法在有序数组a中查找值v。如果找到v。如果找到v,则返回 相应的下标;否则,返回一个负值r。-r-1是v应插入的位置(为保持a有序)。
    ●static void fill (xxx[] a,xxx v)
将数组的所有数据元素设置为v
    ●static boolean equals(xxx[] a, xxx[] b)
如果两个数组大小相同,并且下标相同的元素都对应相等,返回true。
java.time.LocalDate
    ●static LocalDate now()
构造一个表示当前日期的对象
    ●static LocalDate of(int year, int month, int day)
构造一个表示给定日期的对象
    ●int getYear()
    ●int getMonthValue()
    ●int getDayOfMonth()
得到当前日期的年、月、日
    ●DayOfWeeks getDayOfWeek
得到当前日期是星期几,作为DayOfWeek类的一个实例返回。调用getValue来得到1~7之间的一个数,表示这是星期几,1表示星期一,7表示星期日。
    ●LocalDate plusDays(int n)
    ●LocalDate minusDays(int n)
生成当前日期之后或之前n天的日期。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值