学过c语言的可能对结构体和函数有了解,Java的类就是类似结构体的东西,里面有各种函数来规定属性(如果没学过c当我没说)。
直接上代码:
public class Phone{//创建phone类(可以理解为要创建一个手机)
double price;//声明品牌(手机是有品牌的)
String name;//声明名字(手机要有个名字)
public static void main(String[] args){ //创建主函数
//是执行步骤,比如要一部手机打电话,发消息等
Phone p1=new Phone();//创建p1将Phone类装到p1里运用
p1.name="huawei mate50";
//装到p1里就可以用p1加后缀来给属性上数值了,
//定义手机名字为华为mate50
p1.price=6999;//定义价格为6999
System.out.println("name="+p1.name+",price="+p1.price);
//打印时给属性赋的值就可以用了
p1.call();//意思是调用打电话这个模块
p1.sendMessage("有内鬼,停止交易");//掉用发消息这个模块
p1.playGame();//调用打游戏这个模块
}
public void call(){ //定义一个模块,用来打电话
System.out.println("手机能拨打电话");
}
public void sendMessage(String message){
//定义一个模块,用来发消息。
//要引入message这个变量
System.out.println("发送信息:"+message);
}
public void playGame(){
//打游戏模块,创建好这些模块就可以在主函数main里调用了
System.out.println("手机可以玩游戏");
}
}
其中,public class Phone创建了一个类,名为Phone(类名是自己取的)。而playGame,sendMessage,call,main这些小区块称为方法。
那么栈和类也有必要提一下了:
栈:方法内定义的变量,储存在栈中。
堆:new出来的结构,包括对象中的属性(数组实体,对象实体)。
比如:
public static void main(String[] args){
Person p1=new Person();
p1.name="杰克";
p1.age=24;
p1.gender='男';
}
结合概念,p1会在方法mian中归到堆里。p1在栈里的形式为一个地址(如:0x12ab),此地址指向堆。在堆里存放的是方法mian所呈现的对象(如:name=杰克,age=24,gender=男)。那么现在看来,p1就相当于c里的指针,在堆(可以看成书本目录)存放地址指向栈里的实体(书的具体内容)。而栈的汉字意思是存放东西或旅客住宿的地方。堆的意思是堆起来的东西。由此可以加深理解。
那么同样,如果在上述main方法里再new一个p2,那么在栈里会新增一个p2指向堆另腾出的一片空间,里面有新new出来的对象的属性等东西。
——————————————————————
| 栈 | 堆 |
| main(){ | 0x12ab(name,age,gender) |
| p1(0x12ab); | 0x13ab(name,age,gender) |
| p2(0x13ab); | |
———————————————————————