JAVA自学_面向对象04STRING

2022/4/12 17:13:04

本文主要是介绍JAVA自学_面向对象04STRING,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、定义:

  String类定义的变量可以用于存储字符串,同时提供了许多操作字符串的功能

  java.lang.String——所有“ ”的变量都可以认为是字符串对象——常被称为不可变字符串类型,它的对象在创建后不能被更改 (以“ ”给出的字符串对象,在字符串常量池中存储,在堆中;加法得到的新变量是由运算得到的,没有存在字符串常量池当中。)——故在字符串常量值中的变量不可被更改——实际上对象存的是字符串的地址

  

 

 

二、如何创建String对象(两种方式)

  1 直接用“ ”即得到

  2 通过String类的构造器new创建对象

二者的区别:1是存储在字符串常量池中,相同内容只存一份(节省内存资源,出现多次的情况);每new一次都会产生一个新对象,放在堆内存中(故即使内容一样,地址也不一样)

三、常见面试题:

  

ps:JAVA存在编译优化机制,程序在编译的时候“a”+“b”+“c”会直接转为“abc”;而如果其中有一个是变量名称s2之类的形式,编译阶段无法对其进行判断

四、常用功能:

  1字符串内容比较功能:如果使用if判断,==是比较前后的地址(因为你用的是String,要是int就比较值),用户输入的字符串是普通的堆内存,而不是常量池;而equals只关心内容是否一样,不关心地址

     public boolean equals(Object anObject)——将此字符串与指定对象进行比较;例如,okname.equals(name)即调用了okname这个字符串对象内的方法,去比较okname与传进来的name内容是否一样

     public boolean equalsIgnoreCase(String anotherString)——忽略大小写比较(验证码)

  2遍历,截取,分割

     获取字符串长度:name.length();获取某个索引位置的字符:name.charAt(n);把字符串转化为字符数组:name.toCharArray();

     截取某段内容——name.substring(m,n)包前不包后,截到n的前一位  ;或者从前直到尾巴(m)即可;敏感词替换——name.replace("要替换的","替换后的内容"),原本字符串常量池中的内容没有被替换

     是否包含某些关键字——name.contains(“你要的关键字”);是否以某些关键字开始整个字符串——name.startsWith("你要的关键字")

     按照某个内容(or传入的规则,如几个人名由逗号隔开)将字符串分割成字符串数组返回——name.split(“,”)

具体案例——手机号码中间位的屏蔽(使用截取方法);验证码的生成(遍历索引,随机产生);登录系统的生成(使用equals内容判断)



这篇关于JAVA自学_面向对象04STRING的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程