java转net容易吗_每日一醒(1):学习Java容易忽视的小错误,你注意到了吗?
在我們學習Java的過程中有著許多的小知識點特別容易出bug,你知道嗎?下面我就給大家科普下2個學習Java容易忽視的問題
1、值傳遞與引用傳遞
值傳遞是指對象被值傳遞,意味著傳遞了對象的一個副本,即使副本被改變,也不會影響源對象。(因為值傳遞的時候,實際上是將實參的值復制一份給形參。)
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
swap(num1, num2);
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
}
public static void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
System.out.println("a = " + a);
System.out.println("b = " + b);
}
結果輸出:a = 20;b = 10;num1 = 10;num2 = 20
而引用傳遞傳遞的并不是實際的對象,而是對象的引用。因此,外部對引用對象的改變會反映到實際的對象上。(因為引用傳遞的時候,實際上是將實參的地址值復制一份給形參。)
public static void main(String[] args) {
int[ ] arr = {1,2,3,4,5};
change(arr);
System.out.println(arr[0]);
}
public static void change(int[] array) {
//將數組的第一個元素變為0
array[0] = 0;
}
//結果輸出:0
而還有一個特殊的列子StringBuffer類型傳遞
public void method() {
StringBuffer str = new StringBuffer("1234");
System.out.println(str);
change(str);
System.out.println(str);
}
public static void change(StringBuffer str) {
str = new StringBuffer("abc");
//str.append("歡迎大家關注");//輸出:1234歡迎大家關注
//str.insert(3, "(編程)");//輸出:123(編程)4
}
結果:1234;1234。分析:因為在 change方法內部我們是新建了一個StringBuffer對象,所以 str指向了另外一個地址,相應的操作也同樣是指向另外的地址的。如
public class Demo {
public static void main(String[] args) {
Person p = new Person("張三");
change(p);
System.out.println(p.name);
}
public static void change(Person p) {
Person person = new Person("李四");
p = person;
}
}
class Person {
String name;
public Person(String name) {
this.name = name;
}
}
最后輸出:張三;這是因為change方法中重新創建了一個 Person對象。這些都是很容易出bug的小知識,你Get到了嗎?如果學習Java過程中有什么問題可以評論留言,我看到都會回復哦!
總結
以上是生活随笔為你收集整理的java转net容易吗_每日一醒(1):学习Java容易忽视的小错误,你注意到了吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米8与探索版的区别(小米官方售后服务)
- 下一篇: 在“ChatGPT”和 AI 搜索引擎时