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

今天写代码,,被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就不会为这两个对象分配新的内存堆

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值