JAVA常用类之String类

String

String
概述
  • 定义的变量可以存储字符串,同时String类提供了很多操作字符串的功能,我们可以直接使用
  • java.long .String 类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串
  • java中的所有字符串文字(例如“abc”)都为此类的对象
  • String其实常被称为不可变字符串类型,它的对象在创建后不能被更改
String str="今天";
str+="天气";
str+="真好";
System.out.println(str);
结果:今天天气真好

String的对象在创建后不可变,但是为什么这个结果变了呢?

创建后不可变,但是,str的指向改变了。

总结:

1.String是什么,可以做什么?

字符串类型,可以定义字符串变量指向字符串对象

2.String是不了变字符串的原因

  • String变量每次修改其实都是产生并指向了新的字符串对象
  • 原来的字符串对象是没有改变的,所以称不可变字符串
String类创建对象的两种方式

方式一:直接使用“ ”定义

String name=“易烊千玺”;

方式二:

通过String的构造器去创建对象

构造器说明
public String()创建一个空白字符串对象,不含有内容
public String(String original)根据传入的字符串的内容,来创建字符串
public String (char[] chs)根据字符数组的内容,来创建字符串对象
public String(byte[] chs)根据字节数组的内容,来创建字符串对象

两种方式有什么区别?

  • 以“ ”方式创建的字符串对象,在字符串常量池中存储,而且相同的内容只会在其中存储一份(节省内存)
  • 通过构造器new对象,每new一次都会产生一个新的对象,放在堆内存中
String s1="abc";
String s2="abc";
System.out.println(s1==s2);//true
char []  chars={'a','b','c'};
String s3=new String(chars);
String s4=new String(chars);
System.out.println(s3==s4);//false

内存原理图

总结

1.字符串对象的特点

“ ”创建的之创建了一个对象

​ new 则是两个对象

练习
String s1="abc";
String s2="ab";
String s3=s2+"c";
System.out.println(s1==s2);//false

因为s3在拼接之后在堆内存中,而不在字符串常量池中,所以地址不一样

String s1="abc";
String s2="a"+"b"+"c";
System.out.println(s1==s2);//true

因为在java中存在编译优化机制,程序在编译时:“a”+‘’b‘’+“c”直接会合成"abc";

String 常用方法equals方法(APl)

equals方法用来比较内容,是Object中的方法

public boolean equals(Object anObject)

public boolean equalsIgnoreCase(String anotherString) 不区分大小写

String的其他常用方法

1.public int length()//获取字符串的长度
2.public char charAt(int index)//获取某个索引位置的字符
遍历字符串中的字符
3.public char[] toCharArray();//把字符串转换成字符数组
4.public String substring(int beginindex,int endindex)//截取内容,包前不包后
5.public String substring(int index)//从index到结尾
6.public String replace(String target,String replacement);//替换
7.public boolean contains(String str);//是否包含str
8.public boolean startwith(String str)//是否以str开始
9.public boolean endwith(String str)//是否以str结尾
10.public String[] split(String s)//按照某个内容把字符串分割成字符串数组返回
11.public int indexof(char ch)//返回指定字符在字符串中第一次出现的索引
12.public int indexof(String str)//返回指定字符串在此字符串中第一次出现的索引(字符串的第一个索引)
13.public String concat(String str)//字符串拼接
14.public String trim()//去除两端空格
案例操作

需求:随机产生一个5位的验证码,没位数可能是数字,大写字母,小写字母

 String datas="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
String code="";
 Random r=new Random();//随机数对象
 for(int i=0;i<5;i++){
   int index= r.nextInt(datas.length());//定义随机数生成的范围
    char c=datas.charAt(index);
    code+=c;
 }
 System.out.println(code);

需求:模拟用户登录,最多只给三次机会

String name="zhangsan";
String pwd="123456";
Scanner scanner=new Scanner(System.in);
for(int i=0;i<3;i++){
    System.out.println("请输入登录名称");
    String loginname=scanner.next();
    System.out.println("请输入登录密码");
    String loginpwd=scanner.next();
    if(name.equals(loginname)){
        if(pwd.equals(loginpwd)){
            System.out.println("登录成功");
            break;
        }else{
            System.out.println("登录密码错误");
        }
    }else{
        System.out.println("登陆名错误");
    }
}

需求:手机号码屏蔽,以字符串的形式从键盘接受一个手机号,将中间四位号码屏蔽,最终效果为

158****7839

Scanner scanner=new Scanner(System.in);
 System.out.println("请输入手机号:");
 String str=scanner.next();
 String str1= str.substring(0,3);
String str2=str.substring(7);
 System.out.println(str1+"****"+str2);

Scanner(System.in);
System.out.println(“请输入手机号:”);
String str=scanner.next();
String str1= str.substring(0,3);
String str2=str.substring(7);
System.out.println(str1+“****”+str2);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值