Java小白急求大神指教。

class Book{
String name;
double price;

public Book(String name,double price){
    this.name = name;
    this.price = price;
}
public void getInfo(){
    System.out.println("图书名称:"+ name + ",价格:" + price);
}

public void setPrice(double price){
    this.price = price;
}

}

public class Main{
public static void main(String[] args){
Book book = new Book("Java开发指南",66.6);
book.getInfo(); //图书名称:Java开发指南,价格:66.6
fun(book);
book.getInfo(); //图书名称:Java开发指南,价格:99.9
}

public static void fun(Book temp){
temp.setPrice(99.9);
}
}


fun(book); 这句看不懂 急求解释,最好可以帮我总结一下包含的知识点,谢谢

我也不是大神,不过这貌似是一个自己建的BOOK类

public static void fun(Book temp){
temp.setPrice(99.9);
}
把你刚刚创建的book对象传过来,名字就叫temp了。temp因为是book对象,有setPrice这个方法,就直接调用这个方法,就把temp对象的值改了
因为java是传递对象引用,temp和book实际上指向同一块内存,所以,book也被改了

首先,fun是一个静态的方法,内部只有一个操作,就是设置图书价格,怎么设置价格呢,就需要用到book这个类,因为设置价格的方法在book类中,所以参数是book类,然后在main方法里调用

1.无修饰符的Book类,修饰符有:public(整个项目都可以调用)、default(也就是这个Book类用到的修饰符,可省略不写,同一包内调用)、protected(父子类可调用)、private(本类中才可调用该类)。
2.String name与price 声明name与price属性名(可以理解为这个类要操作的数据)
3.public book(...) 这是这个类的构造方法(构造可以理解为同名不同参,如果参数不同了,那么这个方法想表示的内容也就不一样了)
4.void getInfo()方法,获取输出的数据方法,会在控制台展示
5.setPrice()方法,设置价格,有set() get()方法,调用时使用
6.Main类,这是一个主类,带有public修饰,新建的一个类只能有一个public class [类名],可以有很多个class [类名] 或 private class [类名]
7.main方法,运行该类时用到的方法,数据将打印在控制台上
8.Book book=new Book(...).new个对象并设置了属性参数
9.book.getInfo()获取类方法
10.fun(book),设置了一个静态方法,这个静态方法以类名作为参数,并为该类的属性设置价格为99.9。静态方法的作用:static方法是类中的一个成员方法,属于整个类,既不用创建任何对象,也可以直接调用。(这样理解吧,被static修饰的方法是一个独立的方法,内存也是独立的,不属于堆栈内存,用起来很方便,但是创建了它,它的内存不能被销毁)。
这样贴心吗?嘿嘿

代码比较复杂时,先看下实现的逻辑,看不懂的话debug一下。

fun(book); 是调用你这个 Main 类的 fun() 方法的呀,就是一个普通的静态方法调用。

我给你注解一下

class Book{
String name;
double price;

public Book(String name,double price){
    this.name = name;
    this.price = price;
}
public void getInfo(){
    System.out.println("图书名称:"+ name + ",价格:" + price);
}

public void setPrice(double price){
    this.price = price;
}
}

public class Main{
public static void main(String[] args){
Book book = new Book("Java开发指南",66.6);//实例化Book对象,通过构造方法传参
book.getInfo(); //图书名称:Java开发指南,价格:66.6(通过对象获取图书信息)
fun(book);//调用本类(Main)的fun方法,在下面,传入book对象
book.getInfo(); //图书名称:Java开发指南,价格:99.9//再次获取图书信息
}

public static void fun(Book temp){//形参为book对象
temp.setPrice(99.9);//上面传了对象,调用Book的setPrice方法,修改价格
}
}