java基础之对象的引用和引用的对象、equals和==的区别,栈内存和堆内存的存储区别

时间:2022-06-11 13:51:02


public class MainString {
 public static void main(String[] args){
  String str; //申明一个String引用类型变量,分配引用空间,存储在栈内存里;
  = new String("abc");//通过new为对象分配空间,存储在堆内存空间里,并将对象的引用(相当与c++里的指针或地址)赋值给引用变量str ;
  String str2;
  str2 = new String("abc");
  String str3 = str;//把str的引用赋值给str3;
  
  if(str.equals(str2)){//通过equals进行引用的对象的内容比较
   System.out.println("str.equals(str2)");
  }
  if(str == str2){//这个是比较两个对象的引用;固不相等
   System.out.println("str == str2");
  }else{
   System.out.println("str != str2");
  }
  System.out.println(str);//输出引用的对象的内容
  if(str == str3){
   System.out.println("str == str3");//引用 一样,其引用的对象也一样。
  }
  
  int i = 3;
  float f = 2.0f;
  char ch = 'a';
  boolean b = true;
  System.out.println("String和int、float、char、boolean直接相加:"+str+i+f+ch+b);//因为针对String的“+”、“+=”,是java里唯一可以重载的操作符。
                     //所以String可以和基本数据类型进行操作运算也可以和基础数据类型的引用进行操作。
 }
}