ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JAVA自学_面向对象04STRING

2022-04-12 16:00:07  阅读:136  来源: 互联网

标签:JAVA String 04STRING equals 面向对象 内容 字符串 常量 name


一、定义:

  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,String,04STRING,equals,面向对象,内容,字符串,常量,name
来源: https://www.cnblogs.com/dreamlucode/p/16130471.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有