一、String内存模型
1、直接赋值创建string对象内存原理:
StringTable(串池):字符串常量池,用来存储字符串,只能是在直接赋值中使用才会存在串池当中(JDK7前串池是在方法区里面,StringTable(串池)在JDK7版本开始从方法区中挪到了堆内存,但是运行机制没有发生变化)
eg:
(资料图片)
首先mian方法进栈,创建变量s1,查看串池里面有没有abc,此时串池内没有,就创建了一个新的abc,然后将地址值赋值给s1;
创建变量s2,等号右边直接赋值,查看串池里面有没有abc,此时,串池里面已经存在abc,就不会创建abc,而是去复用已经存在的abc。
2、小结:
当使用双引号直接赋值时,系统会检查该字符串在串池中是否存在,如果不存在,创建新的,如果存在,就会复用
3、特点:代码简单,节约内存
4、、new关键字创建string对象内存原理
这里以字符数据为例:
首先main方法进栈,执行第一行代码,此时在堆内存当中产生一个char类型的数组,地址值为0011;再把0011赋值给变量chs;创建s1对象,在堆内存创建一个字符数组内容的小空间,地址值为002,再把002赋值给s1;创建s2对象,在堆内存创建一个字符数组内容的小空间,地址值为003,再把003赋值给s2。
注意:每new一次就会开辟一个新的空间,而且地址值都不相同,所以,这种方式创建的字符串不会复用
特点:会浪费内存空间
二、Java常用方法(比较)
1、==号比的是什么?
(1)基本数据类型:
基本数据类型比较的是数据值
(2)引用数据类型:
引用数据类型比较的是地址值
2、字符串比较
3、直接赋值:
创建变量s1,查看串池里面有没有abc,此时串池内没有,就创建了一个新的abc,然后将地址值赋值给s1;
创建变量s2,等号右边直接赋值,查看串池里面有没有abc,此时,串池里面已经存在abc,就不会创建abc,而是去复用已经存在的abc。此时s1和s2指向的是同一个地址值,所以是True
new关键字赋值:
s1记录的是堆里面的地址值,s2记录的是串池中(也是在堆里面)的地址值
4、用字符串比较内容:
字符串比较:
(1)boolean equals方法(要比较的字符串) :完全一样的结果才是true,否则为false
(2)boole equakslgnoreCase(要比较的字符串) :忽略大小写的比较
package com.itheima03.String;public class StringDemo02 { public static void main(String[] args) { //1、创建两个字符串对象 String s1 = new String("abc"); String s2 = "ABc"; //2、==号比较 //引用数据类型:比的是地址值 //基本数据类型:比的是数据值 System.out.println(s1==s2);//false s1记录的是堆里面的地址值,s2记录的是串池里面的地址值 //3、比较字符串对象中的内容是否相等 boolean result = s1.equals(s2); System.out.println(result);//false //4、比较字符串对象中的内容是否相等,忽略大小写(忽略大小写,只能是英文状态下的a和A,汉字的大小写无法使用) boolean result1 = s1.equalsIgnoreCase(s2); System.out.println(result1);//true }}
运行结果:
falsefalsetrue
键盘录入的字符串与赋值的字符串比较:
package com.itheima03.String;import java.util.Scanner;public class StringDemo03 { public static void main(String[] args) { //从键盘录入一个abc Scanner sc = new Scanner(System.in); System.out.println("请输入一个字符串"); String s1 = sc.next(); //代码中再定义一个字符串abc String s2 = "abc"; //用==后比较S1和S2是否一样 System.out.println(s1==s2); }}
运行结果:
请输入一个字符串abcfalse
5、### 注意:
字符串录入的字符串是new出来的,s1与s2的地址值不同,s1是new出来的,是在堆内存里面,而s2直接赋值也是在堆内存里面,但是是在堆内存的串池里面,所以是false
结论:以后只要想比较字符串的内容,就必须使用string里面的方法(equals和equakslgnoreCase)
练习:用户登录
需求:
已知正确的用户名和密码,请用程序实现模拟用户登录,总共给三次机会,登录之后,给出相应的提示
package com.itheima03.String;import java.util.Scanner;/*练习:用户登录需求:已知正确的用户名和密码,请用程序实现模拟用户登录,总共给三次机会,登录之后,给出相应的提示 */public class StringDemo04 { public static void main(String[] args) { //1、定义两个变量记录正确的用户名和密码 String rightName = "张三"; String rightPassword = "123456"; Scanner sc = new Scanner(System.in); for (int i = 0; i < 3; i++) { //2、键盘输入用户名和密码 System.out.println("请输入用户名:"); String userName = sc.next();//提示和接受录入的变量一定要在for循环里面 System.out.println("请输入密码:"); String password = sc.next(); //3、比较 if (rightName.equals(userName) && rightPassword.equals(password)) { System.out.println("登陆成功!"); break; } else { if (i == 2) { System.out.println("账号" + userName + "已被锁定,请联系管理员"); } else { System.out.println("用户登录失败,用户名或密码有误,您还剩" + (2 - i) + "次机会"); } } } }}
运行结果:
请输入用户名:张三请输入密码:123用户登录失败,用户名或密码有误,您还剩2次机会请输入用户名:张三请输入密码:1234用户登录失败,用户名或密码有误,您还剩1次机会请输入用户名:张三请输入密码:12345账号张三已被锁定,请联系管理员
相关推荐
- (2023-07-09)String内存模型和Java常用方法
- (2023-07-09)遵义“新征程 同心行”推介会在北京举行
- (2023-07-09)电的部首查字典怎么查(电查什么部首)
- (2023-07-09)画质究竟谁好(索尼NEX 5N/松下G5高感对比区别)
- (2023-07-09)全国首个国际航运服务平台在上海临港上线 16个航运项目签约
- (2023-07-09)万兴科技:旗下多个产品已应用AIGC技术并多端覆盖
- (2023-07-09)有限责任公司合伙纠纷找律师打官司如何收费
- (2023-07-09)工银聚和一年定开混合即日起至7月20日开放申赎
- (2023-07-09)男职工能请陪产假多少天休
- (2023-07-09)最后突击(关于最后突击介绍)
- (2023-07-09)今天继续!高温+雷电双预警,青岛的雨要下到……
- (2023-07-09)米体:比塞克将在周二抵达米兰,接受国米体检并且完成签约
- (2023-07-09)培训三天就能拿证上岗 “高考志愿规划师”靠谱吗?
- (2023-07-09)陕西省高陵县发布高温橙色预警
- (2023-07-09)鲁能与申花的比赛还没开打,就接二连三等来喜讯,新援火线首秀
- (2023-07-09)她曾被周星驰雪藏,出演戏份遭全删,多亏陈思诚才得以翻身?
- (2023-07-09)惊呆了 550多家机构关注 人形机器人最牛股爆热!这些优质高成长股被盯上
- (2023-07-09)健身器材室外(关于健身器材室外的基本详情介绍)
- (2023-07-09)乌方不再纠结入北约(无知无畏工作室:LV广告片引乌方不满)
- (2023-07-09)南京微豆文化传媒有限公司 新浪微豆有什么用
- (2023-07-09)公募基金费率改革怎么做?证监会工作安排来了
- (2023-07-09)翻译成中文在线(翻译成中文)
- (2023-07-09)LG手机售后乱象高仿电池价格竟高于原装两倍之多
- (2023-07-09)红黄蓝之歌歌词(红的黄的蓝的绿的歌词)
- (2023-07-09)BigHit计划两年推三团,BTS入伍对公司影响大,仅靠TXT顶不住
- (2023-07-09)死有余辜小说(死有余辜)
- (2023-07-09)奥莱康桥·明月湾|城市级配套 占据未来优渥生活圈
- (2023-07-09)接近传感器英文(接近传感器)
- (2023-07-09)intel 酷睿i5 12400f(Intel酷睿i5 3230M怎么样)
- (2023-07-09)其实,拖鞋也可以穿得很时髦!
每日推荐
- ETF联接基金是什么意思?ETF基金和ETF联
- 货币基金的收益高吗?货币基金一般年收益
- 基金卖出了怎么还有收益显示?基金已经赎
- 投资的基金买了几天可以卖掉?基金入手多
- 基金终于回本了该不该赎回?基金终于回本
- 二月出境复飞航线超40条 节后部分机票价
- 重大事项变更!网易宝获批增加注册资本至
- 信达证券上市首日涨幅44%
- 总投资约486亿元 北京今年首批50个重大
- 新年北京首月二手住宅网签量再探底 价格
- 股价大涨 博云新材股东高创投拟趁机减持
- 2019华人歌曲音乐盛典在澳门举行
- 喜迎十九大•欢度中秋节—传统文化进社区
- 突发!吴敏霞夫妇挑婚戒被曝光!两百万钻
- 《钟山说事》 热点聚焦:胡鹏飞的最美乡
- 湖南御福天益生物公司被指涉嫌传销进行非
- 大同市城投公司刘建婷遭群众举报
- 鲁能集团 “一带一路”履责行动暨“海南
图片新闻
48小时频道点击排行
-
0
1String内存模型和Java常用方法 -
0
2画质究竟谁好(索尼NEX 5N/松下G5高 -
0
3有限责任公司合伙纠纷找律师打官司如 -
0
4最后突击(关于最后突击介绍) -
0
5培训三天就能拿证上岗 “高考志愿规 -
0
6她曾被周星驰雪藏,出演戏份遭全删, -
0
7乌方不再纠结入北约(无知无畏工作室 -
0
8翻译成中文在线(翻译成中文) -
0
9BigHit计划两年推三团,BTS入伍对公 -
0
10接近传感器英文(接近传感器) -
0
11太难了!武汉三镇靠点球破门,一群后 -
0
12咖啡心智大战:抖音卷9.9,小红书拼 -
0
13从“AI Home”到“DI live” 上海 -
0
14夏天到内蒙古,这100个网红打卡地不 -
0
15【剑心吟】游戏攻略(内附最新礼包码 -
0
16韩国市民团体质疑国际原子能机构涉日 -
0
17华亭安口镇:抱团发展“菜园子”拓宽 -
0
18狼疮抗凝物质检测是查什么(狼疮抗凝 -
0
19“商汤日日新”大模型体系升级 五大 -
0
20重磅!公募基金费率改革启动!一文看