Java中String类基础知识及应用

String类被称为不可变字符串类型,它的对象在创建后不能被修改

可以图中得知输出结果为 传智教育中心,好似和前面所提的不能修改不符,下面将叙述原因。

首先要明确 " " 符号给出的字符串,都存储在字符串常量池中,字符串常量池在堆内存中。

从上图我们可以得知“传智”,“教育”,“中心”三个字符串都在字符串常量池中,但是“传智教育中心”,就不在字符串常量池中因为,“传智教育中心”并不是以“ ”的方式创造的。

name的值是由栈内存中的main方法中的地址确定的,我们对于name的修改只能修改它所指向的字符串的地址值,实际上并不能将String定义的值改变,只能重新开辟一个新的空间并指向这个字符串。

以""方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会存储一份。(这样设计的目的是节省内存)以构造器new对象,每new一个都会产生一个新的对象,放在堆内存中,并且不放在字符串常量池中。

通过""定义字符串常量内存原理

 从上图可以得知在s1和s2进行比较时比较的是两个字符串的地址,而不是"abc"值。

 上图我们可看到由于new构造器所产生的“abc”并不存在于字符串常量池中,所以构造的两个“abc”

并不是同一个,所以s1和s2存储的地址并不一样。

String类常见面试题

 String常用API

 这段代码模拟用户登录,但是在判断用户登录名和密码是否正确时,即使输入了正确的用户名和密码,也会显示错误,原因在==运算符上,因为okName==name;实际比较的是两边的地址,所以显示用户名或者密码错误。为了解决这个问题我们可以使用equals方法。

 

 使用equals方法,就可以正常的运行。

验证码的判断上我们可以应用 equalsIgnoreCase方法,这样在输入时可以随意输入大小写都可以成功判断。

package com.String;

public class StringAPI {
    public static void main(String[] args) {
        //1.获得字符串长度public int length()
        String name ="helloworld";
        System.out.println(name.length());
        //2.获取某个索引位置处的字符public char charAt(int index)
        System.out.println(name.charAt(1));
          //2.1遍历每个字符串的每个字符
          for (int i = 0; i <name.length() ; i++) {
              System.out.print(name.charAt(i)+" ");
          }
        System.out.println();
        //3.把字符串转换成字符数组public char[] toCharArray()
        char chars[]=name.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            char ch=chars[i];
            System.out.println(ch);
        }
        //4.截取内容
         //4.1从当前索引开始一直截取到末尾substring(beginindex)
         String tel="1234567890";
         System.out.println(tel.substring(4));
         //4.2包前不包后substring(beginindex,endindex)
         System.out.println(tel.substring(2, 4));
        //5.替代字符串中的某些字符
        String name1="北京是国际化大都市,北京是中国的首都";
        System.out.println(name1.replace("北京", "***"));
        //6.判断是否包含字符或字符串contains
        name1.contains("北京");//true
        name1.contains("北京市");//false
        //7.判断字符串是否以某一字符或字符串开始startwith
        name1.startsWith("北京");
        name1.startsWith("北京市");
        //8.按照某个内容将字符串分割成字符串数组返回split
        String name2="足球,篮球,乒乓球";
        String[] names=name2.split(",");
        for (int i = 0; i < names.length; i++) {
            System.out.println(""+names[i]);
        }
    }
}
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值