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的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?