有关于String字符串的坑(==号和equals的区别)

xiaoxiao2021-02-28  90

今天写代码,,被String还好坑了一把,,,还是怪自己基础知识不坚固啊, 首先我创建了一个按钮,,,为这个按钮做了一个点击事件,,然后获取这个按钮上的字,,做判断,,判断为true就改变按钮上的字,,我直接用==做判断,,怎么做都不对,,最后通过朋友讲解,才换成了equals,,具体代码如下 package com.yiyajing.yyj.youku;

import android.content.DialogInterface; import android.content.Intent; import android.media.tv.TvContract; import android.os.Build; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.WindowManager; import android.widget.Button; import android.widget.ImageView; import android.widget.Toast;

public class MainActivity extends AppCompatActivity { private Button mBtn; private ImageView ivIcon; private String mText;

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setContentView(R.layout.activity_main); mBtn = (Button) findViewById(R.id.btn); ivIcon = (ImageView) findViewById(R.id.iv_icon); mBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mText = mBtn.getText().toString(); ivIcon.setImageResource(R.drawable.icon_home); Toast.makeText(MainActivity.this, mText, Toast.LENGTH_SHORT).show(); if (mText.equals("OPEN")) { mBtn.setText("返回一下"); }else { mBtn.setText("点我有惊喜哦"); } } }); }

} 1.==号判断的是值(对象在内存中的地址值),equals判断的是两个变量是否是同一个对象的引用 2.==判断的是基本数据类型(byte,short,int long;float,double;char;boolean) String字符串不是基本数据类型,是引用类型,,,所以使用上面的情况应该使用equals来判断 还有另外一种情况 String字符串不是new出来的,,是直接赋值的,,那么这个变量就可以直接使用==号判断,,,因为不是new出来的String就不会为这两个对象分配新的内存堆

转载请注明原文地址: https://www.6miu.com/read-62321.html

最新回复(0)