为什么a和b没有赋值,但是cat的name可以进行赋值???
package com.cctv.TaskScheduler;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import java.util.Map;
/**
* @author 莉莉
* @create 2020/7/29
* @since 1.0.0
*/
public class Main {
public static void main(String[] args) {
// AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(TaskSchedulerConfig.class);
cat cat = new cat();
doSet(cat);
System.out.println(cat.getName());
String a = null;
doSetName(a);
System.out.println(a);
Integer b = null;
doSetAge(b);
System.out.println(b);
}
private static void doSet(cat a){
a.name = "dfasdfasdf";
}
private static void doSetName(String a){
a = "dfasdfasdf";
}
private static void doSetAge(Integer a){
a = 0;
}
static class cat{
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
基本类型在Java中是按值传递的,而不是按引用传递的。当你将一个基本类型作为参数传递给方法时,方法会在栈中创建一个新的变量,它的值与原始变量的值相同。当你在方法中更改这个变量的值时,只是改变了这个新的变量的值,并没有改变原始变量的值。因此,在你的示例中,doSetName()和doSetAge()方法并没有改变传递给它们的参数a和b的值,因为它们只是改变了在栈中创建的新变量的值。