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