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

来源:互联网 发布:淘宝店铺去哪注册 编辑:程序博客网 时间:2024/06/01 10:21

今天写代码,,被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;

@Overrideprotected 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就不会为这两个对象分配新的内存堆

原创粉丝点击