day07-常用类(1)-2021年10月28日

常用类

**1、String **

(1)String字符串,使用一对 “” 双引号引起来表示

(2)String实现了Serializable接口,支持序列化

(3)String是通过final声明的,不可被继承,不可变

(4)当字符串重新赋值后,地址值也随之改变,因为String是不可变行用final修饰

//1、字符替换,把a字符改成d
String str = "abc";   //在方法区
String str1 = new String("abc");  //在堆空间中
str.repalce('a','d');

(5)String实例化的方式

  • 字面量定义
  • new + 构造器的方式
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);   //true 因为都在方法区 找的都是“abc”
String s3 = new String("abc");  
System.out.println(s1 == s3); //false 一个在方法区中,一个在堆中 ,比较的地址值
String s4 = new String("abc");  
System.out.println(s3 == s4); //false 都在堆中 ,比较的地址值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Qe1Vnoz-1635411431034)(C:\Users\DELL\Desktop\对象比较值.png)]

(6)面试题

//面试题1:
String str = new String("abc");
//问:上面代码一共创建了几次对象?
//答:2次。一次是new在堆中开辟的空间,一次是在常量池中去找是否有”abc“ char数组,如果没有在常量池中创建,如果有直接使用即可。
//面试题2:
String s1 = "abc";
String s2 = "dfe";
String s3 = "abcdfe";
String s4 = "abc" + "dfe";
String s5 = s1 + "dfe";
String s6 = "abc" + s2;
String s7 = s1 + s2;
System.out.println(s3==s4);   //true
System.out.println(s3==s5);   //false
System.out.println(s3==s6);   //false
System.out.println(s3==s7);   //false
System.out.println(s5==s6);   //false

//只要是有其他的变量名参与,那就相当于new的都不是在常量池中的。
//常量与常量拼劲是在常量池中存在的,常量池中不会有相同内容的常量。

String s8 = s5.intern();  //返回得到的s8是使用常量池中存在的
System.out.println(s3 == s8);   //true
//面试题3:
public class StringTest{
    String str = new String("good");
    char[] ch = {'t','e','s','t'};
    
    public void change(String str,char[] ch){
        str = "test";
        ch[0] = 'b';
    }
    
    public static void main(String[] args){
        StringTest st = new StringTest();
        st.change(st.str,st.ch);
        System.out.println(st.str);  //good
        System.out.println(st.ch);   //best
    }
}

//String地址值是不可变的,重新赋值是赋的新值

2、String的常用方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K69f0V6l-1635411431037)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20211026165236786.png)]

public class Test{
    @Test
    public void test(){
        String str = "hello";
        System.out.println(str.length());   //获取字符串的长度
        System.out.println(str.charAt(0));  //返回str索引为0的字符
        System.out.println(str.isEmpty());  //判断str是否是空字符串   
       	String strChangeLower = str.toLowerCase();
        String strChangeUpper = str.toUpperCase();
        System.out.println(strChange);      //把str所有字符转换成小写,需要用新的变量名接收
        System.out.println(strChangeUpper); //把str所有字符转换成大写,需要用新的变量名接收
       	String strTrim = "   hello ";
        System.out.println(strTrim.trim()); //去除strTrim首位的空格
        System.out.println(str.equals(strTrim)); //比较str和strTrim是否相同
        System.out.println(str.equalsIgnoreCase(strTrim)); //比较str和strTrim是否相同,忽略大小写
        String str1 = str.concat(strTrim);
        System.out.println(str1);     //拼接字符串
       
        System.out.println(str.compareTo(strTrim));   //str和strTrim比较大小 ,打印的是正数  str>strTrim
         
        System.out.println(str.substring(2));   //从索引为2截取到末尾
         System.out.println(str.substring(25)); //从索引2开始截取到索引为5的字符串,左闭右开
        
    }
    
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ppw9RY8a-1635411431038)(C:\Users\DELL\Desktop\常用方法2png)]

3、String与基本数据类型转换

//调用包装类,String转基本数据类型
String str = "123";
int num = Integer.parseInt(str);

//基本数据类型转String
String str2 = String.valueOf(num);
//也可以
String str3 = num + "";

tring str = “123”;
int num = Integer.parseInt(str);

//基本数据类型转String
String str2 = String.valueOf(num);
//也可以
String str3 = num + “”;


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值