Java学习中目前遇到的问题及注意点(二)

1.基本类型赋值与对象赋值有所区别

①基本类型赋值是将内容直接复制。

②对象赋值,是将对象的“引用”进行复制。例:


public class hh {
	int s;
}

public class Hello {
	
	 public static void main(String[] args) {
		 hh a = new hh();
		 hh b = new hh();
		 a.s = 9;
		 b.s = 7;
		 System.out.println("a.s:"+a.s+"b.s:"+b.s);
		 a = b;
		 System.out.println("a.s:"+a.s+"b.s:"+b.s);
		 b.s = 10;
		 System.out.println("a.s:"+a.s+"b.s:"+b.s);
	}
}

输出为:

a.s:9b.s:7
a.s:7b.s:7
a.s:10b.s:10

因为赋值操作的是对象的引用,所以修改b的同时改变了a。

若把“a = b” 改为“a.s = b.s”即可解决这个问题。

2.“==”和“equals()”的区别

①“==”比较的是栈中的内存地址(对于基本类型是比较内容,基本类型只要使用“==”和“!=”就够了)。

②“equals”比较的是栈指向的堆的内存地址。而String,Integer,Date在这些类中的equals有其自身的实现,而不再是比较在堆内存中的存放地址了。例:

public class hh {
	int s;
}

public class Hello {
	
	 public static void main(String[] args) {
		 hh a = new hh();
		 hh b = new hh();
		 a.s = 9;
		 b.s = 9;
		 System.out.println(a==b);
		 System.out.println(a!=b);
		 System.out.println(a.equals(b));
		 Integer n1 = new Integer(6);
		 Integer n2 = new Integer(6);
		 System.out.println(n1==n2);
		 System.out.println(n1.equals(n2));
	}
}

输出:

false
true
false
false
true

3.字符串操作符“+”和“+=”的一个特性

如果表达式以一个字符串起头,那么后续所有操作数都必须是字符串型。例:

public class Hello {
	
	 public static void main(String[] args) {
		 int a = 9;
		 int b = 8;
		 String s = "a+b:";
		 System.out.println(s+a+b);
		 System.out.println(a+b+s);
		 System.out.println(b);
	}
}

输出:

a+b:98
17a+b:
8

注意:第一个打印的语句中数字是98 而不是17,这是因为将int型自动转换成了字符串型。

4.逗号操作符在for语句中的用法

通过使用逗号操作符,可以在for语句内定义多个变量,但是它们必须具有相同的类型。例:

public class Hello {
	
	 public static void main(String[] args) {
		 for(int i=0,j=3;i<10;j++,i+=j){
            System.out.println("j:"+j+"i:"+i);
          }
	}
}

输出:

j:3i:0
j:4i:4
j:5i:9

5.Foreach语句

foreach语句用于数组和容器,不用创建int变量去对序列进行计数,foreach将会自动产生一项。

foreach语句专门用于导出/引用数组。例:

public class Hello {
	
	 public static void main(String[] args) {
		 int a[] = new int[6]; 
		 int k=0;
		 for(int i=0,j=3;i<10;j++,i+=j){
			 a[k]=i;
			 k++;
			 a[k]=j;
			 k++;
			 System.out.println("i:"+i+"j:"+j);
		 }
		 for(int x:a)
			 System.out.print(x);
	}
}

foreach语法:

for(int x:a)

定义了一个int类型变量x,将a中的每一个元素依次赋值给x。

输出:

i:0j:3
i:4j:4
i:9j:5
034495

 

 

本文章大量从《Think in Java》、实践和网络中总结。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值