一、equals与==比较不同

在实现某个人去5个商场去购物,控制台输入是否购物(Y/N)的时候,在比较出了问题,发现无论输入什么都是false,后来查阅资料发现,字符串的比较,==和equals不一样。

先看下面的例子:

 String s1,s2,s3 = "abc", s4 ="abc" ;
s1 = new String("abc");
s2 = new String("abc"); s1==s2 是 false //两个变量的内存地址不一样,也就是说它们指向的对象不 一样, s1.equals(s2) 是 true //两个变量的所包含的内容是abc,故相等。

我们发现,

一、对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。

1、“==”比较两个变量本身的值,即两个对象在内存中的首地址。

(java中,对象的首地址是它在内存中存放的起始地址,它后面的地址是用来存放它所包含的各个属性的地址,所以内存中会用多个内存块来存放对象的各个参数,而通过这个首地址就可以找到该对象,进而可以找到该对象的各个属性)

2、“equals()”比较字符串中所包含的内容是否相同。

购物的例子:有幸的朋友可以看看我敲的代码,欢迎进行补充。

 package day04;

 import java.util.Scanner;

 public class Shop_bug {
public static void main(String[] args) {
//5家店,每家店限制购买3件衣服
int[] shops = new int[5];
int count = 0;
Scanner sc = new Scanner(System.in); for(int i = 0;i<shops.length;i++) {
System.out.println("欢迎进入"+(i+1)+"店进行购物!");
for(int j = 0;j<3;j++) {
System.out.println("是否选择购买商品?(Y/N)");
String a = sc.next();
if(a.equals("Y") || a.equals("N") ) {
if(a.equals("Y")) {
count++;
}else{
break;
}
}else {
System.err.println("上一个的输入方式有问题并且购买失败!");
j-=1;
} }
System.out.println("欢迎下次光临第"+(i+1)+"家店");
System.out.println(); }
System.err.println("您总共购买了"+count+"件衣服!"); } }

二、break的跳出不同

在敲代码的过程中,当我们遇到两个for循环,内部要判断的时候,有时候会在判断不符合的时候跳出循环,进行for循环外的代码,因为不知道break的作用范围,导致实现的效果不如题意。

例子:

在这里我特地将if()里面写的是一个真使其执行break,在第一个for循环内,第二个for循环外添加一条输出语句,结果我们发现,当执行了break语句,在嵌套for循环中,跳出的是本for循环。

最新文章

  1. 由XML解析学习工厂模式
  2. Hadoop日记Day12---MapReduce学习
  3. 04Mybatis_搭建Mybatis的开发环境
  4. ubuntu16.04+cuda7.5
  5. LANDR:在线母带处理
  6. 炫酷JQUERY自定义对话框插件JDIALOG_JDIALOG弹出对话框和确认对话框插件
  7. 开发设计模式(三)策略模式(Strategy Pattern)
  8. Jquery Ajax调用aspx页面实例
  9. HDOJ/HDU 1200 To and Fro(加密解密字符串)
  10. Python抓取淘宝IP地址数据
  11. 使用dom4j 读取XML文件
  12. javasscript学习笔记 之 数组学习二 数组的所有方法
  13. android解决内存溢出的问题(没有从根本上解决)
  14. Python 第十三篇之二:jQuery基础
  15. EmEditor Professional(文本编辑) 下载地址
  16. DSP_TMS32F2812的串口操作
  17. Android APP开发入门教程-Button
  18. 恶补web之一:html学习(2)
  19. 快速创建一个 spring mvc 示例
  20. KVM的VPS主机在Centos6.x下修改系统时间

热门文章

  1. 继续学习freertos消息队列
  2. 从输入URL到页面渲染完成 -戈多编程
  3. VM虚拟机启动夜神模拟器卡99%解决办法
  4. 构造函数语义学——Default Constructor篇
  5. 渗透测试-基于白名单执行payload--Pcalua
  6. cobalt strike和metasploit结合使用(互相传递shell会话
  7. F#周报2019年第43期
  8. 云计算 docker 容器使用命令
  9. 网络攻防实验任务三_(2)X-Scan通用漏洞扫描实验
  10. NVDLA中Winograd卷积的设计